当前位置:  开发笔记 > 开发工具 > 正文

将代码与两个subversion存储库同步

如何解决《将代码与两个subversion存储库同步》经验,为你挑选了1个好方法。

先介绍一下背景:

我正在使用远程SVN存储库中的"基本"代码,而不是我的控制.代码没有标记(但),所以我总是需要跟上主干.

出于多种原因(最重要的是我们对代码的本地扩展具有"利基"性质,并且旨在解决使用代码的项目的特定问题)我无法使用远程存储库对我在本地制作的任何修改进行版本控制.

我有一个本地SVN存储库,我正在进行"本地"版本控制.

我遇到的问题:我无法弄清楚是否有一个好的方法让代码同时与两个存储库同步.也就是说,我想保留"远程"版本信息(以便我可以在将来的更改中合并),但我也希望同时拥有"本地"版本信息(即,在相同的目录结构中) .

目前,我正在使用两个不同的目录执行此操作,这两个目录都包含相同的代码,但每个目录包含不同的版本信息.显然这是一个相当大的开销,特别是因为两个目录中的代码需要独立同步.

有没有办法在颠覆中做到这一点?或者你有关于接近这个的替代方法的建议吗?



1> richq..:

我使用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

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有