svn:Item <folder>已过期</folder>

时间:2010-05-10 18:52:11

标签: eclipse ubuntu subclipse

[根据我的意愿通过赏金系统自动选择回答]

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

svn: Item <folder> is out of date
svn: DELETE of <folder>: 409 Conflict (http://myintranet)

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

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

- 已更新:当我删除文件夹时,而不是文件

7 个答案:

答案 0 :(得分:39)

这不是由Subclipse FAQ解决的吗?

  

每当您在错误消息中看到“过时”时,就意味着存储库中项目的修订版本比本地工作副本中的副本更新。
  解决方案始终是运行更新,以便您的工作副本与存储库保持同步,然后再次执行提交(假设更新未产生任何冲突)。

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

您的下一个问题可能是:
  “好的,我可以理解,但是为什么我的文件夹已经过时了?我是唯一一个在此存储库中工作的人。

     

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

     

总之,答案始终是进行更新,以便将文件夹或文件更新为HEAD版本。


关于“混合修订工作副本”:

  

一种特殊的灵活性是能够拥有包含不同工作修订号混合的文件和目录的工作副本。

     

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

     

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

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

  

混合修订有局限性

     

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

答案 1 :(得分:6)

我认为如果你在此之前更新它应该工作..它确实对我有用

答案 2 :(得分:2)

汤姆,

您可能想尝试TortoiseSVN,并手动更新项目工作区。在硬盘中找到项目目录的位置,然后尝试TortoiseSVN(如果是您的偏好,则使用命令行)进行更新。

此问题的常见原因是删除目录而不“通知”SVN。例如,如果您使用操作系统而不是使用SVN手动删除目录,则会出现此问题。

如果在安装subversion插件之前删除了该目录,但该项目已存在于存储库中,则您将尝试此问题。在这种情况下,解决方案是重新创建目录,更新/提交,然后再次删除目录。

祝你好运。

答案 3 :(得分:2)

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

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

今天我删除文件时遇到了问题,有人更改了同一个文件!然后subclipse显示冲突(到目前为止一切正常),所以我想恢复!但是然后恢复按钮丢失(当打乱模式时消失!)所以我必须做合并,并且合并不起作用,抛出某种错误。我没有费心阅读(也许我应该阅读并将其作为一个bug来修改subclipse维护者;-(),我知道tortoisse会工作,你知道什么,它有效。有一个REVERT选项。

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

答案 4 :(得分:2)

我对此的解决方案是

  1. 删除文件夹
  2. 中的所有项目
  3. 提交存储库
  4. 将文件夹更新为HEAD
  5. 删除Eclipse中的文件夹
  6. 提交存储库
  7. 有点麻烦,但是它总是有效的

答案 5 :(得分:2)

有一个简单的解决方案,无需安装一些额外的软件。我也有这个“问题”,你可以做的是以下几点:

1)打开SVN Repository视图 2)转到要删除的文件夹并将其删除 3)回到java视图 4)更新项目中您实际删除/更新项目的文件夹也应该正常工作

这解决了我的问题,因为更新只检索了我删除的文件

答案 6 :(得分:0)

在相同情况下,唯一的工作方式是通过命令行。 subclipse仍然不完美..