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-但是,我建议您无论如何都要进行一轮麻烦的备份,以防万一