使用git将项目分层

时间:2012-08-05 18:29:14

标签: linux git shell

请有:

有不同的存储库repoA,repoB和repoC各自遵循相同的目录布局原则,这些原则要合并到第三个repoM的工作目录(“主”项目)。

repoM有一个非典型的设置( - work-dir和--git-dir是sepparate)。 repo [A-C]被克隆为裸,它们被设置为core.bare = falsecore.worktree=<--work-dir-of-repoM>

要求:

我需要始终对repoM的work-dir中所有文件的历史进行概述,这可能来自repo [A-C]。通过这种方法,我失去了所有这些信息。

替代:

我一直在考虑使用git-subtree(git version 1.7.11.2,所以它已经内置了),让repo [A-C]裸露,然后

  • git pull -s subtree
  • git subtree ...

使用子树拉策略,我失去了合并冲突的历史记录(git blame这样说)。

我之前从未使用过子树,但根据我的理解,不可能将repo [A-C]中的文件合并到repoM的work-dir中,这些文件必须放入repo [A-C]的子目录中。这绝对不是我需要的。 为什么?由于以下原因......

问题陈述:

您有不同的git存储库,每个存储库包含不同的文件集,通常是配置文件和一些shell脚本。您希望将所有这些存储库中的所有内容放在$HOME(即<--work-dir-of-repoM>)目录中。您应该能够随时查看每个文件的来源,编辑,提交并将更改推送到每个文件的origin。你已经猜到了它,它类似于vundle,但是对于任何程序的任何配置都是通用的,而不仅仅是 vim bundle 。如果发生冲突,应该能够追踪同一文件的两位作者需要彼此联系并进行交易(如果需要进行交易)。

这是一个开源项目我试图让原型工作,所以任何帮助都非常感谢。此外,对于以类似方式执行此操作的已有项目的想法也受到高度赞赏。

注意:“主目录”不一定必须是$HOME,我已经将它用作可能解决的问题类型的暗示。

1 个答案:

答案 0 :(得分:0)

为什么不在您的“主项目”中简单地使用Git Submodules