Git:一个文件夹中有多个子树/子模块?

4
在本地机器上,我有一些常用的脚本,被多个项目所引用,例如:

/common/
  .git/
  scripts/
    common1.py
/projectA/
  .git/
  scripts/
    A1.py (imports from common1.py)
/projectB/
  .git/
  scripts/
    B1.py (imports from common1.py)

常用的脚本和项目是在不同的git存储库中进行跟踪。对于我的个人工作来说,这很好,因为我可以克隆所需的所有存储库。当通过git公开可用的项目时,我可以通过子树或子模块(引用通用文件显然在B1.py中更新)包含通用文件:

/projectB/
  .git/
  scripts/
    common/ (subtree from common)
      common1.py
    B1.py

现在我想组建一个超级项目(目标):
/projectC/
  .git/
  scripts/
    common1.py
    A1.py
    B1.py

使用子树和子模块,我已经实现了以下功能:

/projectC/
  .git/
  scripts/
    common/
      common1.py
    projectA_scripts/ (via subtree)
      A1.py
      common/ (via subtree w/in projectA)
        common1.py
    projectB_scripts/ (via subtree)
      B1.py
      common/ (via subtree w/in projectB)
        common1.py 
    C1.py 

然而,这样做非常冗余,并且通过子级链传播更改将很繁琐。我如何在保留拉取项目和公共文件更新的能力的同时实现上述目标目录结构?值得一提的是,我不希望需要将子树/子模块更改推送到上游。如果可以跨平台(Windows-UNIX)解决方案并且不需要在两个操作系统上进行独立配置,则奖励更多。最好使用基于Git的解决方案。
1个回答

2

有趣的方法 - 肯定可以奏效。我在 OP 中没有提到,但我希望有一个跨平台的 Windows-UNIX 解决方案,不需要在两个操作系统中进行独立配置(如符号链接)。基于 Git 的解决方案是首选。 - metasequoia
@metasequoia 嗯,Windows 也有符号链接 ;) (mklink,需要管理员权限) - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接