使用git在本地保存代码到多个SVN存储库中

时间:2012-02-09 12:54:49

标签: git svn git-svn

我正在开发一个有两个SVN存储库的项目。一个用于外部使用,我们与项目合作伙伴接口,另一个用于纯粹内部使用。

我有一个存储在外部存储库中的文件夹(src)。我的愿望是将代码保存在内部存储库的第二个src文件夹中,以便能够在内部提交,并且当代码稳定时,提交到外部存储库。

除此之外,我想使用git在我的机器上本地管理代码。

为此,我查看了git-svn。

有人能解释管理这个的最佳方法吗?我倾向于为每个svn repo(localsvn和externalsvn)创建一个分支,并使用local作为默认值,当我想提交它时合并到外部,并保持git在后台运行。

2 个答案:

答案 0 :(得分:0)

我目前解决这个问题的方法是拥有两个独立版本的代码。分支系统对我来说没有用。

我有一个用于远程仓库的版本,使用git-svn进行管理,还有一个本地仓库版本,也使用git-svn进行管理。当我想从本地移动到远程,或者反之亦然时,我只需用脚本移动代码,然后合并,最后上传。

答案 1 :(得分:0)

这应该是可行的,但您需要使用git svn的一个更深奥的功能:-R(远程名称选项)。

正常使用git svn为本地代码创建git svn init存储库,然后查看.git/config文件。会有一个名为[svn-remote "svn"]的部分。复制整个部分,将其重命名为[svn-remote "external"],编辑url字段以指向外部存储库,并更新其他字段以为其指定唯一名称。

在完成后,我希望配置文件的相关部分看起来像这样:

[svn-remote "svn"]
    url = http://local.svn/repository/root
    fetch = trunk:refs/remotes/trunk
    branches = branches/*:refs/remotes/*
    tags = tags/*:refs/remotes/tags/*
[svn-remote "external"]
    url = http://external.svn/repository/root
    fetch = trunk:refs/remotes/ext-trunk
    branches = branches/*:refs/remotes/ext-*
    tags = tags/*:refs/remotes/tags/ext-*

如果你现在进行git svn次操作,它将从本地存储库中获取。如果添加-Rexternal,您将改为使用外部存储库。要进行初始提取,您需要运行以下两个方法:

git svn fetch
git svn fetch -Rexternal