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
我最近通过 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