如何克服svn“过时”错误?

如何克服svn“过时”错误?

How do you overcome the svn 'out of date' error?

我一直试图在Subversion中将目录结构从一个位置移动到另一个位置,但是出现Item '*' is out of date提交错误。

我已经签出了最新版本(据我所知)。 svn st -u除了mv命令外没有其他区别。


我有时在Windows上使用TortoiseSVN来获得此功能。对于我来说,解决方案是svn update目录,即使没有要下载或更新的修订版。它对元数据起到了一定作用,从而神奇地对其进行了修复。


在尝试了所有明显的操作以及此处的一些其他建议之后,没有任何运气,谷歌搜索导致了此链接(该链接不再起作用)-Subversion说:您的文件或目录可能已过期

简而言之,诀窍是转到.svn目录(在包含有问题的文件的目录中),然后删除" all-wcprops"文件。

什么也没做就为我工作。


我相信此问题来自.svn文件。在旧父母,新父母或旧父母中这都不正确。我会尝试回到您的起点。使用导出获取文件夹的干净副本。将干净副本移动到新位置,然后使用添加和删除进行移动。这是手动执行SVN的操作,但它可能有效。


我发现这对我有用:

1
2
3
svn update
svn resolved <dir>
svn commit


试图更新本地副本,并还原有问题的项目,但仍然出现"过期"错误。这样做是出于某种原因:

1
svn update --force /path/to/dir/or/file

我只是在几个文件夹中遇到了同样的问题,这就是我要提交的内容:

1)在"团队同步"透视图中,右键单击文件夹>覆盖和更新
2)再次删除文件夹
3)付出并快乐


谢谢。这就为我解决了。
svn update --force /路径到文件名/

如果本地目录中的最新文件相同,则不会出现提示。如果文件不同,则会提示输入tf,mf等...选择mf(我的文件已满)可确保没有内容被覆盖,并且在完成后可以提交。

松鸦
电脑


我设法通过点击更新按钮来解决


就像@ Alexander-Klyubin建议的那样,在存储库中移动。它还将更快,尤其是如果您要移动大量数据时,因为您不必再??次通过网络传输所有这些数据。

1
svn mv https://username@server/svn/old/ https://username@server/svn/new/

应该很好


使用以下方法删除文件或路径
在执行命令之前,先进行更改

1
sudo rm -r /path/to/dir/

之后:

1
svn up and commit or delete

如果您使用的是github svn桥,则可能是因为github方面的事情有所改变。解决方案很简单,您只需要运行svn switch,它就可以正确地找到自己,然后进行更新,一切将正常进行。只需从结帐的根目录运行以下命令

1
2
3
svn info | grep Relative
svn switch path_from_previous_command
svn update

要么

1
2
svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

该解决方案的基础来自Lee Preimesberger的博客


直接在存储库中执行移动。


消息"过期"错误至少还有其他原因。在我的情况下,问题是.svn / dir-props,它是通过运行" svn propset svn:ignore -F .gitignore"创建的。首次。删除.svn / dir-props似乎是一个坏主意,并且可能导致其他错误,因此最好使用" svn propdel"来清理错误的" svn propset"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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.

您确定您已经检查了标题,而不是较低版本吗?另外,您是否进行了更新以确保拥有最新版本?

在http://svn.haxx.se/users/archive-2007-01/0170.shtml上对此进行了讨论。


尝试了所有内容,但直接更改了.svn。没有任何帮助,所以这是我的解决方案。

在Eclipse>窗口>显示视图>历史记录中,尽管我做了多个svn" Override&Update" /" Revert" /删除文件并签出,但我看到该文件不是最新的修订版。

因此,我进入了程序包资源管理器>右键单击文件>替换为>来自存储库的最新消息。

历史记录视图中的另一个外观显示该文件现在处于最新修订版中。


错误是因为您没有更新该特定文件,而是先更新然后才可以提交该文件。


将服务器和客户端升级到Subversion 1.9。

如果out of date错误在正常情况下不应随机发生,则在运行commit时,它可能表明您使用的是过时且不受支持的Subversion 1.7或更旧的客户端或服务器。

