2017-06-14 102 views
1

我想在一些版本化的非代碼級文件中包含一些元數據,尤其是文件的修訂版本號。如果可能的話,我想配置特定的目錄,以便當文件被選中的,在subversion服務器採用新的版本號和追加Subversion可以追加修訂版本號到檔案嗎?

/*轉:$ revNo */

到文件的末尾。問題是,處理這些版本化文件的腳本想知道文件的修訂版本是什麼,讀取文件中的最後一行(輸入的格式不會破壞文件的其他語義)比使用一些svn API檢查文件修訂版甚至針對該版本化對象調用系統級svn命令更容易。

有沒有一種方法來自動執行此任務?

+2

爲什麼downvote? – amphibient

回答

2

服務器

不知道這是否可以在服務器端完成。我認爲它可以。服務器需要一個pre-commit hook來執行操作。這可能是服務器特定的。用下面的命令參數在VisualSVN,你可以寫一個腳本power-shell被稱爲預提交:

[1] REPOS-PATH 
[2] REV 
[3] TXN-NAME. 

認爲你可以用這些參數來的信息附加到一個版本控制的文件。我只是不確定是否會觸發另一個提交,觸發另一個提交前鉤子。

客戶

你絕對可以做在客戶端類似的東西。我使用SubWCRev。它是使用命令行界面獲取SVN參數的TortoiseSVN的一部分。

文件裏:SubWC.h.in:

#define SVNREV "$WCREV$" 
#define SVNMOD "$WCMODS?Modified:Not modified$"; 
#define SVNVER "$WCUNVER?Unversioned items found:no unversioned items$"; 

然後,如果你一個預生成事件期間運行SubWCRev.exe . SubWC.h.in SubWC.h,你會得到一個自動生成的頭:

#define SVNREV "2345" 
#define SVNMOD "Modified" 
#define SVNVER "Unversioned items found" 

您可以使用#include該標題將版本信息嵌入到應用程序中。

對此here有個很好的解釋。它不會爲您生成的文件生成版本,但您可以在同一個預生成腳本中編寫腳本svn ci

+0

我建議不要通過鉤子腳本來做到這一點 - 不要通過鉤子腳本修改事務和修訂。但是,在某些未版本控制的屬性(如customprop:name = MyIDNumber)的形式中附加自定義ID可能會在某些情況下起作用,這可能就足夠了。 – bahrep

相關問題