Вне сравнения с Mercurial: как заставить обновление и сохранение работать правильно?

Я пытаюсь настроить BeyondCompare с Mercurial для настройки нескольких рабочих процессов.

В настоящее время я могу сделать это:

  • Запустить hg bcompare или hg bcompare --rev <something>
  • Внесите некоторые изменения в файл справа
  • Экономьте несравненно
  • Близко вне всякого сравнения
  • Обновить мой редактор/IDE
  • Внесите изменения в редакторе/IDE
  • Непревзойденный перезапуск

Я хотел бы сделать следующее:

  • Запустить hg bcompare или hg bcompare --rev <something>
  • Внесите некоторые изменения в файл справа
  • Экономьте несравненно
  • Обновить мой редактор/IDE
  • Внесите изменения в редакторе/IDE
  • Обновление вне всякого сравнения

На данный момент этот рабочий процесс не работает, но я не могу понять, не сравнится ли он с чем-то несравнимым или переменчивым, что все испортило. Я вижу, что файл, который находится в правой панели вне сравнения, находится в этом каталоге: /tmp/extdiff.MIGT6x/dir.

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

В качестве альтернативы, есть ли способ, которым я могу получить сохранение Beyond-Compare, чтобы записать файл в реальное местоположение и заставить обновление Beyond-Compare работать правильно?

Я настраиваю Beyond-Compare, как описано на сайте Beyond Compare:

[extensions]
hgext.extdiff =

[extdiff]
cmd.bcompare =

[merge-tools]
bcomp.executable = /usr/bin/bcompare
bcomp.args = $local $other $base $output
bcomp.priority = 1
bcomp.premerge = True
bcomp.gui = True

введите здесь описание изображения


person sixtyfootersdude    schedule 21.04.2015    source источник


Ответы (2)


Расширение «extdiff» (которое, я ожидаю, вы используете, чтобы показать свои изменения в bcompare), использует «hg status» для проверки того, какие файлы различаются между двумя ревизиями (или между текущим рабочим каталогом и ревизией). ).

Затем он копирует все отличающиеся файлы в два временных каталога и вызывает bcompare (или любой другой инструмент сравнения) для сравнения этих двух каталогов.

Преимущества этого подхода:

  • Необходимо сравнивать только небольшое количество файлов (поэтому самому difftool не нужно просматривать все файлы)
  • Нет необходимости в каждом difftool добавлять поддержку Mercurial, инструменты должны поддерживать только 2 каталога.

Недостатком, конечно же, является то, что редактирование внутри difftool не повлияет на ваш репозиторий. Другими словами: это невозможно сделать так, как вы хотите.

person Mathiasdm    schedule 22.04.2015
comment
Спасибо за четкий и краткий ответ, который ясно объясняет, почему это происходит. +1. Я собираюсь оставить вопрос открытым в надежде, что у кого-то будет лучший ответ. - person sixtyfootersdude; 22.04.2015

То, что Mathiasdm сказал в их ответе, верно в том смысле, что HG создает временные файлы, которые затем сообщает Beyond Compare о запуске сравнения.

Если вы все еще хотите сохранить изменения, которые вы вносите во временный файл, лучшей альтернативой будет использование команды Save As и указание ее на существующий файл в вашем репозитории. При этом, если все, что вы хотите сделать, это отредактировать текущий рабочий файл, вы можете просто отредактировать левую часть (рабочую копию) и сохранить изменения напрямую. Кроме этого, невозможно заставить Beyond Compare выполнять сравнение файлов, которые не являются временными файлами, поскольку файлы создаются HG.

person GHandel    schedule 23.04.2015