2011-07-15 72 views
2

我想跟踪一个git仓库中的几个Subversion仓库。我设法让git svn将所有Subversion版本库提取到他们自己的远程分支中。所以现在如何将几个Subversion远程合并到一个主分支

$ git branch -a 
master 
remotes/svn/Project1 
remotes/svn/Project2 
remotes/svn/Project3 

这似乎很好。现在我想将所有这些分支合并到master中,但在子目录中,因为它们都包含类似的命名文件。我试图检出一个分支,将这些文件移动到一个子目录中,提交然后合并到主文件中。但是这会导致错误:

remote: error: refusing to update checked out branch: refs/heads/CPSP 
remote: error: By default, updating the current branch in a non-bare repository 
... 

什么是正确的方式来归档这个?需要明确的是,我想用一个看起来像这样的存储库,以结束:

Project1/ 
Project2/ 
Project3/ 

只是为了清楚,这些目录不颠覆仓库存在。

我打算只跟踪颠覆储存库,不承诺他们(虽然这将是很好的) Tnx!

+0

尝试[子树合并策略](http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories)。 –

+0

看起来像[this]的副本(http://stackoverflow.com/questions/2386662/git-put-a-branch-in-a-subdirectory) – Andy

回答

0

我害怕通过简单的git操作,你将无法实现这一点。

如果你认为git存储库是一个内容树,在任何时候它只能有一个快照。所以如果你在不同的远程分支下映射多个svn仓库,你将永远不会同时看到它们。

如果你真的想看到的文件夹在同一类型,下面的方法可能减轻你的痛苦一点点:

  1. 创建父文件夹
  2. 创建PROJECT1文件夹
  3. 进入PROJECT1文件夹和克隆这里的svn库
  4. 所有你想跟踪
  5. 回到父文件夹的项目做同样的
  6. 创建一个批/脚本去每个项目和拉svn内容

通过上面的方式,实际上你有完全访问svn,甚至提交。缺点是你不能直接从父文件夹使用任何git命令。

相关问题