2009-05-04 73 views
42

我最近遇到了一个关于在subversion中提交合并结果的特别粘性问题。我们的Subversion服务器是@ 1.5.0,我的TortoiseSVN客户端现在是@ ​​1.6.1。如何更正“提交失败,文件xxx已过期,找不到xxx路径”。

我想合并一个功能分支回我的树干。合并似乎工作正常;但是,提交失败并显示以下错误消息。

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中的最新代码。

所有这些东西都不被Subversion书籍/团队推荐。我们已经吸取了教训,现在知道最佳做法。但是,我们首先需要合并并提交我们最新的分支。

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

会删除干线和分支中的所有合并信息是否可行? 不,我已经做到了这一点,但它并没有解决我得到的错误。

回答

2

我今天有同样的问题,我没有做任何中间合并,所以从你的开放职位只有#1可能适用 - 但我已经提交都来自于Ubuntu的svn客户端以及在Windows的tortoisesvn 。幸运的是在我的情况下,没有改变主干,所以我可以用分支替换主干。可能有不同的svn版本呢?这很令人担忧。

如果你使用svn移动/复制/删除功能,虽然没有历史是失去了我的情况 - 我SVN移动躯干,然后SVN移动分支树干。

+0

我也应该这样做,但是,考虑到这是发生在时间紧缩期间,我错误地将我的分支导出到主干并进行修改,从而失去了历史记录。幸运的是,自那以后我没有遇到过这个问题。 – 2009-07-14 20:39:54

+0

我认为下面@ simon-d的答案是真正的解决方案。这更像是一个解决方法:) – 2011-09-15 13:39:26

1

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

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

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

+0

这似乎很糟糕。我尝试过进行新鲜的结帐,但尚未有任何运气。不幸的是,在这一点上,我唯一的追求似乎是删除我的主干中的所有文件,并将分支导出到主干文件夹并重新添加所有必需的文件。 – 2009-05-04 17:37:11

1

我一直无法找到令人满意的解决方案,然而,我发现一个不满意的解决方案。

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

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

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

0

我想我已经看到类似的文件夹在服务器上移动但工作副本仍然绑定到较旧的SVN文件夹结构。不确定是否有人在你有机会合并分支机构之前在你的箱子里移动了东西。

这可能吗?

+0

没有人在主干中编辑过。由于我们使用稳定的中继方法,因此通常在中继线中进行编辑是被禁止的。因为我们决定从头开始,就像上面的答案一样,我担心我永远不会知道问题的真正原因。 – 2009-06-03 02:33:17

4

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

+0

这对我有效。 – 2010-01-24 20:17:58

+0

谢谢@David,比网上的一些解决方法更简单的解决方案 – 2011-09-09 07:53:12

0

这看起来与svn:mergeinfo财产失控的分支与躯干之间怪人的问题。

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

  1. 你在树干根级别或子文件夹级别合并?根据我的经验,总是最好在根层面做,这种方式整个树干认为它已合并到而不仅仅是部分(这似乎混淆了svn大大在1.5.0)

  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. 一旦你完成了所有的事情,再次尝试合并。

+0

1.我们一直在进行部分合并。我们已经停止了这种做法。尽管我们仍然从中继子目录创建分支。 2.我们很少能够获得--reintegrate选项。我忘记了我们目前收到的错误。我们切换到指定要合并的修订以避免此错误。 3.一般来说,我们将树干合并到树枝中,然后再合并回树枝,以便我们可以调和树枝中的合并问题。 4. svn:mergeinfo属性似乎没有任何问题。通常我们有一个分支机构一次开放,尽管我们有时会有更多。 – 2009-07-24 16:01:32

+0

我认为我们的问题源于几个问题,所有问题都已得到解决。 1.我们的颠覆客户端版本不同。有些合并不知道并且合并未察觉评论。 2.我们正在执行部分合并(使用不同的Subversion客户端) 3.我们的Subversion服务器是1.5.0。它上周刚刚更新至1.6.3。我们已经比以前的版本有更好的合并经验。 我认为这些都是导致我们错误的原因。 – 2009-07-24 16:04:16

0

我怀疑它,但也许运行svn清理你的工作目录将有所帮助。

+0

不幸的是,清理并没有为我工作。 – 2010-01-05 14:33:12

1

我在合并一个分支并将大量变化重新合并到我的主干后出现同样的问题。我可以看到的唯一两个解决方案是执行Pacifika提供的svn移动解决方案或手动合并文件和diff工具。但我找到了解决方法...

不工作的机器运行Subversion客户端1.6.5。我在一台机器上完成了与Subversion 1.5.4完全相同的工作,它的工作原理是!在这两台机器上,我做了1)干净的中继结帐,2)svn合并...,以及3)svn commit。我的服务器是1.5.x的价值。

希望这有助于某人。

4

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

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

现在一切都好了。

19

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

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

还原标记为已替换的文件可修复问题。

+2

我刚刚也遇到了这个问题 - 您的解决方案为我解决了这个问题。 :) – 2010-06-01 21:04:05

+0

非常简单的解决方案!只需恢复文件并再次提交更改。辉煌。 – jasop 2012-09-19 10:41:18

26

我刚刚有这个问题,原因似乎是一个目录被标记为冲突。要解决:

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

要在IntelliJ中执行此操作,您需要命令行工具支持插件。要获得它,请打开文件>设置(或Ctrl + Alt + S)>插件。点击“浏览存储库”按钮。搜索“命令行工具支持”插件。点击它上面的“安装”按钮。重新启动IntelliJ。现在已经设置好了,你可以简单的点击工具>运行命令(或者按Ctrl + Shift + X)并在IntelliJ中运行你的命令。 – 2017-10-11 14:41:32

0

我遇到同样的问题,打我的头,我发现我已经改变了目录,从represotory“/”到“/主干”,忘了做“开关”命令,在TortoiseSVN!

1

在Mac 10.6.5上,SVN 1.6.5出现类似问题,升级到SVN 1.6.9,提交成功。

3

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

0

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

0

显然SVN不是一个非常可靠的程序。我有同样的问题(使用SVT和Turtoise),并通过保存.cs文件的内容并返回1修订版来解决它。这表明这样的冲突: “< < < < < < <名我的变化

======= 代码库 修订合并”

,而我没有做什么特别的东西(只是一次退回修订版)。

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

5

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

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

希望同在,这将帮助你:)

0

我有同样的问题,当我试图提交删除包(其中包含各种java类,但是没有任何内容是必要的)。为了解决这个问题

我的解决方案/解决方法:

  • 我恢复全包
  • 删除内容第一
  • COMMITED删除内容
  • 最后我再次COMMITED删除包(并且它在大多数情况下工作:-))

但是,有时不可能提交已删除的包(whic H内无)

我的解决方法:

  • 我在包
  • 创建一个虚拟的类之后,我重复上述

我的最后一抹提到的步骤...

但是有时它可以帮助简单地再次同步软件包/项目,并且之后所有工作都很好。



关于我的配置:

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



也许我可以帮助某人提出我的提示之一。

1

我有同样的问题,不知道什么是其背后的原因,但我固定在终端

svn update 

打字,然后我提交和繁荣,它的工作!

相关问题