【发布时间】:2010-11-19 03:42:54
【问题描述】:
几周前,我开始对我认为很小的 SVN 存储库的主干进行更改。
经过几个小时的工作,意识到更改的影响比我想象的要大,我认为立即将更改检查到主干太冒险,所以我做了一个分支,如下所示:
svn copy . https://my_svn_server/svn/blah/branches/my-branch
... 然后做了一个 svn 切换并愉快地继续在那个分支中工作。到目前为止,一切都很好,直到我对所有更改感到满意并想再次将它们合并回主干。因此,我将所有更改签入到 my-branch 中,然后仔细按照here 所示的程序进行操作……这就是我遇到麻烦的地方。因为我从本地(客户端)存储库中创建了我的分支,其中已经有大量(未签入)更改,所以合并不包括与这些更改对应的差异,因此存在合并中有很多很多冲突,我必须手动解决——这是我不想做的事情,因为如果我把它搞砸了,它会给错误留下空间。
我尝试通过减少我在合并期间指定的修订号来包含缺失的差异,例如通过做一个
svn merge -r2818:2932 https://my_svn_server/svn/blah/branches/my-branch
而不是预期的
svn merge -r2819:2932 https://my_svn_server/svn/blah/branches/my-branch
...但这不起作用,因为 my-branch 在修订版 2818 中不存在,所以我得到一个错误:
svn: Unable to find repository location for 'https://my_svn_server/svn/blah/branches/my-branch' in revision 2818
所以这就是事情的现状。这次我可以手动解决这个问题,但我很好奇是否有办法处理这个问题,以便下次对我来说更好。
我能想到的一种方法是创建 my-branch,而不是通过复制本地(客户端)存储库,而是通过复制 SVN 主干 HEAD,然后将 my-branch 检出到单独的目录中,然后手动将我的本地(未签入)更改从主干目录复制到 my-branch 目录,然后直接恢复本地主干......但这也很乏味且容易出错。
肯定有更好、更自动化的方法来创建包含本地(未签入)更改的分支,然后将其合并回主干?
【问题讨论】: