2008-12-28 72 views
8

我使用Subversion的外部差異工具(超越比較規則!),其中一個重要功能是能夠使用diff程序對文件進行一些小修改,因爲我正在檢查我所做的更改。爲什麼svn diff有時會將工作文件複製到臨時文件?

但是svn diff對我的不同項目有不同的工作方式。總之,左邊的文件是一個臨時文件,包含存儲在Subversion(頭文件)中的最新版本。但在某些情況下,右側文件是實際工作文件,而在另一些文件中則是工作文件的臨時文件副本。在第一種情況下,我可以修改差異程序並影響工作副本。在第二種情況下,我正在編輯一個臨時文件,所以更改會丟失。

爲什麼Subversion有時會對工作文件進行比較,但有時會對工作文件的臨時副本進行比較?我怎樣才能使它始終使用工作文件?

回答

11

你在這些文件上設置了svn:關鍵字嗎?如果是,那麼Subversion將首先創建一個臨時文件,其中包含所有這些擴展關鍵字「未展開」。這是爲了避免所有關鍵字行顯示爲不同,即使它們沒有改變。

例如,如果您在工作副本中針對BASE區分文件,則BASE文件沒有擴展關鍵字(並且也存儲有LF行尾),而工作副本中的文件擴展了所有關鍵字與CRLF lineendings一起存儲)。 如果你沒有在本地修改該文件,'svn diff'會顯示所有行不同(如果行結束不匹配)或至少所有包含關鍵字的行將顯示爲不同 - 這不是你會期待。

+0

這是svn:keywords屬性!謝謝。 – 2008-12-28 16:37:53

0

也許有一些訪問問題。嘗試將文件設置爲只讀,如果svn現在打開臨時文件,這是您的問題的一個可能的答案。在這種情況下,可能有一些編輯器/ IDE使用寫保護文件。

+0

好的想法,但它似乎不必與寫入權限或編輯保持文件打開。 – 2008-12-28 14:33:36

相關問題