svn では、リポジトリを別の svn リポジトリ内の任意のフォルダーにリンクできます。gitに同様の機能があるかどうか疑問に思っていますか? 基本的に、リポジトリ内に git サブモジュールが必要ですが、サブモジュールを、リポジトリ全体ではなく、別の git リポジトリのサブフォルダーへのポインターにしたいと考えています。これは可能ですか?
3 に答える
Git は部分的なチェックアウトをサポートしていないため、サブモジュールは完全なリポジトリを指している必要があります。
Git メール リストのこのスレッドでは、いくつかの背景情報を提供しています。
Panther Software のこの記事ではsvn:externals
、同様の目標 (つまり、Git を使用した複製) を達成しようとしている他の誰かからの洞察を提供しています。
両方のプロジェクトがあなたの管理下にある場合は、関心のある「サブフォルダー」を独自のスタンドアロン リポジトリに分離することをお勧めします。次に、両方のプロジェクトがそれにリンクするサブモジュールを作成できます。
私は同じ問題に遭遇しています。少なくとも、親リポジトリに簡単にプルまたはプッシュできるようにする方法では、git レベルから解決できるようには見えません。
ただし、単純なシンボリック リンクを使用して、この制限を回避できます。
- サブモジュールを別のディレクトリに設定します。
git submodule add http://example.com/repo.git ./submodules/repo
- 必要な場所にサブフォルダーへのシンボリック リンクを作成します。
ln -s ./submodules/repo/subdirectory ./wherever/symlinked_directory
参考文献:
通常、他のプロジェクトのサブフォルダーを抽出しようとしている場合、そのサブフォルダーはそもそも別のプロジェクトである必要があり、両方の親プロジェクトがそれを参照している必要があります。
git subtreeなどのツールを使用して、そのようなサブプロジェクトの履歴を抽出できます。次に、git submodule または git subtree のどちらか好きな方を使用して、サブツリーをプロジェクトにリンクし直すことができます。