0

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

因此,当我执行 svn up 时,它实际上是从 5 个不同的存储库中提取的。这意味着我不能简单地执行 git svn clone,因为创建整个应用程序需要这 5 个存储库中的每一个。现在,如果我有任何权力来改变这一点,我会......但与此同时,我将能够进入已签出的应用程序并执行“git init”/“git add”。等等,只是欺骗 git 认为它是一个巨大的回购?那么到commit的时候使用svn命令commit呢?

谢谢你的帮助!

4

1 回答 1

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

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

于 2012-12-17T16:39:56.587 回答