先介绍一下背景:
我正在使用远程SVN存储库中的"基本"代码,而不是我的控制.代码没有标记(但),所以我总是需要跟上主干.
出于多种原因(最重要的是我们对代码的本地扩展具有"利基"性质,并且旨在解决使用代码的项目的特定问题)我无法使用远程存储库对我在本地制作的任何修改进行版本控制.
我有一个本地SVN存储库,我正在进行"本地"版本控制.
我遇到的问题:我无法弄清楚是否有一个好的方法让代码同时与两个存储库同步.也就是说,我想保留"远程"版本信息(以便我可以在将来的更改中合并),但我也希望同时拥有"本地"版本信息(即,在相同的目录结构中) .
目前,我正在使用两个不同的目录执行此操作,这两个目录都包含相同的代码,但每个目录包含不同的版本信息.显然这是一个相当大的开销,特别是因为两个目录中的代码需要独立同步.
有没有办法在颠覆中做到这一点?或者你有关于接近这个的替代方法的建议吗?
我使用git svn完成了这项工作,我的开发是在git存储库中完成的.远程开发是在颠覆中完成的.我制作了一个subversion存储库的git svn克隆,我推送到一个真正的git存储库.cronjob不时运行"git svn rebase && git push"来创建subversion repo的git镜像.
为了合并subversion更改,我在本地git副本中有2个遥控器 - "本地开发"源和"来自subversion镜像"的起源.每当我觉得有需要时,我可以将subversion镜像中的更改合并到我们的开发树中.本地更改不会受到影响,它们会分开并且不会弄乱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