SVN提交失败:目录过期
我有一个看起来很简单但很难解决的问题。 删除目录后,我得到提到的错误。 我还没有find解决冲突的解决scheme。 这是如何发生的:
svn add dir svn add dir / file1 svn提交 svn add dir / file2 svn提交 svn删除目录 svn提交 - >提交失败 - >目录'/ dir'已过期
显而易见的解决scheme“svn update”不起作用。 svn更新后,下一个提交失败:
提交失败 目录'/ dir'仍然存在冲突。
与此同时,我find了一个解决scheme,但有点麻烦:
svn解决 - 接受工作目录 svn commit - >仍然失败 svn更新 svn commit - >仍然失败 svn解决 - 接受工作目录 svn commit - >没有问题!
两个问题: – 任何人都可以解释这种行为,因为我很好奇 – 这个问题发生在一个更复杂的情况下的Perl脚本。 任何人都可以给我一个简单的解决scheme,是'可行'在Perl脚本?
只要做一个svn update
,然后你的提交应该工作。
我发现这个线程通过谷歌,是非常惊讶的不寻常的弱答案,我注册在stackoverflow发表一个解决scheme后研究的问题。
如果我正确理解颠覆,问题是这样的:
Subversion分别跟踪每个文件和目录的当前修订版本。 无论何时提交文件更改,父目录的修订版都会在回购中发生变化,但工作副本仍旧在其旧版本中具有该目录。
因此,在添加文件之后,在您的scheme中,回购库中的父目录比您的工作副本具有更高的修订版本。 当您尝试删除在过时的版本上工作的目录时。
解决:
在添加文件之后,删除目录之前,执行svn update
。
一般情况下,如果你不想引入别人的更改,你可以限制更新到目录本身: svn up --depth empty dir
。
你只需要更新,然后提交
在做最后的提交之前,你是否尝试过svn up dir
?
为了解决这个问题,我使用'svn revert',然后再次执行提交,这应该删除然后执行'svn delete'中的内容并再次提交。 我得到这个问题,试图重命名目录,但希望这将工作。
进行更新,清理,然后提交。
类似的问题,我面对新鲜的工作空间:
$ svn delete dir/file D dir/file $ svn ci -m "comment1" Deleting dir/file $ svn delete dir/ D dir $ svn ci -m "comment2" Deleting dir svn: Commit failed (details follow): svn: Item 'dir' is out of date
为了解决这个问题,我重新更新了源代码并使用了“删除URL”命令:
$ svn delete --force https://server/path.../dir $ svn update