由于我的树中名为.svn的文件夹,svn checkout失败

时间:2013-07-11 18:47:43

标签: git svn version-control

我的问题与此类似但不同: TortoiseSvn error : the same name as the administrative directory

我使用git-svn作为客户端,我有一个测试数据,其中包含数据树中的假.svn文件夹。这得到dcommitt'ed到svn。现在,当我尝试使用svn co签出新的工作副本时,我收到错误:

svn: E155000: Failed to add directory '/MyRepo/TestData/Root/.svn': object of the same name as the administrative directory

我试图删除该文件夹并再次提交。但它没有帮助。

更新

我想出了什么。

我在一个功能分支上,我使用以下命令删除了.svn文件夹(只有一个文件):

git rm /MyRepo/TestData/Root/.svn/file
git commit

然后我切换回我的开发分支,合并了功能分支,最后签入:

git checkout develop
git merge --squash feature
git commit
git svn dcommit

然而,我很惊讶这并没有合并.svn删除更改。 我仔细检查了我的~/.gitignore~/.gitignore_global,repo的.gitignore。他们没有包含.svn,实际上这应该是无关紧要的,因为我的签名一直在.svn文件夹中工作。

有人能解释一下这里发生了什么吗?

更新2

似乎重新检查我的开发分支的git rm更改仍然无法解决问题。 svn co仍然在同一个地方失败并出现同样的错误。

1 个答案:

答案 0 :(得分:4)

我找到了原因和解决方案。

git更改必须删除文件.svn/file。 git自动从本地git仓库中删除.svn文件夹。但文件夹是svn中的一等公民。所以在执行git svn dcommit时没有删除.svn文件夹。

我最终不得不做

svn del http://mysvnserver/MyRepo/TestData/Root/.svn -m "Remove .svn folder"

单独删除该文件夹。之后我可以正常svn co

问题解决了。