У традиційному VCS я можу зрозуміти, чому ви не зробили б невирішені файли, оскільки ви могли зламати збірку. Однак я не розумію, чому ви не повинні здійснювати невирішені файли в DVCS (деякі з них фактично не дозволять вам робити файли).
Натомість я думаю, що ваш сховище має бути заблокованим від натискання та витягування , але не змушене виконувати.
Можливість вчиняти під час процесу злиття має ряд переваг (як я бачу):
- Фактичні зміни об’єднання є в історії.
- Якщо злиття було дуже великим, ви можете робити періодичні комісії.
- Якщо ви помилилися, було б набагато простіше відкати (без повторного повного злиття).
- Файли можуть залишатися позначеними як невирішені, поки вони не будуть позначені як вирішені. Це не дозволить натиснути / тягнути.
Також потенційно ви можете мати набір змін, які виконують функції злиття, а не лише одного. Це дозволить вам все-таки використовувати такі інструменти, як git rerere
.
То чому ж вчинення невирішених файлів нахмурюється / перешкоджає? Чи є якась причина, крім традиції?
hg 1.6
після злиття файли позначаються як невирішені. hg
буде НЕ дозволить вам зробити , поки ви не помітивши їх як дозволені (не обов'язково означає , що ви на самому справі повинні вирішувати їх, але я припустив би , що це ідея).
hg
насправді підтримує список файлів, які мають або не були позначені як "вирішені" (використовуються hg resolve
). Якщо U
в цьому списку є якісь файли, це не дозволить вам здійснити фіксацію.
hg resolve
використовується спеціально для злиття з конфліктами; див. selenic.com/mercurial/hg.1.html#resolve . Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.