2010-01-05 90 views
17

有沒有一種簡單的方法可以在提交文件時自動將信息插入代碼文件本身(如作者,提交評論,提交日期等)?我希望將這些信息附加到每個提交文件頂部的塊中。基本上整個修訂歷史應該在每個代碼文件中記錄...Subversion:在提交時將修訂版本數據添加到代碼文件

我看到有一種方法使用subversion屬性來實現類似的東西,但我看不到如何將實際的提交註釋到文件中,而且我也看不到如何保留一個具有整個修訂歷史的運行日誌,而不僅僅是最後一個提交信息。

我個人認爲這不是個好主意,因爲代碼文件應該只包含代碼,但不幸的是這是我當前項目的一個要求。

回答

5

我知道這不是你正在尋找的答案,但我會盡力說服他們這樣做。

最好的選擇是使用關鍵字替換,但SVN不提供$Log$關鍵字有很好的理由(請參閱http://subversion.tigris.org/faq.html#log-in-source),這與我用來爭辯不要在代碼中記錄日誌的原因相同。

+0

這些代碼文件永遠不會被合併。其他開發人員希望在文件處理過程中查看文件中的更改日誌。我試着解釋他們可以很容易地在2次點擊中看到更新日誌,但答案是「好吧,這是2次點擊太多了!」 – 2010-01-05 21:18:06

1

我看到有使用Subversion 屬性來實現類似的東西 一種方式,但我不明白如何讓 實際提交評論到 文件,也看不到如何保留 運行日誌,該日誌具有整個 修訂歷史記錄,而不僅僅是 上一個提交信息。

你不想在你的文件中提交評論。畢竟這就是svn log

+0

我知道它是一個壞主意,但正如我在我的問題中提到的,我必須這樣做! – 2010-01-05 21:13:55

2

我建議使用CVS來代替。它具有內置的這種能力.CVS大約24歲。聽起來你的文檔要求可能來自版本控制不常見的時代,所以你可能最好使用在那個時代創建的工具。

+1

他問SVN,你告訴他使用CVS。噓。 – dlchambers 2016-04-19 19:42:41

0

除此之外,正如你所說,作爲一個愚蠢的想法,我想不出用SVN機載方法做到這一點的簡單方法。您必須在結帳(或更新)腳本後檢查每個文件,確定該文件中的「更改日誌」塊,然後使用svn log的輸出更新該塊。可以完成,但將會是很多工作,你將不得不監視每個工作副本的變化,而且這是非常耗費資源的。

除此之外,post-commit鉤子可能是最好的工作,但如果可能的話,在修訂上下文之外處理倉庫內的文件聽起來很可怕。

0

我們在一些源文件中使用$Revision: 9584 $,並且每當該特定文件的修訂版發生更改時,版本都會更新。但我確定你的意思與衆不同。

+0

嗨,我有這個問題,請你看看我的問題:https://stackoverflow.com/questions/48767046/netbeans-svn-commit-keywoards-not-updating – Patrick 2018-02-13 13:14:41

16

顛覆支持各種關鍵字,比如$Id$$Author$$Revision$等。要相應地使用那些你需要的set the svn:keywords property。但是,您不能像$Log$那樣插入提交註釋。請參閱subversion FAQ,原因是這樣,我只能同意在那裏給出的原因。將提交註釋放入文件中很容易被設計中斷,並且任何此類註釋都是錯誤的當您無法根據存儲庫檢查它時。

其他版本控制系統也不支持這一點,其中大多數都有類似的推理(例如,git)。

請不要爭辯這樣的事情是「項目的要求」。如果發佈的代碼必須包含更改歷史記錄,則可以在使用某個幫助程序腳本創建發行版時輕鬆添加此歷史記錄。至少,顛覆根本不支持它。我會強烈不鼓勵嘗試實現這與一個預先提交鉤子。提交鉤子應該從來沒有更改提交的數據。

+3

你能詳細說明爲什麼嗎? – 2013-08-13 18:28:30

相關問題