我使用 git svn 完成了这项工作,我的开发是在 git 存储库中完成的。远程开发是在颠覆中完成的。我制作了 subversion 存储库的 git svn 克隆,并将其推送到真正的 git 存储库。一个 cronjob 不时地运行“git svn rebase && git push”来创建一个颠覆 repo 的 git 镜像。
为了合并颠覆更改,我在本地 git 副本中有 2 个遥控器 - “本地开发”来源和“来自颠覆镜像”的来源。每当我觉得需要时,我可以将颠覆镜像中的更改合并到我们的开发树中。本地更改不受影响,它们分开并且不会弄乱 svn 镜像。
我使用gitosis来设置和管理 git 存储库。步骤将是这样的(根据记忆,可能是错误的):
# set up the mirror
git svn clone -s $SVN
git remote add origin git@$MACHINE:svnmirror.git
git push
# + cron job to do git svn rebase && git push every N hours/minutes
# set up the local working copy for development
git clone git://$MACHINE/svnmirror.git
# that's an anonymous, read only clone
# no push to the svn mirror for developers - only cronjob user can push there
git remote add newproject git@$MACHINE:myproject.git
git push newproject
# now do the real deal
git clone git://$MACHINE/myproject.git
# hack hack hack
git push # origin master not needed
git remote add svnmirror git://$MACHINE/svnmirror.git
git merge svnmirror/master
git push