46

我最近遇到了一个关于提交 subversion 合并结果的特别棘手的问题。我们的 Subversion 服务器是@1.5.0,我的 TortoiseSVN 客户端现在是@1.6.1。

我正在尝试将功能分支合并回我的主干。合并似乎工作正常;但是,提交失败并显示以下错误消息。

Commit failed (details follow):
File 
'flex/src/com/penbay/invision/portal/services/http/soap/ReportServices/GetAllBldgsParamsByRegionBySiteResultEvent.as' 
is out of date
'/svn/ibis/!svn/wrk/531d459d-80fa-ea46-bfb4-940d79ee6d2e/visualization/trunk/source/flex/src/com/penbay/invision/portal/services/http/soap/ReportServices/GetAllBldgsParamsByRegionBySiteResultEvent.as' 
path not found
You have to update your working copy first.

我的工作主干是最新的。我什至已经将一个新的文件检出到另一个文件夹中,以确保没有任何本地杂乱无章的东西弄乱了合并。我对此进行了更多研究,我认为部分问题是用户错误。我认为我们的问题是:

  1. 我们有一些开发人员在 1.5 之前和之后提交了使用颠覆客户端的工作。我相信这有可能破坏合并信息。
  2. 在其他分支中,我们执行了部分合并。也就是说,我们并不总是在分支的根部执行合并。这是为了便于在同一分支内更新 Flex 和 .NET 工作。
  3. 我们在分支上执行了循环(自反)合并。这样做是因为我们有多个并行分支,并且我们希望使用主干中的最新代码定期更新我们的分支。

Subversion 书籍/团队明确不推荐所有这些内容。我们已经吸取了教训,现在知道了最佳实践。但是,我们首先需要合并并提交我们最新的分支。

纠正我们遇到的问题的最佳方法是什么?

删除主干和分支中的所有合并信息是一个可行的解决方案吗? 不,我已经这样做了,但它不能解决我上面遇到的错误。

4

20 回答 20

26

我刚遇到这个问题,原因似乎是一个目录被标记为冲突。修理:

svn update
svn resolved <the directory in conflict>
svn commit
于 2010-08-06T12:42:25.010 回答
19

我在 1.6.2 服务器,1.6.8 乌龟上得到这个。全部在 Windows 上,在这个分支中没有合并。

我重命名了一个目录,并且不知何故(可能是由于 AnkhSVN)目录中的两个文件被标记为“已替换”而不是“正常”。对目录中的其他文件进行了一些额外的小改动。

恢复标记为已替换的文件解决了该问题。

于 2010-05-12T19:21:37.720 回答
5

我也遇到了同样的问题,我用下面的方法解决了

svn resolve --accept=working <FILE/FOLDER NAME>
svn cleanup
svn update <FILE/FOLDER NAME>
svn commit <FILE/FOLDER NAME> -m "Comment"

希望对你有帮助 :)

于 2014-08-26T08:03:11.777 回答
4

我在尝试提交工作副本时遇到了同样的问题。我所做的是将 Subversion 报告为“找不到路径”的文件夹添加到忽略列表中。提交(应该成功)。然后将相同的文件夹添加回 Subversion。再次提交。

于 2009-07-24T13:26:42.130 回答
4

我刚刚遇到类似的问题,但没有任何分支或合并导致问题。我的解决方法是:

  • svn 将我的工作文件夹(包括未版本控制的文件)导出到临时文件夹。
  • 将工作文件夹重命名为备份。
  • svn 结帐主干。
  • 将临时导出文件夹中的所有文件夹复制到新的工作文件夹上。
  • svn 提交。

现在一切似乎都很好。

于 2010-01-04T04:33:20.237 回答
3

我知道这是一个旧帖子,但这个问题仍然经常发生。我发现解决它的最简单方法是重命名/删除受影响文件夹中的 .svn/all-wcprops 文件,然后运行更新并提交。

于 2012-10-02T15:51:30.813 回答
3

我今天遇到了同样的问题,而且我没有进行任何中间合并,所以从你的开篇文章中只有 #1 可能适用 - 但是我已经从 ubuntu 中的 svn 客户端以及 windows 中的 tortoisesvn 进行了提交。幸运的是,在我的情况下,没有对主干进行任何更改,所以我可以用分支替换主干。那么可能不同的svn版本?这很令人担忧。

如果您使用 svn move / copy /delete 功能,但在我的情况下没有丢失任何历史记录 - 我 svn 移动了主干,然后 svn 将分支移动到主干。

于 2009-07-14T13:40:08.303 回答
2

我有同样的问题,不知道是什么原因,但我通过输入终端修复了

svn update

然后我承诺并成功了!

于 2017-02-08T20:23:41.820 回答
1

我一直无法找到解决这个问题的令人满意的方法;但是,我找到了一个不令人满意的解决方案。

我已经删除了主干中的所有文件并提交了这些更改。然后我将我的分支代码导出到主干中,添加了所有文件,并进行了大量提交。这影响了我的树干以 1:1 的比例模仿我的分支(这正是我想要的)。

不幸的是,这造成了很大的分歧,因为所有文件的历史现在都“丢失”了。但由于时间限制,似乎没有任何其他选择。

