Управление парой файлов как одним в Mercurial - PullRequest
0 голосов
/ 10 октября 2011

Я работаю с небольшими двоичными файлами в Mercurial как отправлено .

Эти двоичные файлы могут быть выгружены в виде текста для сравнения между версиями, но проблема в том, что файлы создаются парами (например, Form.scx / Form.sct), и я не могу найти способ сообщить Mercurial «сделать снимок» (скопировать во временную папку) другого соответствующего файла, когда я делаю hg ediff.

Ответы [ 2 ]

1 голос
/ 10 октября 2011

Просто сделайте быстрый скрипт и установите его как инструмент для extdiff.Я предполагаю, что вы работаете в Windows, но независимо от того, что эквивалентно PowerShell, это:

#!/bin/sh
binary-to-text $1 /tmp/$1.sct
binary-to-text $2 /tmp/$2.sct
diff /tmp/$1.sct /tmp/$2.sct
rm /tmp/$1.sct /tmp/$2.sct

Это создает, сравнивает, а затем удаляет текстовые версии.Вы должны быть осторожны, чтобы не перезаписать, иметь дело с несколькими одновременными вызовами и т. Д.

Затем настройте новую команду для запуска скрипта:

[extdiff]
cmd.mydiff = that_script_above.sh

Затем вы можете делать такие вещи:

hg mydiff

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

0 голосов
/ 10 октября 2011

В соответствии с предложением @Ryan, я получил небольшую партию, предшествующую программе diff:

@echo off
set f1=%1
set f2=%2
::Temporary dir created by hg to copy the snapshot file
set tdir=%~dp1
::Original repository dir
set repo=%~dp2
::Filename extension
set ext=%~x1
::The binary files comes in pairs: scx/sct \ vcx/vct ...
set ex2=%ext:~0,-1%t

::Check if "dumpable" extension
echo %ext% | grep -iE "(vcx|vct|scx|sct|pjx|pjt|frx|frt)" > nul && goto DumpFile
goto diff

:DumpFile
set f1="%tdir%\_Dump1.prg"
set f2="%tdir%\_Dump2.prg"
::Get the pair file from the repository
hg cat %repo%\%~n1%ex2% -o "%~dpn1%ex2%" -R %repo%

::Do the dump, then the diff
MyDumpProgram.exe %1 %f1%
MyDumpProgram.exe %2 %f2%
goto diff

:diff
ExamDiff.exe %f1% %f2%
pause

, а затем настройте пакет в% UserProfile% \. Hgrc

[extdiff]
cmd.ediff = d:\Utiles\diff2.bat
...