Как разрешить Mercurial внешнему инструменту сравнения иметь дело с переименованием файла? - PullRequest
1 голос
/ 17 ноября 2010

Если я фиксирую переименование файла и использую extdiff для просмотра различий в Beyond Compare или kdiff3, они показывают два разных файла на каждой стороне.

С Beyond Compare я могу вручную выбирать произвольные файлы с каждой сторонысравните, но это большая боль, если у меня много переименований (т.е. изменение имени пакета java для рефакторинга).

Я понимаю, почему это так: extdiff просто создает две временные директории моментальных снимков для инструмента diff.

Итак, мой вопрос: есть ли способ передать переименование инструменту сравнения, чтобы он сравнивал старое имя файла с новым именем файла?

Это, вероятно, характерно для каждого инструмента сравнения,Поэтому, если вы знаете инструмент, который его поддерживает, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Примечание Это работает только для различий с TortoiseHg.

Способ, которым я настроил установку Mercurial с Beyond Compare 3, выглядит следующим образом:

(обратите внимание, что это только параметры, относящиеся к diff и слиянию, вам все еще нужны другие параметры в некоторых из тех же разделов, так что только добавляйте или изменяйте, не удаляйте старые разделы и заменяйте их на следующие)

[ui]
merge = bc3m

[extensions]
extdiff=

[extdiff]
cmd.bc3d = C:\Program Files (x86)\Beyond Compare 3\bcomp.exe
opts.bc3d = /lro

[merge-tools]
bc3m.executable = C:\Program Files (x86)\Beyond Compare 3\bcomp.exe
bc3m.args = $local $other $base $output /automerge /reviewconflicts /closescript /lro /rro /title1="Left parent" /title2="Right parent" /title3="Common base" /title4="Merged output"
bc3m.priority = 1
bc3m.premerge = True
bc3m.gui = True

[tortoisehg]
vdiff=bc3d

Это теперь:

  • Автоматическое слияние, если возможно, без отображения графического интерфейса слияния, если нет конфликта слияния
  • Различия для переименованного файла показывают старое имя файла нас левой стороны и новое с правой стороны (хотя и с временными именами временных каталогов)

Важное примечание : не используйте одно и то же имя для инструмента слияния и инструмента сравнения(как bc3 для обоих).Это сбивает с толку задействованные инструменты и просто выводит их на экран запуска BC.Вот почему инструмент слияния называется bc3m, а инструмент сравнения - bc3d.

Также обратите внимание, что я отказался от использования встроенных инструментов недоступных, так как они выглядят неправильно настроенными.В частности, автоматическое объединение не происходило при использовании встроенного инструмента, но теперь работает хорошо.Кроме того, с помощью встроенного инструмента визуализация различий с переименованием показала сравнение каталогов или просто показала на экране запуска BC, что заставляет вас выбирать тип сравнения, который вы хотите.

Итак, в конце я просто экспериментировалпока я не нашел правильные варианты и сам все не настроил.

0 голосов
/ 17 ноября 2010

Обработка переименований требует рытья в истории, которая есть у типичного scm.Особенно dvcs, как Mercurial.Таким образом, они могут обрабатывать переименования.

Интересным может быть тот факт, что Git не отслеживает переименования, работает с контентом и переименования не имеет значения.

Инструмент Diff может обрабатывать изменения, но не может ничего рассказать офайлы в нем.В предыдущей истории также будет ошибочно указывать, был ли файл переименован или нет.Любой внешний инструмент сравнения обычно проверяет содержимое, и, следовательно, задача предоставления файлов остается за пользователем.

Как бы то ни было, Mercurial отслеживает переименования.См. это расширение , которое можно использовать для отслеживания переименованных файлов.Вы можете использовать это, чтобы предоставить любому внешнему инструменту сравнения правильные имена файлов для сравнения.

...