次の構造を示すプロジェクトを最適に処理し、バージョン管理するためのアドバイスをいくつか得たいと思います。
親プロジェクト (多くのプロジェクト間で共有) から、特定のディレクトリ構造とファイルを取得する必要があります。
.
|-- modules/
| |-- file_1_parent.py
|
|-- controllers/
|-- file_2_parent.py
この親プロジェクトから、ディレクトリにファイルを追加するいくつかの子の依存関係が派生します。
状況は次のようになります (ファイル/ディレクトリが属するプロジェクトの名前は括弧内にあります)。
.
|-- modules/ (parent project)
| |-- file_1_parent.py (parent project)
| |-- file_1_child.py (child project)
|
|-- controllers/ (parent project)
|-- file_2_parent.py (parent project)
|-- file_2_child.py (child project)
具体的に言うと、私の場合、親プロジェクトは web2py/django プロジェクトであり、そこからいくつかのサブプロジェクトを派生させたいと考えています。
問題は今、
- 各プロジェクトのバージョン管理方法は?
- 親プロジェクトと子プロジェクトのリポジトリを別々に用意する必要がありますか?
- 親プロジェクトをある種のパッケージ/ライブラリとして扱う必要がありますか?
私は次のアプローチについて考えました:
git submodule
orの使用git subtrees
: 親プロジェクトから必要な非常に厳格なディレクトリとファイル構造のため、それは機能しません- ローカル プロジェクトの複数
git remotes
、つまり 2 つgit origins
、親プロジェクトに 1 つ、子プロジェクトに 1 つ: このソリューションに反対するのは、プロジェクトをどこかにデプロイするために、単純に実行するだけではなくgit clone
、複数を手動で設定する必要があることgit remote -v origin
です。 - 親プロジェクトをライブラリとして扱い、これをパケット マネージャー経由でインストールしてから、インストールされたファイルを子リポジトリ内にバージョン管理するか、次の場所に配置します
.gitignore
。それを実現するためのツール。おそらく、次のようなコマンドを使用して github リポジトリから特定のバージョンをインストールできるツールが存在します。some_paket_manager install path/to/git/repo==v.0.0.9
- 親プロジェクトからのファイルのコピー & ペースト: その手作業を避けようとしています。