は、私は、スタンドアロンで使用することができるライブラリCommon
を持っており、プロジェクトP1
とP2
で使用されているので、私が作るときに私が欲しい木が共有のgitのサブモジュールで作業ツリー
/Common/.git
...
/P1/.git
.gitmodules # points to remote server
Common/
...
/P2/.git
.gitmodules # points to remote server
Common/
...
のように見えるとし/Common
が変更されました。コミットする前にP1
とP2
を使用してテストすることができます。通常のgit submodule
コマンドセットでは、/Common
からコミットし、リモートにプッシュしてから、/P1/Common
と/P2/Common
の両方からプルする必要があります。コミットが何かを壊した場合、悪い変更が既に公開されているため、修正することはできません。あるいは、/P?/Common
からgit remote add quicktest /Common
をリモートサーバーに触れることなくプルできるようにすることもできます。しかし、これには矛盾する機会がたくさんあり、/P?/Common
から壊れたコミットを取り除くのが汚いので、/Common
に修正することができます。
私は開発中に、/Common
から作業ツリーがP1
とP2
によって使用される、ということではなくだろうが、git submodule
がディレクトリからのような別のシンボリックリンクを認識するので、私は/Common
に/P1/Common
シンボリックリンクを作成することはできません。ほとんどのファイルシステムでは、ハードリンクディレクトリは許可されていません。私は、新しいファイルがこのプロセスを繰り返す必要がある。その場合には/Common
に追加されるまではかなりうまく機能
rm -rf /P1/Common
cp -rl /Common /P1/Common
を使用して、すべてのファイルをハードリンクすることができます。両方
- にエレガントな方法は私が簡単に
P1
とP2
と/Common
仕事でその変更をテストすることができますが、エンドユーザーのために働いてgit clone --recursive git://remote/P1.git
を維持し、 - ですか?
サブモジュールでgit worktree機能(git 2.5以降)を試してみてください。そして、[この回答](https://stackoverflow.com/questions/27379818/git-possible-to-use-same-submodule-working-copy-by-multiple-projects/44649319#44649319)を参照してください –