【问题标题】:Tortoise SVN Merge "@### must be ancestrally related to @###" ErrorTortoise SVN Merge "@### must be an ancestrally related to @###" 错误
【发布时间】:2023-03-06 08:12:01
【问题描述】:

背景故事:找到了一份入门级网络开发人员的工作。当我开始时,首席开发人员就离开了。一切责任在我。没用过SVN。盲目进入。

问题
我不断收到类似

的错误
'svn://svn/svn/xxx/project_name/branches/dev@330' must be
ancestrally related to 'svn://svn/svn/xxx/project_name/trunk@326'

我开始新项目的过程是:

  1. 在我的计算机上为项目创建一个目录,其中包含子文件夹:
    project_name/branches
    project_name/branches/dev
    project_name/tags
    project_name/trunk

  2. 右键项目根目录,选择我的项目根目录,Add到仓库

    (以下是我对当前项目必须做的事情,这在他们中没有问题,但在合并时会中断新项目)

  3. Commit“dev”分支

  4. Merge "dev" into "trunk"(合并所有修订版)* BREAKS HERE *
  5. Commit“主干”
  6. svn up

不熟悉 SVN,我在这方面遇到了困难。正如我所说,在现有项目上做 3-6 是可行的,但在新项目上,我在合并时收到 must be ancestrally related to 错误。 那么,我做错了什么?非常感谢所有和任何的帮助。

【问题讨论】:

  • 听起来问题在于您没有通过 svn 副本创建 dev 分支,而只是通过在目录结构中包含目录。因此 dev 文件夹没有树干作为祖先(它不是从树干创建的)。我不知道 TortoiseSVN,但是在 IDE 中你会打开你的主干文件夹,然后选择分支,然后切换到你的新分支。
  • @thatidiotguy 我感激不尽。我想到了!非常感谢。

标签: php svn tortoisesvn svn-merge


【解决方案1】:

[thatidiotguy][1] 关于不通过主干副本创建可能是正确的。

如果你在 dev 分支上使用 svn log --verbose --stop-on-copy,最早的条目应该显示你从哪里复制分支。

TortoiseSVN 的 svn 日志功能也是如此; stop on copy 是日志窗口中的一个复选框。

如果不是从副本创建的,则无法合并回来。

您需要重新创建 dev 分支并重新应用您的更改。

更新:通过“重新创建 dev 分支”,我的意思是为开发创建一个新分支,它是主干的实际 svn 副本(分支)。如果使用 svn copy trunk/[application subfolder] branch/[application subfolder - name of branch] 创建分支,svn 将记录原始源版本。这允许将主干/基础版本中的更改智能合并到分支中(以修复缺陷、添加功能等) 复制完成后,您可以从原始源复制更改的文件,并将它们作为对代码的正常更改提交。

How to replace a branch in subversion?

https://stackoverflow.com/users/821722/thatidiotguy

【讨论】:

  • 也谢谢你。日志也有帮助。
  • “重新创建 dev 分支”是什么意思?
猜你喜欢
  • 2013-07-25
  • 1970-01-01
  • 2023-03-20
  • 2018-08-03
  • 1970-01-01
  • 2012-12-03
  • 2019-04-04
  • 2022-12-27
  • 2018-11-01
相关资源
最近更新 更多