git svn repo 重命名后,svn 将不再变基

git svn wont rebase anymore after svn repo renaming

我最近通过 git-svn 重命名了我正在使用的 svn 存储库。我想如果我重命名我的 git 项目所在的文件夹并将 git 配置更新为 url = svn://foo/bar 到新名称它就可以工作,但是我得到以下错误:

Unable to determine upstream SVN information from working tree history

还有什么要做,让它重新工作??

SVN 存储库的名称是 git svn id 的一部分(因此也是提交哈希的一部分),因此您不能只重命名您的 svn remote。

解决此问题的最简单方法是再克隆一次 svn 存储库,并重播所有未提交到旧存储库的更改:

/tmp/oldclone$ git format-patch origin/trunk
/tmp/oldclone$ cd /tmp
/tmp$ git svn clone svn:/new.remote/ newclone
/tmp$ cd newclone
/tmp/newclone$ git am /tmp/oldclone/????-*.patch
/tmp/newclone$ git svn dcommit

至于在单个 SVN 存储库中跟踪 svn rename 目录,您可以使用 --trunk 选项来实现。 假设您最初在存储库的 root 中有一个目录 /project1/,并且您将其重命名为 /projectA/(使用 svn mv project1 projectA 之类的东西),您可以对包含完整历史记录的存储库进行部分检查,例如:

/tmp$ git svn clone --trunk=/ svn:/new.remote/ newclone