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


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)
Итан Кениг

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.