我正在开发一个有两个SVN存储库的项目。一个用于外部使用,我们与项目合作伙伴接口,另一个用于纯粹内部使用。
我有一个存储在外部存储库中的文件夹(src)。我的愿望是将代码保存在内部存储库的第二个src文件夹中,以便能够在内部提交,并且当代码稳定时,提交到外部存储库。
除此之外,我想使用git在我的机器上本地管理代码。
为此,我查看了git-svn。
有人能解释管理这个的最佳方法吗?我倾向于为每个svn repo(localsvn和externalsvn)创建一个分支,并使用local作为默认值,当我想提交它时合并到外部,并保持git在后台运行。
答案 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