【问题标题】:Trouble merging branch into trunk after re-organizing the repository重新组织存储库后无法将分支合并到主干
【发布时间】:2010-09-29 15:39:18
【问题描述】:

很长一段时间以来,我们所有的开发和部署都是从主干完成的。过了一段时间,这导致生产环境与主干不同步,因为我们收到将新功能“B”移动到生产环境的请求,但推迟了新功能“A”——基本上我们会从主干结帐到一个临时文件夹,然后有选择地将文件从临时合并到生产(不受版本控制)

在纠结了太久之后,我终于决定重新安排存储库以允许分支,但是在移动 (svn mv) 主干时犯了一些错误,以便为分支和标签文件夹腾出空间(以前没有“主干”文件夹,文件只是位于项目的父文件夹中),最终结果是我的“主干”现在比我创建的一些分支更新。现在我似乎无法从分支合并回主干,而不会丢失很多更改并遇到很多冲突。 (我已经从主干更新了分支。)

如果我在我的主干上运行svn log --stop-on-copy,最早的版本是 r14376,如果我在我的分支上运行它,最早的版本是 r14368。 (HEAD 在 r14710)

如何在不丢失 r14368 和 r14376 之间的所有更改的情况下进行正确的合并?我正打算手动合并到主干,但随后我丢失了分支文件的所有修订历史记录。

【问题讨论】:

  • "hg" = Mercurial = "扔掉所有的东西,学习一个新的分布式版本控制系统"(或者,
  • 啊,是的,那太好了……

标签: svn conflict branching-and-merging


【解决方案1】:

我玩弄了几种编写合并命令的不同方法,并认为我终于得到了我需要的东西。我基本上颠倒了合并参数的顺序,以便年轻的主干首先出现,然后是旧的分支,然后我将它们合并到主干的工作副本中:

$ cd trunk
$ svn update
$ svn merge svn://server/project/trunk@14376 svn://server/project/branches/46@14710 .
--- Merging differences between repository URLs into '.':

这仅导致了少数冲突,其中大部分发生在我刚刚接受右侧副本的图像文件上。希望这能让我在未来的分支和合并能够正常工作的地方。

【讨论】:

    【解决方案2】:

    尽管如此,我还是给了你一个问题, 我的声明是你应该知道你在做什么。所以公司里没有人会喃喃地说某事不工作,.... 在 svn 书中阅读合并:
    http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.branchmerge.advanced.advancedsyntax

    【讨论】:

    • 我昨晚阅读了该部分,但要么我不理解它,要么我尝试的示例不适用于我的情况。
    【解决方案3】:

    如果没有看到更多关于你的回购发生的细节很难回答,但也许你可以删除当前的“主干”文件夹,然后将原始伪主干(即回购根目录)复制到一个主干文件夹中头。我认为这将为您提供原始的伪主干作为历史完整的新“主干”文件夹。假设您首先开始在 rX 中修改 repo 根目录,命令将是这样的:

    svn rm url/trunk
    svn commit -m "Removing broken trunk"
    svn cp -rX url/@X url/trunk
    svn commit -m "Creating new trunk from previous root"
    

    然后您可以尝试将您的分支合并回主干。如果您与主干代码有冲突,请尝试合并所有修订减去您引入主干代码的那些(我假设,也许错误地,您将主干更新作为独立提交进行)。

    【讨论】:

    • 由于我在重组中移动文件的方式,我不再能够参考 r14360 之前的任何修订。我没有提前计划整个事情,并且在这个过程中几乎失去了整个事情。将其标记为吸取的教训,但最终结果是我无法按照您的建议进行操作。
    • 您做了什么无法参考 14360 之前的修订版?除了创建一个新的存储库并导入新的文件以删除所有历史记录之外,我想不出任何可以阻止您参考早期版本的东西。即使您移动东西、删除东西等,那些早期的修订版仍然存在并且应该仍然可以使用。请注意,我在 cp 命令中使用了 peg 修订版(“@X”);这将使您的旧路径能够工作,即使它们不再存在于 HEAD 中。那是造成麻烦的部分吗?
    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 2011-11-25
    • 2011-01-29
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多