2011-07-25 71 views
2

我试图使用git submodules与像拓扑:在Git中,我该如何从存储库中获取并获取在该存储库的子模块子repo中提交的所有子模块更改集?

parent_repo 
`-- child_repo 

我们维持主干副本,我们都推和拉离。 (我知道一个星型拓扑结构是没有必要的。我知道你可以从对方拉,而无需通过一个中央资料库反映。)

trunk_child_repo <--+ 
        | 
trunk_parent_repo | 
`-- child_repo -----+ # child_repo will pull from trunk_child_repo by default 

现在我们有充分填充子模块的trunk_parent_repo多个副本。

trunk_parent_repo 
`-- child_repo 

ross_parent_repo 
`-- child_repo 

bob_parent_repo 
`-- child_repo 

joe_parent_repo 
`-- child_repo 

我在ross_parent_repo,我想从bob_parent_repo拉并得到所有鲍勃所做的文件bob_parent_repo以及他致力于他的子模块bob_parent_repo/child_repo的编辑的编辑。

不幸的是,当我做了git pull --recurse-submodules bob_parent_repo,就会从bob_parent_repoross_parent_repotrunk_child_repoross_parent_repo/child_repo

是否有可能有一个很好的,简单的命令来提取Bob在bob_parent_repo中所做的所有变更集以及他在所有子模块中所做的所有变更集?我是否必须编写脚本并遍历.gitmodules文件中的子模块?

回答

2

无需打开.gitmodules;你可以使用git submodule foreach

git pull $BOBS_PARENT_REPO 
git submodule foreach 'git pull $BOBS_PARENT_REPO/$path/.git' 

(这不会对任何子模块-的,子模块的工作,虽然)。

+0

完美。谢谢。 –

+0

我认为在1.7.5中你可以用递归foreach来实现--recursive –

相关问题