我仍然会对其他人可能拥有的任何答案感兴趣,因为我想知道根本原因是什么以及将来如何避免它。

于 2009-05-04T20:55:50.070 回答
1

Mac 10.6.5 上的 SVN 1.6.5 有类似问题,升级到 SVN 1.6.9 并且提交成功。

于 2010-12-14T12:29:02.240 回答
1

在将具有大量更改的分支合并回我的主干后,我遇到了同样的问题。我能看到的唯一两个解决方案是使用Pacifika提供的 svn move 解决方案,或者使用 diff 工具手动合并文件。但是我确实找到了解决方法...

不工作的机器正在运行 Subversion 客户端 1.6.5。我在一台装有Subversion 1.5.4的机器上做了同样的事情,它奏效了!在两台机器上,我都做了 1) 干线的干净检出,2) svn merge ...,和 3) svn commit。我的服务器是 1.5.x 值得。

希望这可以帮助某人。

于 2009-10-22T14:16:34.233 回答
1

好家伙!这看起来很糟糕!我能想到的唯一选择是工作副本已损坏。

尝试删除工作副本,执行新签出并再次执行合并。

如果这不起作用,则记录一个错误。

于 2009-05-04T17:05:33.117 回答
1

当我尝试提交一个已删除的包(其中包含各种 java 类但不再需要包中的任何内容)时,我遇到了同样的问题。

为了解决问题,我的解决方案/解决方法:

  • 我还原了整个包裹
  • 先删除内容
  • 提交了删除的内容
  • 最后我再次提交了删除的包(它在大多数情况下都有效:-))

但是,有时无法提交已删除的包(不包含任何内容)

我的解决方法:

  • 我在包中创建了一个虚拟类
  • 然后我重复了上面提到的步骤

我的最后一个提示......

但有时它有助于简单地再次同步包/项目,然后一切都恢复正常。



关于我的配置:

  • 日食霓虹灯
  • SVN 接口:JavaHL (JNI) 1.8.13 (r1667537)
  • VisualSVN 服务器管理器,版本:3.3.1



也许我可以通过我的提示帮助某人。

于 2016-10-02T18:57:29.333 回答
0

这看起来像是svn:mergeinfo属性在分支和主干之间变得异常的问题。

这导致了以下问题(请原谅我的命令行指令,因为我经常使用乌龟):

  1. 您是在主干根级别还是子文件夹级别合并?根据我的经验,总是最好在根级别做,这样整个主干都认为它已经被合并到而不是只是一部分(这似乎在 1.5.0 中使 svn 非常困惑)

  2. 我的下一个问题是您是否使用了--reintergrate参数?我永远不记得如何在乌龟中得到这个,但是当你从一个分支回到树干时,你应该使用这个参数。

  3. 在重新整合之前,您是否将主干合并到分支中?这可以帮助消除您在合并回来时可能会看到的冲突?

  4. 您是否svn:mergeinfo在分支上有任何不在根级别的属性?我发现这总是会导致问题。你总是可以通过去发现这一点svn -R pg svn:mergeinfo。然后,您可以记录根目录下的位置和修订,如果您发现它们相关,然后将它们移动到根目录svn merge --record-only -r start:end <location> ,然后将它们从子根目录位置删除,然后svn pd svn:mergeinfo <location> 您需要提交这些更改

  5. 完成所有操作后,再次尝试合并。

于 2009-07-24T13:54:54.933 回答
0

我对此表示怀疑,但也许在您的工作目录上运行 svn cleanup 会有所帮助。

于 2009-08-03T14:53:33.930 回答
0

I think I've seen something similar when folders were moved on the server but the working copies were still bound to the older SVN folder structure. Not sure if anyone moved things around in your trunk before you had the chance to merge the branch.

Is that a possibility?

于 2009-06-02T17:33:27.237 回答
0

我遇到了同样的问题,抬起头,发现我已经将represotory中的目录从“/”更改为“/trunk”,并且在TortoiseSVN中忘记执行“Switch”命令!

于 2010-10-28T13:30:41.250 回答
0

哇,这个我花了一段时间才解决,因为我是通过 Eclipse 使用 SVN。最后,唯一对我有用的是提交所有不受影响的文件,然后(关闭 Eclipse)重命名项目目录,并从 SVN 重新签出项目。很高兴它现在可以正常工作!

于 2013-04-10T16:54:44.010 回答
0

显然 SVN 不是一个非常可靠的程序。我遇到了同样的问题(将 SVN 与 Turtoise 一起使用)并通过保存 .cs 文件的内容然后返回 1 个修订版来解决它。这显示了这样的冲突:“<<<<<<< filename my changes

======= 代码从存储库修订合并"

虽然我没有做任何特别的事情(只是一次推迟了修订)。

我用保存的内容替换了这个文件的内容,保存,然后通过 TortoiseSVN → Resolved 选择。然后我可以将修改提交到存储库。

于 2014-06-23T07:50:02.470 回答
0

谢谢杰米布洛克为我工作

根据杰米布洛克,

我刚遇到这个问题,原因似乎是一个目录被标记为冲突。修理:

  1. svn更新
  2. svn 解决了
  3. svn 提交
于 2018-03-15T12:19:51.763 回答