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