我試過各種東西,並且只有一個工具可以正確執行它:來自TortoiseSVN的SubWCRev.exe。如何在UNIX上獲得正確的svn版本號?
svn info
,svnversion
都是笑話,並沒有提供良好的結果(所以,除非你確定他們可以這樣做,否則請不要發佈涉及這些問題的回覆)。
我在一個巨大的項目上工作,我維護我們項目的buildserver。 buildserver會進行稀疏結帳(例如,只有一些文件夾已經被我們的項目實際使用了)。我的目標很簡單:如果有人修改其他分支中的文件或不屬於我的稀疏結帳的文件夾,我不希望我的版本號出現問題。基本上,我的目標是確保相同的輸入文件將生成相同的生成結果(例如嵌入的svn編號應該相同)。來自tortoise的 SubWCRev
完成此作業,並報告上次提交的所有檢出的文件的修訂。 svnversion -cn
例如是一個接近嘗試,但它不能正常工作。
想象我有這樣的結構:
trunk
|
+-src
+-include
+-lib
|
+-Win32
+-Linux
+-WinRT
lib文件夾中包含了不同的OS'es和平臺庫。例如,Win32超過了演出規模,而在Linux上我們做了一些稀疏的結帳,例如svn update --set-depth=exclude trunk/lib/Win32
這種方式在我的linux buildserver上我甚至沒有看到trunk/lib/Win32。 svnversion -c的問題是,即使在排除的子文件夾中,它也會報告上次提交的rev。那麼,有沒有一種工具可以像來自tortoise svn的SubWCRev
那樣工作(我不在乎它能夠替換文件中的標記,我需要的只是它提取的最後一個提交的版本號)。