ローカル マシンには、いくつかのプロジェクトによってインポートされる共通のスクリプトがあります。
/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
ただし、これは非常に冗長であり、sub-x チェーンを介して変更を伝播するのは面倒です。プロジェクトおよび共通ファイルへの更新をプルする機能を保持しながら、上記のターゲット ディレクトリ構造を実現するにはどうすればよいですか? 価値があるのは、サブツリー/サブモジュールの変更を上流にプッシュする必要があるとは思わないことです。
両方の OS で独立した構成を必要としないクロスプラットフォーム (Windows-UNIX) ソリューションのボーナス。Git ベースのソリューションが望ましい。