6

異なるプロジェクト間で特定のファイルを共有するには、共有が必要です。したがって、次のようなファイル構造があります。

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:\project1D:\project2私の問題は、GIT がジャンクションされていない (つまり、実際のディレクトリ) 内のファイルのみを追跡しているように見えることです。

私は両方のプロジェクトに Visual Studio 2015 を使用していますが、プロジェクトに「連結された」ディレクトリからのファイルがある場合、チーム エクスプローラーの動作が非常に奇妙になります。

  • ディレクトリ ジャンクションに存在するファイルをプロジェクトに追加すると、チーム エクスプローラーは、ファイル自体ではなく、コミットする変更のリストにその親ディレクトリ (ジャンクション) のみを表示します。
  • すべての変更をコミットすると (つまり、ファイルが追加されます)、ソリューション エクスプローラーはすべてのファイルを追跡およびチェックイン済みとして表示します(ジャンクションに存在し、追加後に保留中の変更のリストに表示されなかったファイルを含む)。

git1

  • チェックイン済みとして表示され、junction ディレクトリに存在するファイルを編集すると、チェックアウト済みのように見えます。

git2

  • チーム エクスプローラーに戻ると、チェックアウトされたファイル変更されたファイルの一覧に表示されます。

git3

  • ただし、コミットしようとすると、「エラーが発生しました。詳細なメッセージ: 変更はありません。コミットするものはありません。」というメッセージが表示されて失敗します。

git4

  • ソリューション エクスプローラーに戻ると、コミットに失敗した変更済みファイルがチェックイン済みとして表示されます。

git5

たとえば、Tortoise GIT を使用してVisual Studio の外部から共有ディレクトリに存在するファイルを明示的に追加する (つまり、 経由で参照するD:\project2\shared\some-shared-file)ことはできません。

git6 git7

上記はframe、プロジェクトのルートにあるディレクトリが実際にはジャンクションである新しいテスト プロジェクトで行われました。

ただし、実際のプロジェクトでは状況が少し異なります... たとえば、Tortoise GIT を使用してレポを参照すると、ジャンクションにある共有ファイルが追跡およびチェックインされ、レポの一部として実際に表示されます。ただし、Visual Studio でプロジェクトを開くとすぐに、ソリューション エクスプローラーとチーム エクスプローラーの変更で同じファイルが「保留中の削除」として表示されます。これはVSの癖ですか?

要するに、ディレクトリ ジャンクションに存在するファイルを、通常のファイルと同等のプロジェクトの一部として表示する方法を知りたいだけです。これにより、ファイルが適切にチェックアウトおよびチェックインされ、プロジェクトの一部を形成します (レポの)歴史?

4

1 に答える 1

5

現在、これはサポートされていません。これは、Git for Windows と、V​​isual Studio および TortoiseGit (の一部) で使用される Git ライブラリである libgit2 の間のジャンクション処理の解釈の違いによるものです。

両方の実装がジャンクション ポイントを Unix マウント ポイントであるかのように扱うべき であると決定されましたが、現在のところどちらの実装も実際にはそうしていません。

現在、Git for Windows はそれらを通常のディレクトリであるかのように扱います (そのため、ジャンクションが削除され、新しいディレクトリに置き換えられる場合があります)。libgit2 はこれをシンボリック リンクのように扱い、その結果、Visual Studio はそれを処理することをまったく拒否します。

Microsoft はこれを修正するために Visual Studio を更新する必要があるため、 Microsoft Connectでバグを報告し、VS 2015 で修正されることを期待して投票するよう人々に勧めてください。

于 2016-06-20T21:56:17.543 に答える