2010-02-01 16 views
16

我在我的工作目錄中合併到主幹的分支上有更改。 Svn stat顯示更改文件的正確列表。但是,「svn stat」輸出在爲分支上新添加的每個文件提交的歷史記錄中包含一個「+」。svn diff當文件被標記爲「具有提交時間安排的歷史記錄」

A +的src \主\ java的\ COM .... java的

當我運行 「svn的差異」,具有 「+」 並不包含在補丁輸出添加的文件。

這看起來已經壞了。如果一個文件被標記爲已添加,那麼它的全部內容應該在diff輸出中。我試着通過 - 注意 - 祖先。差異輸出沒有變化。最近我可以找到相同的問題是these comments關於複製/移動的文件

有人知道如何讓SVN將這些文件包含在diff輸出中嗎?

我剛剛嘗試了一個外部差異程序,正如這個questions答案所建議的那樣,但它對我沒有任何作用。

回答

11

svn status輸出中的+字符表示該文件具有「歷史記錄已提交」。這意味着該文件實際上並不是一個新文件,而是實際上是Subversion存儲庫中某個其他文件的直接後代。

這意味着應該在svn diff中不輸出,因爲文件並沒有真正改變。如果您要對文件進行一些本地修改,它們將出現在svn diff輸出中。

+1

我懷疑'+'。但是,如何使用diff創建包含所有更改(從主幹中看到)的diff以提交給項目維護者? – 2010-02-02 13:03:57

+0

@James:這可能很難處理歷史,因爲從技術上來說,svn副本或重命名*不能以標準差異格式表示(並保留歷史記錄)。你可以刪除該文件的歷史('cp file file.bak; svn revert file; rm file; mv file.bak file; svn add file'),然後你可以在'svn diff'中找到diff,但是你不會不保留歷史,這太糟糕了。您可能必須包含手動執行轉換的說明。 – Avi 2010-02-02 21:01:08

17

當版本1.7發佈時,svn diff將具有用於該目的的--show-copies-as-adds交換機。這是一個很好的跡象表明1.6版本沒有這種能力。

0

如果你「svn mv fileA fileB」。 fileB附近會出現+號。 我認爲+號表示實際的文件內容沒有被改變,所以它不會顯示在svn diff中。在這種情況下,它只是文件名已更改。

相關問題