SVN卡在断开状态

SVN卡在断开状态,svn,Svn,我最近做了一个svn add Foo/,但失败了,因为有一个名为Foo/.svn的文件(不是目录) 没有真正思考,我做了rmfoo/.svn;svn添加Foo/ 此操作失败,因为“Foo已处于版本控制之下”,尽管svn状态显示 ~ Foo 而不是 A Foo 因此,我无法svn提交svn添加--force Foo/没有帮助 如何修复此问题?尝试对该目录进行更新,以将工作副本恢复到执行rm之前的状态。如果确认.svn for Foo的内容,则可以在条目中看到它。这意味着它在某种程度上被保存在S

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

没有真正思考,我做了
rmfoo/.svn;svn添加Foo/

此操作失败,因为“Foo已处于版本控制之下”,尽管
svn状态显示

~ Foo
而不是

A Foo
因此,我无法
svn提交
<代码>svn添加--force Foo/
没有帮助


如何修复此问题?

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

如果确认.svn for Foo的内容,则可以在条目中看到它。这意味着它在某种程度上被保存在Svn local db中,即使它未能将其.Svn db放入Foo中

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

如果您现在询问状态,您的目录将是

?       Foo

然后,您可以重试添加
svn
它,它将正常工作

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

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

  • svn info
    要获取工作副本的修订号,您将看到如下内容
    修订版:94168
  • mv Foo Foo.bak
    备份
    已损坏的
    Foo目录
  • svn up-r 94168 Foo
    要从远程存储库重新签出Foo,请用实际版本号替换
    94168
  • rsync-av--exclude='.svn'Foo.bak/Foo/
    用以前备份的Foo.bak中的文件覆盖新签出的Foo/,但保留正确的.svn元数据
  • svn status Foo
    ,那么您应该看到对Foo的所有本地更改(如果您确实进行了更改)

  • 不应进行内部文件合并。

    这将需要一轮麻烦的备份,因为其他目录中分散了其他更改。我正在寻找一个只涉及
    Foo/
    的解决方案,我不直接使用svn,而是使用tortoise。使用它,您可以更新单个目录。由于它在下面使用svn,我假设可以直接通过命令行进行更新。如果您需要更新“Foo/”而不更新其子项,请使用:--depth empty或--depth files-但是,我建议您无论如何都要进行一轮麻烦的备份,以防万一