0

投稿されたように、Mercurial で小さなバイナリ ファイルを使用しています。

このバイナリ ファイルは、バージョン間の差分を作成するためにテキストとしてダンプできますが、問題は、ファイルがペアになっており (例: Form.scx / Form.sct)、Mercurial に "make aスナップショット」(一時的な場所へのコピー)を実行すると、他の対応するファイルhg ediff

4

2 に答える 2

1

簡単なスクリプトを作成し、それを 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

理想的には、レポジトリに生成されたアイテムを保持してはならないため、テキスト形式ではなく、「ソース」ボナリー形式のみをレポジトリに保持します。必要に応じて同等のテキスト ファイルを生成することをお勧めします。

于 2011-10-10T03:44:16.130 に答える
0

@Ryan が提案したように、差分プログラムの前に小さなバッチができました。

@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
于 2011-10-10T14:23:50.933 に答える