2012-10-02 56 views
0

爲了版本化發佈給我們客戶的所有jar文件的內容,在過去的幾年中,我們一直在這些jar中發佈文本文件那將對該jar中包含的每個java文件執行映射File <-> CVS Version。 CVS存儲庫被用作我們的VCS。在SVN期間要保留SVN屬性的版本等效 - > Git遷移

不懷疑是否有當時沒有更好的解決辦法,在幾個月前,我們已經決定遷移到SVN和我們的解決方案,以保持歷史可能已經隨時從客戶獲取長期被遺忘的罐子生產環境,爲每個遷移的java文件添加一個自定義svn property


例如爲:

My/Foo/Bar.java遷移在CVS版本1.2.33.5到SVN爲svn-rev.5678會收到以下屬性:svn:cvs = 1.2.33.5

末變化My/Foo/Bar.java(CVS版本1.2.33.4)被映射到svn-rev.5145這對我們的文件svn:cvs = 1.2.33.4 svn的屬性集。

可以輕鬆瀏覽該文件的SVN狀態/日誌,因此可以同時對該文件進行更改,還可以對svn:cvs屬性值的歷史記錄進行修改。

現在,當一個新的svn檢入來到這個文件,比如說svn-rev.5700,所有需要做的就是清除該屬性。

完成任務 - 我們可以完全放棄CVS。


搬到Git。

我們路上的下一個步驟是將一些傳統的TFS存儲庫與我們現在擁有的SVN存儲庫合併在一起,而不會詳細討論,我們希望遵循的方法是將這兩個直接遷移到Git。

我們所關心的一個主要問題是如何避免在第一次遷移時引入的svn:cvs屬性。意識到gitattributes他們似乎是正確的路要走,但沒有更好的選擇嗎?是否真的有必要圍繞源代碼存儲.gitattributes文件? (全局文件不太可行)。另外,從svn屬性生成這些文件及其歷史記錄聽起來不像是一個簡單的腳本來編寫。

任何提示將不勝感激。

回答

1

你應該看看git-notes看看是否你想要使用的東西。通常筆記附加到提交,但它們可以附加到任何對象,包括文件對象。

將附註附加到文件對象的問題是,只要該文件發生更改,對象也會發生更改,並且其備註不會被複制。但是,您也可以使用hook,在文件更改時自動更新這些註釋。