在本地使用 Git 和多个 SVN 存储库组成应用程序



好的,这是我的问题。我的工作使用SVN。我想在本地使用 Git。使用 git svn 似乎很简单,但我的工作有点麻烦,因为他们实际上使用了 5 个不同的 SVN 存储库,这些存储库进入一个完整的结帐。

因此,当我做 svn 时,它实际上是从 5 个不同的存储库中提取的。这意味着我不能简单地做一个 git svn 克隆,因为创建整个应用程序需要这 5 个存储库中的每一个。现在,如果我有任何权力来改变这一点,我会......但与此同时,我是否能够进入签出的应用程序并只做一个"git init"/"git add ."等,然后欺骗 git 认为它是一个巨大的存储库?然后在需要提交时使用 svn 命令提交?

感谢您的帮助!

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

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

最新更新