【问题标题】:How to update an SVN branch made with svn-copy?如何更新使用 svn-copy 制作的 SVN 分支?
【发布时间】:2014-02-20 10:44:57
【问题描述】:

我知道菜鸟问题,但我找到的所有资源都失败或给了我新问题。

我的 SVN 存储库中的分支很少。所有开发人员都可以访问他的个人分支。每个分支都是由 beta 分支的副本创建的。

svn copy  svn://192.168.0.2/svn/example/branches/beta
svn://192.168.0.2/svn/example/branches/dev/devN

现在当 dev1 完成工作时,他将他的工作合并到 beta (pwd = ./beta/)

svn merge svn://192.168.0.2/svn/example/branches/dev/dev1@4242 .

好吧,我的问题是,其他开发人员如何通过 dev1 更改将她自己的分支更新到最新的测试版?

当 dev2 进行合并时(提交自己的更改后 | pwd = ./dev/dev2)

svn merge svn://192.168.0.2/svn/example/branches/beta@4242 .

他收到这条消息:

svn: E195016: Merge tracking not allowed with missing subtrees; try restoring these items first:
pointing his files. -> impossible to merge.

有没有办法“更新”分支副本?

【问题讨论】:

  • 顺便说一句,常见的合并模式避免在源代码中使用 PEG 修订版
  • 这不是正确的方法。您应该创建一个分支,而不是为每个用户创建单独的分支,用户应该从这个分支中签出,他们应该在他们的工作区工作并提交他们的更改。因此,其他用户只需更新他们的工作副本即可获得更改。这应该会让你的生活更轻松。

标签: svn version-control merge


【解决方案1】:

我在 Windows 上使用 cygwin subversion 客户端版本 1.13.0 重新结帐时遇到了同样的症状。正如其他答案所暗示的那样,我不知道是路径长度还是大小写问题,但是切换到 linux 主机并使用客户端版本 1.7.14 进行全新结帐,解决了我的问题。

【讨论】:

    【解决方案2】:

    我在 Windows 客户端上发生此错误,当时存储库中有一个文件名称混合大小写,而另一个文件在 windows 中名称为大写。例如。存储库中的“Test.xml”和存储库中的“TEST.XML”。 所以 Subversion 似乎在这里区分大小写而 Windows 不区分大小写。

    【讨论】:

      【解决方案3】:

      我也有同样的信息。 svn status 表示一个文件有一个!。它在我的文件系统中,svn 在它的数据库中有它,但 svn 也认为它已被删除(它不是)。我不得不删除它,通过颠覆删除它,提交所有内容,直到 svn 状态正常并且文件确实丢失了。之后,我将神秘文件复制回原处,添加并再次提交。在那之后,颠覆和文件系统重新同步。这一定是颠覆中的错误。但幸运的是我可以修复它。

      【讨论】:

        【解决方案4】:

        如果您在 Windows 中工作并且路径超过 256 个字符,Windows 将开始对事情感到讨厌。我通常通过在根文件系统(例如 C:\WRK)的短目录下直接创建工作区来解决这个问题,这将使用比 C:\Users\user_name\Desktop\ 目录短得多的路径。创建工作区后,我会在桌面上添加一个快捷方式以便于访问。

        【讨论】:

          【解决方案5】:

          我收到此错误,我刚刚使用 TortoiseSVN 进行了结帐。没有任何内容被删除。 我确实发现在一条长路径的尽头,创建了一个“公共”目录,当我转到回购浏览器时,它没有出现。如果我删除父目录并进行更新,“公共”目录会再次出现。父目录还显示一个红色 X,表示 TortoiseSVN 认为某些内容已通过操作系统命令而不是 SVN 删除命令删除。

          我认为代码中的某个地方存在错误。我不知道这是否与路径长度有关(Windows 7 的问题?)或者是否还有其他问题。

          【讨论】:

            【解决方案6】:

            当有人在没有告诉 Subversion 的情况下删除了某些内容时,就会出现该错误消息。如果您要在该工作副本上运行svn status,Subversion 抱怨的相同路径应该在输出的第一列中显示!。通常这意味着有人使用操作系统命令而不是 svn 命令来删除路径。

            如果你真的想要删除路径,那么你可以通过使用svn rm 命令告诉 Subversion 来解决这个问题。路径将在状态输出的第一列中显示为已删除,并带有 D,并且您的合并应该继续(尽管您可能存在树冲突)。

            如果您想了解详细信息,请参阅 Subversion 项目中的 issue #2915,其中解释了添加此错误消息的原因。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-09-11
              • 1970-01-01
              • 1970-01-01
              • 2011-07-07
              • 1970-01-01
              • 2013-03-12
              • 1970-01-01
              相关资源
              最近更新 更多