svn rebasing和历史丢失

时间:2009-10-02 01:10:22

标签: svn history rebase

我们目前有2个分支机构:

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

current_version 是所有开发人员目前都在工作的分支。

我们开始下一个版本并从current_version中的某个点创建 next_version 分支,而对current_version的工作仍在继续。在next_version中,我们做了一些开发,在接下来的几个月里,分支将成为我们的主要分支,所有开发都将在那里完成。

由于current_branch上有开发,我们周期性地(比如每2周一次)考虑改变next_version。这是为了保持两个分支同步,所以当所有开发人员最终都会删除current_branch并转移到next_release时,next_release将包含所有current_branch的功能集成和测试。

问题在于变基。实际上,rebasing正在将current_branch的最新提交合并到next_version。因此,如果我将检查next_release中提交文件的历史记录,我将看到的只是合并提交而不是current_version的历史记录(提交/作者/注释)。

我错过了什么吗?

1 个答案:

答案 0 :(得分:20)

不,你没有错过任何东西。使用SVN进行版本控制是一个很大的问题。

我在上一份工作中一遍又一遍地遇到它。每当有人向current_branch提交内容(坚持使用您的术语)时,必须手动复制提交消息,以便可以在合并提交消息中使用它。这很快就变成了巨大的痛苦。

这就是为什么新版本控制软件具有更好的合并功能(Git,Mercurial和Bazaar)的原因。


编辑:显然SVN已解决此问题。 SVN 1.5及更高版本包含merge-sensitive logs and annotations。使用标志--use-merge-history(-g)和svn merge以及svn blame来查看来自合并分支的提交消息。