2009-10-02 87 views
8

我們目前有2個分支:SVN墊底和歷史丟失

/repo/branch/current_version 
/repo/branch/next_version 

CURRENT_VERSION是所有開發者當前工作的一個分支。

我們開始下一個版本並創建next_version從current_version中的某個點開始分支,而current_version上的工作仍在繼續。在next_version中,我們會進行一些開發,並且在接下來的幾個月裏,分支將成爲我們的主要分支,所有的開發都將完成。

由於current_branch上有開發,我們週期性地(比如說每2週一次)想要調整next_version。這是爲了保持兩個分支同步,所以當所有開發人員最終都會丟棄current_branch並移動到next_release時,next_release將包含所有current_branch的功能集成和測試。

問題是rebasing。實際上,rebasing正在將current_branch的最新提交合併到next_version。因此,如果我將檢查next_release中提交的文件的歷史記錄,我會看到的是合併提交,而不是current_version的歷史記錄(提交/作者/註釋)。

我想念什麼?

回答

20

不,你沒有遺漏任何東西。這是使用SVN進行版本控制的一個大問題。

我在上一份工作中一遍又一遍地跑過去。每當有人向current_branch提交了一些內容(堅持你的術語)時,提交消息將不得不手動複製,以便可以在合併提交消息中使用。這很快就成爲一個巨大的痛苦。

這就是爲什麼新版本控制軟件具有更好的合併功能(Git,Mercurial和Bazaar出現)的原因。


編輯:顯然SVN已經修復了這個問題。 SVN 1.5及更高版本包含merge-sensitive logs and annotations。在svn merge和svn blame中使用標記--use-merge-history(-g)來查看來自合併分支的提交消息。

+4

@ThisSuitIsBlack未被刪除的評論關於svn 1.6功能「Merge-Sensitive Logs and Annotationscomment」是我正在尋找的。使用標記-use-merge-history(-g)和svn log/blame將完成這項工作。我也看到1.5中的特性。更新你的答案,我會接受它:) – dimba 2009-10-02 07:53:35