2

让有:

有不同的存储库 repoA、repoB 和 repoC,每个都遵循相同的目录布局原则,它们将合并到第三个 repoM 的工作目录(“主”项目)中。

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

要求:

我需要始终对 repoM 的工作目录中所有文件的历史有一个概述,这可能源于 repo[AC]。使用这种方法,我会丢失所有这些信息。

选择:

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

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

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

我以前从未使用过子树,但据我了解,无法将 repo[AC] 中的文件合并到 repoM 的工作目录中,这些文件必须放入 repo[AC] 的子目录中。这绝对不是我需要的。为什么?由于以下...

问题陈述:

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

这是针对我正在尝试使原型工作的开源项目,因此非常感谢任何帮助。对于以类似方式执行此操作的现有项目的想法也受到高度赞赏。

注意: “主目录”不一定是$HOME,我用它作为可能解决问题的提示。

4

1 回答 1

0

为什么不在“主项目”中简单地使用Git 子模块?

于 2012-08-06T12:57:01.173 回答