Разрешение конфликтов: как автоматически принимать «свои» изменения?

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

Noffls
источник
Большое спасибо! Я не понимаю, что означает @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)
Итан Кениг
23

Попробуй это:

hg merge --tool 'internal:other'

См. Также hg help merge-toolsдополнительную информацию.

ди-джей
источник
1
Или resolveдля отдельных файлов / переделывания. (Кроме того, в кавычках internal:otherнет необходимости.)
Крис Морган,