Non credo che i cambiamenti non eseguiti siano intrinsecamente una cosa negativa. Si fa riferimento a una "incapacità di fondersi con loro" - se si ha una modifica non vincolata ad un file, e si tira e si aggiorna una modifica a quel file, Mercurial avvierà il processo di fusione come se l'avessi commesso, quindi ha chiesto unire. Intendevi qualcosa di diverso?
Quindi, per le modifiche locali che non vuoi ancora condividere con altri sviluppatori, hai due approcci. Il primo è quello di mantenere i cambiamenti nella tua copia di lavoro, ma non li spinge, e l'altro è metterli da parte, fuori dalla copia di lavoro. La scelta dipende dal fatto che desideri rendere disponibili queste modifiche mentre lavori.
Se li tieni nella copia di lavoro, le modifiche in arrivo funzioneranno correttamente, quindi devi solo evitare di creare modifiche in uscita e questo significa evitare di commetterle. Se i file sono nuovi, è facile: basta non aggiungere hg add
. Se sono già tracciati, puoi escluderli espressamente dai commit con hg commit --exclude foo.txt
. Se hai un numero elevato di file da escludere o li escluderai da molti commit (ad esempio per una modifica permanente a un file di configurazione locale), guarda escludi l'estensione .
Se sei pronto a spostare le modifiche da parte, hai un altro set di opzioni. La cosa più semplice è semplicemente usare hg diff
sui file per produrre una patch che li descriva, che conservi in un posto sicuro, quindi hg patch --no-commit
per riapplicare quella patch quando vuoi che le modifiche tornino. Puoi renderlo più fluido installando l'estensione shelve , estensione attica , o qualche altro parente. Potresti anche utilizzare l'estensione delle code , ma questo sta usando una mazza per rompere un dado. Potresti anche solo eseguire il commit delle modifiche, quindi aggiornare di nuovo al genitore e impegnarti in altri lavori, lasciando le modifiche in un branch anonimo stub - hg commit -m 'temporary branch' && hg up $(hg log -r 'parents(.)' --template '{node}')
(anche se potrebbe essere più facile da fare manualmente!). Dovresti quindi fare attenzione a non spingere quel changeset, però.