如何更正“提交失败。文件xxx已过期。找不到xxx路径。”

时间:2009-05-04 12:32:49

标签: svn merge commit

我最近遇到了关于在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之前和之后的某个时候使用subversion客户端。我相信这有可能破坏合并信息。
  2. 在其他分支机构中,我们进行了部分合并。也就是说,我们并不总是在分支的根处执行合并。这是为了便于在同一分支内更新Flex和.NET工作。
  3. 我们在我们的分支上执行了循环(反身)合并。这样做是因为我们有多个并行分支,我们希望定期使用trunk中的最新代码更新我们的分支。
  4. Subversion书籍/团队明确不推荐所有这些内容。我们已经吸取了教训,现在已经了解了最佳实践。但是,我们首先需要合并并提交我们最新的分支。

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

    删除主干和分支中的所有合并信息是否可行? 号。我已经完成了这个,但它没有解决我上面的错误。

20 个答案:

答案 0 :(得分:26)

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

svn update
svn resolved <the directory in conflict>
svn commit

答案 1 :(得分:19)

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

我重命名了一个目录,并以某种方式(可能是由于AnkhSVN)将目录中的两个文件标记为“已替换”而不是“正常”。对目录中的其他文件进行了一些额外的微小更改。

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

答案 2 :(得分:5)

我也有同样的问题,我通过以下方法解决了同样的问题

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

希望这会对你有所帮助:)。

答案 3 :(得分:4)

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

答案 4 :(得分:4)

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

  • svn将我的工作文件夹(包括未版本控制的文件)导出到临时文件夹。
  • 将工作文件夹重命名为备份。
  • svn checkout the trunk。
  • 将临时导出文件夹中的所有文件夹复制到新的工作文件夹中。
  • svn commit。

现在一切似乎都很好。

答案 5 :(得分:3)

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

答案 6 :(得分:2)

我有同样的问题,不知道它背后的原因是什么,但我通过输入终端

来解决
svn update

然后我承诺并开始工作!

答案 7 :(得分:2)

我今天遇到了同样的问题而且我没有做过任何中间合并,所以从你的开场白中只有#1可能适用 - 但是我已经从ubuntu的svn客户端和windows中的tortoisesvn做了提交。幸运的是在我的情况下没有对行李箱进行任何更改,所以我可以用树枝替换行李箱。可能不同的svn版本呢?这太令人担忧了。

如果使用svn move / copy / delete函数虽然在我的情况下没有丢失历史记录 - 我svn移动了trunk,然后svn将分支移动到trunk。

答案 8 :(得分:1)

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

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

不幸的是,由于所有文件的历史记录现已“丢失”,因此会产生很大的差异。但由于时间限制,似乎没有任何其他选择。

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

答案 9 :(得分:1)

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

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

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

然而,有时不可能提交已删除的包(其中不包含任何内容)

我的解决方法:

  • 我在包
  • 中创建了一个虚拟类
  • 之后我重复了上述步骤

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

但有时候,再一次同步软件包/项目会很简单,之后一切都会再次运行。



关于我的配置:

  • Eclipse Neon
  • SVN接口:JavaHL(JNI)1.8.13(r1667537)
  • VisualSVN服务器管理器,版本:3.3.1



也许我可以用我的一些提示来帮助别人。

答案 10 :(得分:1)

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

答案 11 :(得分:1)

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

无效的机器正在运行Subversion客户端1.6.5。我在 Subversion 1.5.4的机器上做了完全相同的事情并且它工作!在两台机器上,我做了1)干净检查中继线,2)svn merge ...,以及3)svn commit。我的服务器是1.5.x,这是值得的。

希望这有助于某人。

答案 12 :(得分:1)

哦,小男孩!这看起来很糟糕!我能想到的唯一选择是工作副本已损坏。

尝试删除工作副本,执行新的结帐并再次执行合并。

如果这不起作用,请记录错误。

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

=======     代码从存储库合并 修订&#34;

虽然我没有做任何特别的事情(只是一次撤回修订版)。

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

答案 17 :(得分:0)

这似乎是svn:mergeinfo属性在分支和主干之间摆脱wack的问题。

这导致了以下问题(原谅我的命令行说明,因为我使用了很多龟):

  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. 完成所有操作后,请尝试重新合并。

答案 18 :(得分:0)

我认为在服务器上移动文件夹但是工作副本仍然绑定到较旧的SVN文件夹结构时,我看到了类似的东西。在您有机会合并分支之前,不确定是否有人在您的行李箱中移动了东西。

这是可能的吗?

答案 19 :(得分:0)

感谢Jamie Bullock为我工作

根据Jamie Bullock,

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

  1. svn update
  2. svn已解决
  3. svn commit