Вирішення конфліктів: як прийняти “їх” зміни автоматично?


97

При об’єднанні суперечливих змін за допомогою hg mergeMercurial вставляє набір маркерів у файли, що об’єднуються в мою робочу копію, так:

<<<<<<< local
  version = 0.2
=======
  version = 0.1
>>>>>>> other

Потім я вручну редагую всі файли, позначені як U, зі списку, який створив, hg resolve --all -lа потім кажу, що mercurial вирішив їхhg resolve -m file1 file2 file3 ...

Однак у багатьох ситуаціях я хотів би прийняти зміни, які існують лише для моїх, або лише для них у деяких конфліктуючих файлах. Я думаю створити два простих скрипти sed / awk / незалежно від імені accept-theirs.shта accept-my.shчи існує якийсь "правильний" спосіб це зробити?

Відповіді:


166

Використовуйте

hg resolve -t internal:other --all

прийняти theirsі

hg resolve -t internal:local --all

прийняти yours


Велике спасибі! Я не розумію, що означає @djc, але ваше рішення працює як шарм.
psihodelia

@psihodelia djc сказав майже те саме, спробуйте hg help merge-tools(mergetools - це псевдонім у останніх версіях)
MGP

6
Як додаткову примітку я зазначив це як псевдонім:[alias] mine = resolve -t internal:local theirs = resolve -t internal:other
Мелвін,

1
Це три рядки, які слід додати до свого .hgrc, для початківців:, [alias]тоді mine = resolve -t internal:local, потім theirs = resolve -t internal:other. Після цього ви можете використовувати hg mine some_file.pyабо hg theirs -a(для всіх)
Tobia

1
Станом на phab.mercurial-scm.org/D4379 , вам також може знадобитися включити --re-mergeпрапор (наприклад hg resolve -t internal:other --re-merge --all)
Ethan Koenig

23

Спробуйте це:

hg merge --tool 'internal:other'

Дивіться також hg help merge-toolsдля отримання додаткової інформації.


1
Або resolveдля окремих файлів / переробки. (Крім того, цитати навколо internal:otherнепотрібні.)
Кріс Морган,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.