Я не вірю, що неспроможні зміни по суті є поганою справою. Ви посилаєтесь на "неможливість злиття з ними" - якщо у вас є неспроможна зміна в якомусь файлі, і ви потягнете та оновите зміни до цього файлу, Mercurial почне процес злиття так само, як якщо б ви це зробили, а потім попросив злиття. Ви мали на увазі щось інше?
Отже, для місцевих змін, які ви ще не хочете ділитися з іншими розробниками, у вас є два підходи. Перший - це зберегти зміни у вашій робочій копії, але не відштовхувати їх, а другий - відкласти їх від робочої копії. Що ви обираєте, залежить від того, чи бажаєте ви мати ці зміни під час роботи.
Якщо ви будете зберігати їх у робочій копії, вхідні зміни працюватимуть нормально, тому вам просто потрібно уникати створення вихідних змін, а це означає уникати їх внесення. Якщо файли нові, це просто - просто не робіть hg add
їх. Якщо вони вже відстежуються, ви можете спеціально виключити їх із комітетів hg commit --exclude foo.txt
. Якщо у вас є велика кількість файлів, які потрібно виключити, або виключаєте їх із багатьох комісій (наприклад, для постійної зміни локального файлу конфігурації), подивіться на розширення виключення .
Якщо ви готові відсунути зміни вбік, у вас є інший набір варіантів. Найпростіша річ - просто використовувати hg diff
у файлах для створення патча з їх описом, який ви зберігаєте десь у безпеці, а потім hg patch --no-commit
повторно застосувати цей патч, коли ви хочете, щоб зміни були повернені. Ви можете зробити це Smoother, встановивши розширення сукна , на розширення горища , або який - або інший родич. Ви також можете використовувати розширення черг , але це використовує кувалду, щоб зламати гайку. Ви можете навіть просто здійснити зміни, а потім оновити батьківську програму та виконати там іншу роботу, залишивши зміни в анонімній гілці впертого - hg commit -m 'temporary branch' && hg up $(hg log -r 'parents(.)' --template '{node}')
(хоча це може бути простіше зробити вручну!). Тоді вам доведеться подбати про те, щоб не натиснути набір змін.