我最近做了svn add Foo/
失败,因为有一个名为Foo/.svn
的文件(不是目录)
没有真正思考,我做了rm Foo/.svn; svn add Foo/
这失败是因为“Foo已经受版本控制”,尽管svn status
显示
~ Foo
而不是
A Foo
因此我不能svn commit
。 svn add --force Foo/
无效。
我该如何解决这个问题?
答案 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/
中文件的本地更改仍然存在,您可以按照以下步骤保留所有更改并修复损坏的工作副本:
svn info
要获取工作副本的修订号,您会看到类似的内容
Revision: 94168
mv Foo Foo.bak
备份broken
Foo目录svn up -r 94168 Foo
要从远程存储库重新检出Foo,请将94168
替换为您的实际修订号rsync -av --exclude='.svn' Foo.bak/ Foo/
使用先前备份的Foo.bak中的文件覆盖新检出的Foo /,但保留正确的.svn元数据。svn status Foo
,然后您应该看到所有本地更改(如果您确实进行了更改)到Foo 不应该进行内部文件合并。