您应该升级服务器和客户端以解决该问题。请参见相关的Subversion 1.9发行说明条目:通过HTTPv1提交时出现"过时"错误。


您是使用svn mv还是仅使用mv移动它?我认为仅使用mv可能会导致此问题。


我将目录移到我的本地机器上进行安全保存,然后svn删除了愚蠢的目录,然后提交了。当我尝试从本地计算机添加文件夹时,它仍然抛出错误(当我尝试重命名文件夹时,SVN移动执行了相同的操作)。所以我还原了,然后我做了一个mkdir DIRNAME,添加并提交。然后,我在其中添加了内容并提交,它起作用了。


如果曾经解决过类似的问题,只需简单地签出一个新的工作副本并替换为.svn目录,并使用此新签出的副本抛出提交错误。在我的情况下,原因是在存储库损坏并从备份还原后,工作副本指向的是还原的存储库中不存在的修订。还出现"项目过时"错误。在提交之前更新工作副本并不能解决此问题,但是如上所述替换.svn可以解决此问题。


我这样做了,对我有用:
1.备份您的文件。您可以简单地将代码复制到文本文件中。
2.右键单击要提交的文件>>团队>>显示历史记录。
3.在"显示历史记录"面板中,您将看到该文件的所有修订版。右键单击文件的最新修订>>获取修订:它将覆盖您的本地更改。
4.现在,将您的代码与具有备份文件的最新文件合并(步骤1)。
5.同步并提交新合并的文件。


在删除一些包含一些文件的目录后,我随机收到此错误。我通过Netbeans删除了目录,并意识到它实际上并没有删除它们。似乎只是删除目录中的所有内容,并删除了Netbeans中对该目录的引用。它们确实仍然存在于文件系统上。确保它们已从文件系统中删除,然后再次尝试提交。


"清理"它将使您步入正轨。

右键单击svn文件夹,然后单击"清理",如果出现该错误,请执行此操作。


我刚收到这个错误。我建议您首先检查服务器上是否有原始文件。有时,这些更改不是在您的本地文件夹中进行的。
如果是这种情况,只需删除您的文件夹并再次签出即可。


当我使用主干中的文件更新了较早版本的分支时,发生了这种情况。我使用Windows资源管理器从主干结帐文件夹中复制文件夹,并将其粘贴到发行分支结帐文件夹的Eclipse视图中。现在,Windows资源管理器已配置为不显示以"。"开头的"隐藏"文件,因此我没有将所有不正确的.svn文件粘贴到发行分支签出文件夹中。卫生署!

我的解决方案是删除损坏的Eclipse项目,再次将其检出,然后更仔细地复制新文件。我还更改了Windows以显示"隐藏"文件。


当我尝试从trunk目录中commit时,才得到此消息。从trunk目录执行svn update不能解决该错误;但是,从父目录(.svn目录所属的目录)执行svn update确实解决了该错误。

我对发生的事情的猜测(其中一个用例可能是" svn:E160024:资源已过期;请尝试更新"的多种原因):在trunk处,还有一个branches目录。我从GitHub将branches/branch-1拉入master。从父目录(即我的工作副本的根目录)而不是trunk进行svn update似乎除了trunk之外还在branches中做了一些事情。当我再次尝试commit时,没有错误。

但是,正如我上面所说,这可能是许多其他情况中的一种。

旁注:与其他人的建议不同,我认为在.svn目录中手动播放不是一个好主意。


只需将svn升级到命令行,或者如果您在Windows中,请选择svn更新选项。

  • 完成此操作后,您就可以进行其他操作,例如提交和执行其他操作。

为了解决该问题,我需要恢复有问题的文件,并更新我的工作副本,然后我再次修改了该文件,在执行了这些步骤之后,该错误不再发生了。


就我而言,仅删除本地版本并重新签出新副本是解决方案。


尝试提交某些文件时出现此错误,只是它是我的工作副本中不存在的文件/文件夹。我真的不想经历移动文件和重新签出的麻烦,最后,我最终编辑了.svn / entries文件并删除了令人讨厌的目录引用。


更麻烦的是:

1)我将我的修改代码复制到记事本中。
2)接下来,更新文件。
3)将记事本的代码复制到更新的文件中。
4)提交svn。


推荐阅读