異なるプロジェクト間で特定のファイルを共有するには、共有が必要です。したがって、次のようなファイル構造があります。
D:\shared\
D:\shared\files-shared-by-all-projects-here
D:\project1\
D:\project1\project1-specific-files-here
D:\project1\shared <- directory junction to D:\shared
D:\project2\
D:\project2\project2-specific-files-here
D:\project2\shared <- directory junction to D:\shared
私は GIT リポジトリをセットアップしましたがD:\project1
、D:\project2
私の問題は、GIT がジャンクションされていない (つまり、実際のディレクトリ) 内のファイルのみを追跡しているように見えることです。
私は両方のプロジェクトに Visual Studio 2015 を使用していますが、プロジェクトに「連結された」ディレクトリからのファイルがある場合、チーム エクスプローラーの動作が非常に奇妙になります。
- ディレクトリ ジャンクションに存在するファイルをプロジェクトに追加すると、チーム エクスプローラーは、ファイル自体ではなく、コミットする変更のリストにその親ディレクトリ (ジャンクション) のみを表示します。
- すべての変更をコミットすると (つまり、ファイルが追加されます)、ソリューション エクスプローラーはすべてのファイルを追跡およびチェックイン済みとして表示します(ジャンクションに存在し、追加後に保留中の変更のリストに表示されなかったファイルを含む)。
- チェックイン済みとして表示され、junction ディレクトリに存在するファイルを編集すると、チェックアウト済みのように見えます。
- チーム エクスプローラーに戻ると、チェックアウトされたファイルが変更されたファイルの一覧に表示されます。
- ただし、コミットしようとすると、「エラーが発生しました。詳細なメッセージ: 変更はありません。コミットするものはありません。」というメッセージが表示されて失敗します。
- ソリューション エクスプローラーに戻ると、コミットに失敗した変更済みファイルがチェックイン済みとして表示されます。
たとえば、Tortoise GIT を使用してVisual Studio の外部から共有ディレクトリに存在するファイルを明示的に追加する (つまり、 経由で参照するD:\project2\shared\some-shared-file
)ことはできません。
上記はframe
、プロジェクトのルートにあるディレクトリが実際にはジャンクションである新しいテスト プロジェクトで行われました。
ただし、実際のプロジェクトでは状況が少し異なります... たとえば、Tortoise GIT を使用してレポを参照すると、ジャンクションにある共有ファイルが追跡およびチェックインされ、レポの一部として実際に表示されます。ただし、Visual Studio でプロジェクトを開くとすぐに、ソリューション エクスプローラーとチーム エクスプローラーの変更で同じファイルが「保留中の削除」として表示されます。これはVSの癖ですか?
要するに、ディレクトリ ジャンクションに存在するファイルを、通常のファイルと同等のプロジェクトの一部として表示する方法を知りたいだけです。これにより、ファイルが適切にチェックアウトおよびチェックインされ、プロジェクトの一部を形成します (レポの)歴史?