在本地机器上,我有几个项目导入的通用脚本,例如:
/common/
.git/
scripts/
common1.py
/projectA/
.git/
scripts/
A1.py (imports from common1.py)
/projectB/
.git/
scripts/
B1.py (imports from common1.py)
公共(public)脚本和项目在单独的 git 存储库中进行跟踪。这对我的个人工作很有效,因为我可以克隆所有需要的 repo 协议(protocol)。当通过 git 公开项目时,我可以通过子树或子模块包含公共(public)文件(对公共(public)文件的引用显然在 B1.py 中更新):
/projectB/
.git/
scripts/
common/ (subtree from common)
common1.py
B1.py
现在我想组装一个 super 项目(目标):
/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
然而,这是相当多余的,并且通过 sub-x 链传播更改将是乏味的。如何在保留对项目和公共(public)文件进行更新的能力的同时实现上述目标目录结构?对于它的值(value),我不希望需要将子树/子模块更改推到上游。
不需要在两个操作系统上进行独立配置的跨平台 (Windows-UNIX) 解决方案的好处。首选基于 Git 的解决方案。
最佳答案
由于您不必将那些子树/子模块内容推回,您可以考虑symlink those folders into common/
:
- 通过符号链接(symbolic link)那些子树/子模块的每个文件。
- 或使用 aufs-tools ,应该允许“unite several directories into a single virtual filesystem”。
关于Git:一个文件夹中有多个子树/子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903474/