svn:Item <folder>已过期

Tom*_*ito 14 eclipse subclipse ubuntu

[答案由赏金系统违背我的意愿自动选择]

我正在使用subclipse,并且总是在Eclipse中删除文件夹并尝试提交它时,会引发以下错误:

svn: Item <folder> is out of date
svn: DELETE of <folder>: 409 Conflict (http://myintranet)
Run Code Online (Sandbox Code Playgroud)

通过命令行删除和提交工作正常,但是通过subclipse执行它有什么问题?还有人遇到过这个问题吗?

(我在Ubuntu 9.10和10.04中经历过这个问题;最后一个Eclipse版本;以及subclipse 1.4 - 因为下一个版本的subclipse有更多错误)

--updated:当我删除文件夹而不是文件时

Von*_*onC 39

是不是Subclipse FAQ解决了这个问题

每当您在错误消息中看到"过时"时,它表示存储库中项目的修订版本比本地工作副本中的副本更新.
解决方案总是要运行更新,让你的工作副本是最新与资源库,然后执行再次提交(假设更新没有产生任何冲突).

  • 对于文件,通常很容易理解这是如何以及为什么会发生这种情况.
  • 但是,Subversion也会对文件夹进行版本控制,而且通常会在文件夹中出现此问题.
    Subversion不允许您删除/重命名文件夹或更改其版本化属性,除非文件夹的本地副本位于存储库中文件夹的HEAD版本.

你的下一个问题可能是:
"好的,我可以理解,但为什么我的文件夹已经过时了?我是这个存储库中唯一的工作人员. "

这是一个有效的问题,答案在于Subversion的工作方式.
当您提交对文件的更改时,工作副本中的文件修订将在提交完成时更新为该新修订,但不会更新该文件的父文件夹的版本.
这是因为可能已添加/删除该文件夹中的其他文件,并且在您运行更新之前,该文件夹实际上并未处于该新版本.
这称为" 混合修订工作副本 ".

总之,答案总是进行更新,以便将文件夹或文件更新为其HEAD修订版.


关于" 混合修订工作副本 ":

一种特殊的灵活性是能够使用包含不同工作修订号的文件和目录的工作副本.

Subversion的一个基本规则是"推动"动作不会导致"拉动",反之亦然.
仅仅因为您已准备好向存储库提交新更改并不意味着您已准备好接收来自其他人的更改.

事实是,每次运行svn commit时,您的工作副本最终会出现一些修改的混合.
您刚刚提交的内容被标记为具有比其他所有内容更大的工作修订.在几次提交之后(两者之间没有更新),您的工作副本将包含整个修订版本

(这就是为什么,我相信,在删除文件夹的后续提交中,您无法重现"过时"消息:您的更新确实解决了"混合修订"状态.)

混合修订有局限性

您无法提交删除未完全更新的文件或目录.
如果存储库中存在较新版本的项目,您的删除尝试将被拒绝,以防止您意外破坏您尚未看到的更改.


mar*_*oda 6

我想如果你之前更新它应该工作..它确实适合我


bar*_*z.r 2

Subclipse有很多这样的问题。90% 的情况下它都能工作,然后就无法正常工作了!我正在使用 subclipse,因为它很好地集成到 eclipse 中,当我遇到问题或在 svn 中需要一些更大的动作(例如合并某些分支)时,我使用 Tortoisse。

我有像你这样的目录。然后我就像 @luiscolorado 建议的那样运行 TortoiseSVN,它很有帮助。Tortoise 是一个很棒的工具(它有很多很棒的功能,可以用于比较、应用补丁、获取补丁等)。

今天,当我删除一个文件,而有人更改了同一个文件时,我遇到了问题!然后 subclipse 显示冲突(到目前为止一切正常),所以我想恢复!但是恢复按钮丢失了(在冲突模式下消失!)所以我必须进行合并,并且合并不起作用,会引发某种错误。我懒得去阅读(也许我应该阅读并将其作为错误提交给 subclipse 维护者;-(),我知道乌龟会工作,你知道吗,它工作了。有一个 REVERT 选项。

所以@Tom Brito,尝试命令行,尝试Tortoisse,然后你可以查看 subclipse 变更日志并提交错误。我认为 subclipse 只是忘记向我们展示一些目录更改和更新(或者它被设计为不这样做?),但我可能是错的。