在本地使用Git和构成应用程序的多个SVN repos

时间:2012-12-17 16:35:36

标签: git svn git-svn

好的,这是我的问题。我的工作使用SVN。我想在本地使用Git。使用git svn似乎非常简单但是我的工作投入了一点点因为他们确实使用了5个不同的SVN repo进入一个完整的结账。

所以,当我做svn up它从字面上拉出5个不同的回购。这意味着我不能简单地执行git svn克隆,因为创建整个应用程序需要这5个repos中的每一个。现在,如果我有任何改变它的能力,我会...但同时我将能够进入已检出的应用程序,只需执行“git init”/“git add”。等等,只是欺骗git思考它的一个巨大的回购?然后在提交时使用svn命令提交?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

git-svn没有支持这样做。您可以编写一个简单的bash脚本来为您执行提交/变基,但老实说,我建议您在更新或提交SVN存储库时出现问题时手动执行。

当我遇到这个问题时,我将存储库克隆到一个目录中,然后在主项目和外部存储库之间创建符号链接。

也就是说,让我说我有结构:

/main-project
  /external-repo-1
  /external-repo-2
  /external-repo-3
  ...etc

我这样做:

# Create the unified project directory
mkdir LocalProject
cd LocalProject
# Clone the main project
git svn clone svn+ssh://svnserver/main-project
# Find out where all the external repos are
cd main-project
git svn show-externals
cd -
# Clone the sub-repos
git svn clone svn+ssh://svnserver/external-repo-1
git svn clone svn+ssh://svnserver/external-repo-2
git svn clone svn+ssh://svnserver/external-repo-3
...etc
# Create the symlinks
cd main-project
ln -s ../external-repo-1
ln -s ../external-repo-2
ln -s ../external-repo-3
...etc

警告:我认为这是不言而喻的,但请确保您不会将符号链接提交到您的回购。