首先介绍一下背景:
我正在使用来自远程 SVN 存储库的“基本”代码,不受我的控制。代码还没有标记,所以我总是需要跟上主干。
由于多种原因(最重要的是我们对代码的本地扩展具有“利基”性质,并且旨在解决使用代码的项目的特定问题)我无法使用远程存储库对我在本地所做的任何修改进行版本控制。
我有一个本地 SVN 存储库,目前正在其中进行“本地”版本控制。
我面临的问题:我不知道是否有一种好方法可以使代码同时与两个存储库同步。也就是说,我想保留“远程”版本信息(以便我可以在将来的更改中合并),但我也想同时拥有“本地”版本信息(即在同一目录结构中) 。
目前我正在使用两个不同的目录来执行此操作,两个目录都包含相同的代码,但每个目录都包含不同的版本控制信息。显然这是相当大的开销,尤其是两个目录中的代码需要独立同步。
有没有办法在颠覆中做到这一点?或者您对解决这个问题的替代方法有什么建议吗?
我使用 git svn 完成此操作,并在 git 存储库中完成开发。远程开发是在subversion中完成的。我制作了 subversion 存储库的 git svn 克隆,并将其推送到真正的 git 存储库。 cronjob 时不时地运行“git svn rebase && git push”来创建 subversion 存储库的 git 镜像。
为了合并 subversion 更改,我的本地 git 副本中有 2 个遥控器 - “本地开发”原点和“来自 subversion 镜像”原点。每当我觉得需要时,我都可以将 subversion 镜像中的更改合并到我们的开发树中。本地更改不受影响,它们分开存在并且不会弄乱 svn 镜像。
I used 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)