2009-12-07 61 views
11

有些事情正在進行我無法解釋。顛覆奇怪 - svn信息修訂版本比上次更改項目文件夾上的版本更高

我有我的項目的工作副本 - 完成svn更新(其中說:更新到修訂1895年),我知道這是最新的。當我對項目文件夾執行svn info,修訂1895年是的,但最近修改的版本是1888年

檢查使用TortoiseSVN日誌顯示1888年的最後一次修訂,沒有一絲1895. 1895年的svn log是空的,1895年至1888年間的svn diff也是空的,即。沒有區別。

我是怎麼得到一些沒有真正改變什麼的流氓修正?它基本上導致構建服務器(認爲它是在1888年)與我的MSBuild SvnVersion任務不同步(認爲修訂版本是1895年)。

任何建議表示讚賞。

編輯:如果修改將始終顯示整個庫中的最新版本,這意味着像svnversion,如果MSBuild任務的事情(使用svnversion.exe,但表現出類似的行爲)不顯示時正確的版本你有一個多個項目的單一存儲庫,你需要使用「Last Changed Rev」作爲你的版本號。

因此,現在滾動我自己的SvnLastChangedRev MSBuild任務。

+0

實際上這不是一個大問題,它是整個回購:如果您簽出該修訂,您仍然會得到正確的代碼副本該項目,並能夠再次構建它。如果您使用的是CruiseControl等設置,僅建立在更改上,那麼您無法爲該項目獲取新版本(假設它是唯一簽出的)。 – gregmac 2009-12-31 00:30:48

+0

你有沒有得到任何與你的SvnLastChangedRev MSBuild任務?因爲即時通訊有類似的問題 – 2013-08-07 11:55:29

+1

@詹姆斯 - 是的,我已經在CodePlex上發佈了一堆有用的MSBuild任務,其中包括SvnLastChangedRev。請參閱:http://zealanditmsbuild.codeplex.com/ – 2013-08-28 13:58:10

回答

20

這不是一個問題或奇怪的問題......版本號適用於整個Subversion版本庫,因此版本號可能會更高,這是因爲版本庫中其他地方的更改比最後一次版本號更改在您工作的存儲庫的分支中。爲了說明,如果您承諾trunk,將版本庫帶到修訂版本10,然後branchestags中的一系列更改將版本庫帶到修訂版本1000,那麼10將成爲「最後更改的版本」 trunk文件夾,但整個存儲庫的當前修訂版本號將爲1000.

+0

我知道每個存儲庫的修訂號都是全局的。但是當我在一個工作文件夾中執行更新時,這個工作文件夾是存儲庫樹中的一些層次結構級別,我從來沒有注意到它會在全局範圍內更新到最新的修訂版本,只是最新的版本。 – 2009-12-07 09:42:34

+0

@WimHollebrandse只有在檢出/存儲庫的根目錄下運行svn update時,纔會在全局中看到更新的修訂版本。 Subversion永遠不會更新父目錄的元數據。 – 2012-01-04 07:47:18