请有:
有不同的存储库repoA,repoB和repoC各自遵循相同的目录布局原则,这些原则要合并到第三个repoM的工作目录(“主”项目)。
repoM有一个非典型的设置( - work-dir和--git-dir是sepparate)。 repo [A-C]被克隆为裸,它们被设置为core.bare = false
和core.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
,我已经将它用作可能解决的问题类型的暗示。