我對使用Subversion作爲其源代碼控制的開源項目進行了一些本地更改。 (我沒有對原始項目存儲庫的提交訪問權。)subversion diff包含新文件
我的更改添加了一個文件,但是此文件未包含在「svn diff」的輸出中。 (可能值得注意的是,新文件是二進制文件,而不是純文本。)
如何製作包含新文件的patch?
$ svn st
A tests/foo.zip
$ svn diff
$
我對使用Subversion作爲其源代碼控制的開源項目進行了一些本地更改。 (我沒有對原始項目存儲庫的提交訪問權。)subversion diff包含新文件
我的更改添加了一個文件,但是此文件未包含在「svn diff」的輸出中。 (可能值得注意的是,新文件是二進制文件,而不是純文本。)
如何製作包含新文件的patch?
$ svn st
A tests/foo.zip
$ svn diff
$
事實上,你的文件是二進制的,正是它爲什麼不顯示恐怕。 Subversion的diff命令只執行文本差異/補丁(儘管Subversion內部可以在不同版本之間有效地處理二進制文件差異)。
如果你正在構建一個補丁,你可能需要使用普通的老「差異」用它把丟失的文件爲空--new-file選項。
請注意,此選項的語法可能會根據您使用的舊版本的差異版本而有所不同。
diff命令有一個--force選項,但它會在我的機器上爲二進制文件生成不正確的補丁文件。使用它與--diff-cmd選項雖然適用於我:
svn diff --force --diff-cmd /usr/bin/diff -x -au
我認爲這產生了你想要的。
我經歷了與Pozsar類似的行爲。而他的回答對我來說比普通的svn diff --force更好。但是,如果在DOS機器上運行(例如通過Cygwin),您可能需要稍微修改他的答案。下面的差異+補丁工作了使用--binary ARG修補我的文字+二進制文件在Cygwin中:
svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff
patch -p0 --binary -i mybinarydiff.diff
我在回答這個問題很感興趣,當文件是*不*二進制文件。 – Glyph 2010-06-01 16:42:49
@Glyph:看看這裏:http://stackoverflow.com/q/4248768/427532 – 2012-02-16 17:13:16