SVN陷入破碎状态

时间:2012-01-13 16:27:11

标签: svn

我最近做了svn add Foo/失败,因为有一个名为Foo/.svn的文件(不是目录)

没有真正思考,我做了rm Foo/.svn; svn add Foo/

这失败是因为“Foo已经受版本控制”,尽管svn status显示

~ Foo

而不是

A Foo

因此我不能svn commitsvn add --force Foo/无效。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

如果您确认Foo的.svn内容,您可以在条目中看到它。这意味着它已经有点保存在Svn本地数据库中,即使它未能将其.svn数据库放入Foo中。

svn revert Foo强制Svn将其从条目中删除。

如果您现在要求提供状态,那么您的目录将是

?       Foo

然后,您可以重试svn add它,它会起作用。

答案 1 :(得分:0)

尝试对该目录进行更新,以便在执行rm之前将工作副本恢复到该状态。

答案 2 :(得分:0)

您可以重命名Foo/所在的目录。然后执行svn up并手动合并您的更改。然后,您可以添加Foo/目录。

答案 3 :(得分:0)

由于您刚刚删除了仅包含元数据的Foo/.svn,因此您对Foo/中文件的本地更改仍然存在,您可以按照以下步骤保留所有更改并修复损坏的工作副本:

  1. svn info要获取工作副本的修订号,您会看到类似的内容  Revision: 94168
  2. mv Foo Foo.bak备份broken Foo目录
  3. svn up -r 94168 Foo要从远程存储库重新检出Foo,请将94168替换为您的实际修订号
  4. rsync -av --exclude='.svn' Foo.bak/ Foo/使用先前备份的Foo.bak中的文件覆盖新检出的Foo /,但保留正确的.svn元数据。
  5. svn status Foo,然后您应该看到所有本地更改(如果您确实进行了更改)到Foo
  6. 不应该进行内部文件合并。