Обработка конфликтов слияния файлов изображений (bmp, png, jpg и т. Д.) В Mercurial - PullRequest
4 голосов
/ 21 июля 2009

Как минимум, мне бы хотелось, чтобы "hg merge" открывал конфликтующие версии в параллельных экземплярах, скажем, MS Paint (тьфу), чтобы я мог выполнить слияние вручную. Бонусные баллы за предложения инструментов, кроме MS Paint. На данный момент я смотрю на Araxis Merge .

Ответы [ 4 ]

2 голосов
/ 22 июля 2009

См. Страницу конфигурации инструмента слияния в вики Mercurial. Вы можете заставить Mercurial запускать определенный инструмент слияния на основе расширения файла.

Инструмент Araxis выглядит круто, но у меня нет опыта работы с ним (я использую Linux). Если это не работает для вас, я бы вместо этого сделал небольшой скрипт, который покажет все три изображения (базовая версия и две конфликтующие версии) и позволит вам выбрать «победителя».

0 голосов
/ 11 января 2015

Вот основной способ настройки Mercurial для включения объединения изображений с помощью MS Paint.

Сначала создайте файл mspaintmergetool.cmd где-нибудь в системном PATH Windows (чтобы Mercurial мог его найти), содержащий:

START %WINDIR%\system32\mspaint.exe %1
START %WINDIR%\system32\mspaint.exe %2
START %WINDIR%\system32\mspaint.exe %3
START /WAIT %WINDIR%\system32\mspaint.exe %4

Затем настройте Mercurial для объединения изображений с помощью этого сценария, добавив следующее в .hgrc или mercurial.ini:

[merge-tools]
mspaintmergetool.args = $base $local $other $output
mspaintmergetool.binary = True

[merge-patterns]
**.bmp = mspaintmergetool
**.png = mspaintmergetool
**.jpg = mspaintmergetool

Если во время слияния образ с именем cat.png конфликтует, откроются четыре экземпляра MS Paint:

  1. cat.png~base - это то, как изображение выглядело незадолго до того, как разработка разделилась на два потока, которые вы сейчас пытаетесь объединить вместе
  2. cat.png~orig - это то, как изображение выглядит в ветви, которую вы объединяете в (локальный локальный); это образ, с которого вы начали в рабочем каталоге до начала этого слияния
  3. cat.png~other - это то, как изображение выглядит в ветви, которую вы объединяете из (например, удаленно)
  4. cat.png - когда открывается этот экземпляр Paint, он изначально содержит то же изображение, что и ~orig; Ваша задача - отредактировать изображение в этом экземпляре в комбинацию ~orig и ~other, сохранить и выйти из этого экземпляра Paint. После выхода Mercurial пометит конфликт как разрешенный и возобновит слияние. Обратите внимание, что первые три экземпляра не будут закрываться автоматически, поэтому, чтобы избежать путаницы с потенциально остающимися конфликтующими изображениями, вы можете закрыть эти экземпляры Paint вручную перед закрытием этого.
0 голосов
/ 08 сентября 2009

На веб-сайте Araxis Merge указано, что он будет интегрирован с Mercurial . Продукт является коммерческим, поэтому, если у вас есть лицензия, вы можете обратиться к ней за информацией об использовании их продукта с Mercurial.

Если у вас нет лицензии и вы хотите использовать их продукт, они, вероятно, помогут вам запустить демоверсию. Тогда вы можете смоделировать проблему с помощью поддельных репозиториев и проверить все это ...

Если вы пытаетесь держаться подальше от Commercial, то единственный способ - вручную настроить инструменты слияния для каждого файла. Я не знаю ни программ с открытым исходным кодом, ни бесплатных программ рисования, которые бы поддерживали слияние. В качестве сабвуфера для MS Paint вы, вероятно, можете настроить Paint.net для работы с Mercurial (вручную).

0 голосов
/ 21 июля 2009

Вы можете uuencode или base64-кодировать изображения (вы можете настроить хуки для автоматического преобразования), чтобы вам не приходилось иметь дело с двоичными файлами при объединении. Однако слияние обычно работает со строками, а не с символами, и я не знаю, насколько это эффективно, поскольку в кодировке обычно нет новых строк.

...