我一直在尝试在Subversion中将目录结构从一个位置移动到另一个位置,但是我收到Item '*' is out of date
提交错误。
我已检出最新版本(据我所知)。除了mv命令之外,svn st -u
没有任何差异。
答案 0 :(得分:617)
我有时会在Windows上使用TortoiseSVN。对我来说,解决方案是svn update
目录,即使没有下载或更新的修订版。它对元数据做了些什么,它神奇地修复了它。
答案 1 :(得分:40)
在尝试了所有显而易见的事情以及其他一些建议之后,没有任何运气,谷歌搜索导致了这个链接(链接不再起作用) - Subversion says: Your file or directory is probably out-of-date
简而言之,诀窍是转到 .svn目录(在包含违规文件的目录中),然后删除“all-wcprops”文件
在没有其他事情的情况下为我工作。
答案 2 :(得分:39)
我相信这个问题来自.svn文件。它在旧父母,新父母或旧父母中是不正确的。我会尝试回到你的起点。使用导出来获取文件夹的干净副本。将干净的副本移动到新位置,然后使用添加和删除来执行移动。这是手动执行SVN所做的事情,但它可能有用。
答案 3 :(得分:31)
我发现这对我有用:
svn update
svn resolved <dir>
svn commit
答案 4 :(得分:14)
尝试更新本地副本,并还原有问题的项目,但仍然出现“过期”错误。这有点原因:
svn update --force /path/to/dir/or/file
答案 5 :(得分:10)
我在几个文件夹中遇到了同样的问题,这就是我要做的事情:
1)在“团队同步”透视图中,右键单击文件夹&gt;覆盖和更新
2)再次删除文件夹
3)承诺并且快乐
答案 6 :(得分:5)
谢谢。那只是为我解决了。 svn update --force / path to filename /
如果本地目录中的最近文件相同,则没有提示。如果文件不同,它会提示输入tf,mf等...选择mf(我的全部)确保没有任何内容被覆盖,我可以在完成时提交。
杰 CompuMatter
答案 7 :(得分:5)
我设法通过点击更新按钮来解决它
答案 8 :(得分:4)
就像@ Alexander-Klyubin建议的那样,在存储库中进行移动。它也会更快,特别是如果您要移动大量数据,因为您不必再通过网络传输所有数据。
svn mv https://username@server/svn/old/ https://username@server/svn/new/
应该可以正常工作
答案 9 :(得分:3)
使用删除文件或路径 在执行命令之前执行更改的bk
sudo rm -r /path/to/dir/
之后:
svn up and commit or delete
答案 10 :(得分:2)
你确定你已经检查了头部而不是较低版本吗?另外,您是否已完成更新以确保获得最新版本?
在 http://svn.haxx.se/users/archive-2007-01/0170.shtml上就此进行了讨论。
答案 11 :(得分:2)
如果你正在使用github svn网桥,很可能是因为github方面发生了一些变化。解决方案很简单,你只需要运行svn switch
,它可以让它正确找到自己,然后更新,一切都会工作。只需从结帐的根目录运行以下内容
svn info | grep Relative
svn switch path_from_previous_command
svn update
或
svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update
此解决方案的基础来自Lee Preimesberger's blog
答案 12 :(得分:2)
直接在存储库中执行移动。
答案 13 :(得分:2)
至少还有一个原因是消息“过时”错误。在我的例子中,问题是.svn / dir-props是通过运行“svn propset svn:ignore -F .gitignore”创建的。首次。删除.svn / dir-props似乎是一个坏主意并且可能导致其他错误,因此最好使用“svn propdel”来清理错误的“svn propset”。
# Normal state, works fine.
> svn commit -m"bump"
Sending eac_cpf.xsl
Transmitting file data .
Committed revision 509.
# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'
# Edit a file. Should have committed before the edit.
> svn commit -m"bump"
Sending .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating
# Delete the property.
> svn propdel svn:ignore .
property 'svn:ignore' deleted from '.'.
# Now the commit works fine.
> svn commit -m"bump"
Sending eac_cpf.xsl
Transmitting file data .
Committed revision 510.
答案 14 :(得分:1)
尝试直接改变.svn。没有任何帮助,所以这是我的解决方案。
在Eclipse中&gt;窗口&gt;显示视图&gt; 历史记录我看到该文件不是最新版本,但我制作了多个svn“覆盖和更新”/“恢复”/删除文件和结帐。
所以我去了Package Explorer&gt;右键单击文件&gt; 替换为&gt;最新的存储库。
“历史记录视图”中的另一个视图显示该文件现在位于最新版本。
答案 15 :(得分:1)
错误是因为您没有更新该特定文件,首先更新然后只能提交文件。
答案 16 :(得分:1)
将您的服务器和客户端升级到Subversion 1.9。
如果out of date
错误在正常情况下不会随机发生,则在运行commit时,可能表示您使用的是过时且不受支持的Subversion 1.7或更早版本的客户端或服务器。
您应该升级服务器和客户端以解决问题。请参阅相关的Subversion 1.9发行说明条目: "Out of date" errors when committing over HTTPv1 。
答案 17 :(得分:1)
我这样做了,它对我有用:
1.备份文件。您只需将代码复制到文本文件即可
2.右键单击要提交的文件&gt;&gt;团队&gt;&gt;显示历史。
3.在&#34;显示历史&#34;面板您将看到该文件的所有修订版。右键单击文件的最新修订版&gt;&gt;获得修订:它将覆盖您当地的更改
4.现在,将您的代码与备份文件中的最新文件合并(步骤1)。
5.同步并提交新合并的文件。
答案 18 :(得分:1)
&#34;清理&#34;它会让你走上正轨。
右键单击svn文件夹并单击“清理”,如果出现该错误,请执行此操作。
答案 19 :(得分:1)
如果曾经通过简单地签出一个新的工作副本并替换.svn目录来解决类似的问题,该目录会使用这个新签出的错误抛出提交错误。我的理由是,在存储库损坏并从备份还原后,工作副本指向已还原的存储库中不存在的修订。还有“项目过期”错误。在提交之前更新工作副本并没有解决这个问题,但是如上所述替换了.svn。
答案 20 :(得分:1)
删除了几个包含某些文件的目录后,我随机收到了这个错误。我通过Netbeans删除了目录,并意识到它实际上没有删除它们。它似乎只删除了目录中的所有内容,并删除了对Netbeans中目录的引用。但它们仍然存在于文件系统中。确保它们已从文件系统中删除并再次尝试提交。
答案 21 :(得分:1)
我将dir移动到我的本地机器上以便保管,然后svn删除了愚蠢的目录,然后提交了。当我尝试从本地机器添加文件夹时,它仍然抛出错误(当我尝试重命名文件夹时,SVN移动做了同样的事情)。所以我还原了,然后我做了一个mkdir DIRNAME,添加并提交了。然后我添加了内容并提交了,并且它有效。
答案 22 :(得分:1)
您是使用svn mv
还是mv
移动它?我认为仅使用mv
可能会导致此问题。
答案 23 :(得分:0)
在我的情况下,只删除本地版本并重新签出新副本是一种解决方案。
答案 24 :(得分:0)
我刚收到此错误。我建议您首先检查您的服务器上是否有原始文件。有时,更改不会在您的本地文件夹中进行。 如果这是您的情况,只需删除您的文件夹并再次结帐。
答案 25 :(得分:0)
要解决这个问题,我需要将问题还原到文件,并更新我的工作副本,之后我再次修改了文件,在这些步骤之后,错误不再发生了。
答案 26 :(得分:0)
我在commit
目录中尝试trunk
时得到了这个。从svn update
目录执行trunk
并未解决错误;但是,从父目录(svn update
目录所属的位置)执行.svn
确实解决了错误。
我对发生的事情的猜测(其中一个用例,可能有多种原因导致这个“svn:E160024:资源过期;尝试更新”):一直到trunk
,有一个{{ 1}}目录。我从GitHub中将branches
拉入branches/branch-1
。除master
之外,从父目录(即我的工作副本的根目录)而不是svn update
执行trunk
似乎已在branches
中执行了某些操作。当我再次尝试trunk
时,没有错误。
然而,正如我上面所说,这可能是许多其他案例之一。
旁注:与某人建议的不同,我不相信在commit
目录中手动播放是个好主意。
答案 27 :(得分:0)
我在尝试提交某些文件时遇到此错误,只是它是我工作副本中不存在的文件/文件夹。我真的不想经历移动文件和重新检查的麻烦,最后,我最终编辑了.svn / entries文件并删除了有问题的目录引用。
答案 28 :(得分:0)
当我使用来自主干的文件更新早期版本的分支时发生这种情况。我使用Windows资源管理器从我的trunk checkout文件夹中复制文件夹,然后将它们粘贴到我发布分支checkout文件夹的Eclipse视图中。现在Windows资源管理器配置为不显示以“。”开头的“隐藏”文件,因此我忘记了所有不正确的.svn文件被粘贴到我的发布分支checkout文件夹中。卫生署!
我的解决方案是吹走受损的Eclipse项目,再次检查它,然后更仔细地复制新文件。我还更改了Windows以显示“隐藏”文件。
答案 29 :(得分:-1)
更有意思的是:
1)我将修改代码复制到记事本中。 2)接下来,更新文件。 3)在更新的文件中复制记事本的代码。 4)在svn中提交。