我们已将大部分代码库从单一svn
存储库移至一组git
存储库。由于各种原因,一些工作(在现场部署的旧版本项目上)必须在旧svn
分支中继续,在它们被移动到git
并从 subversion 中删除之后trunk
。
我刚刚在一个svn
分支上做了一些这样的工作,并通过执行以下操作将存储库中的更改重新应用到svn
存储git
库中:
cd <common_svn_commit_root>
svn diff -r 12344:12345 > ~/r12345.diff
gedit ~/r12345.diff
cd <common_git_commit_root>
git apply ~/r12345.diff
但是对于每次svn
提交都执行此操作相当麻烦,尤其是在gedit
步骤中,我必须手动将svn
路径转换为git
路径(通常通过在顶级目录名称前加上前缀)。
尝试到目前为止提出的一些选项的一个问题是旧svn
回购和新git
回购的结构不同。这是我必须编辑补丁文件的原因之一。
旧的目录结构是
svn
configurations
blah
mine
blam
plugins
foo
core
mine
bar
鉴于新结构是
svn
plugins
bar
git
my_git
my_config
plugins
mine
core_git
plugins
core
foo_git
plugins
foo
我真的很想知道是否有更简单的方法来做到这一点,并了解这种情况下的最佳做法是什么。