1

残念ながら、ソース管理に TFS/TFVC を使用している組織の一員です。私の小さなチームは、git を使用して一種の「概念実証」を実行する任務を負っていますが、変更を TFS にプッシュできるようにする必要があります。幸いなことに、git-tf と git-tfs が存在します。ただし、TFS リポジトリは、20 以上の異なるプロジェクト/アプリケーションを含む 1 つのモノリシック リポジトリです。git でこれを行う適切な方法は、各プロジェクトを独自の git リポジトリにすることです。git-tf のブリッジを使用して、TFS から個々のプロジェクトをチェックアウトできることはわかっています。また、永続的に git に変換する場合は、それを実行します。

私が懸念しているのは、まだ TFVC にプッシュ バックする必要があるかどうかです。各プロジェクトを独自の git リポジトリとしてチェックアウトした場合、各プロジェクトが個別に変更されるため、変更をプッシュ バックすると TFVC が混乱するのでしょうか? つまり、変更セット 123 からプロジェクト A をチェックアウトし、123 からプロジェクト B もチェックアウトし、A に変更を加えてから変更セット 124 としてそれらを TFVC にプッシュした場合、TFVC は、後で変更を加えたときに、マージの競合またはその他の問題があると判断します。 TFVC の下にすべて 1 つの大きなリポジトリがあるため、B に移動してそれらをプッシュします。

git-tf または git-tfs はこれを適切に処理しますか? それとも、TFS リポジトリ全体を単一の git リポジトリとしてチェックアウトし、そのまま使用する必要がありますか? または、この場合、さまざまな TFS プロジェクトを単一のローカル ワークスペースにチェックアウトし、git-tf ブリッジを使用せずに git を使用してリポジトリを作成し、変更を TFS で行われた編集であるかのようにチェックアウトする方がよいでしょうか。ワークスペースを直接(基本的にすべてのgit履歴とコミットログを無視し、ローカルの変更追跡に使用するだけです)?

4

1 に答える 1

1

はい、TFS チーム プロジェクトごとに複数の Git リポジトリを作成できます。これは、1 つのチーム プロジェクトで複数の Git リポジトリを管理するのとまったく同じです。

ここに画像の説明を入力

詳細については、このリンクを参照してください: Many Git Repositories, but one Team Project to rule them all

プロジェクト A を変更セット 123 からチェックアウトし、プロジェクト B も 123 からチェックアウトし、A に変更を加え、それらを変更セット 124 として TFS にプッシュした場合、後で B に変更を加えたときに、TFS はマージの競合またはその他の問題があると判断します。それらはすべて TFS 上の 1 つの大きなリポジトリであるため、プッシュしてください。

jessehouwingがコメントしたように、TFSは対応するファイルとコードのみを検出します。両方の git リポジトリでファイルが変更された場合にのみ競合が発生します。たとえば、変更セット 123 のファイルのバージョンは a で、変更セット 124 で編集されたバージョンは git rep1 のバージョン b です。また、このファイルは、repB のバージョン a でチェックアウトします。git rep2 でバージョン b に変更しなかった場合。変更をプッシュすると、確実に競合が発生します。


アップデート

git-tfsは、TFS と git の間の双方向ブリッジです。コマンドを使用git tfs checkintoolして tfs チェックイン ウィンドウからコミットするなど。したがって、1 つの GIT チーム プロジェクトで複数の git リポジトリを使用するのと同じ結果になります。唯一の違いは、1 つのプッシュ コミットと、別のチェックインの変更です。上記の 3 つの方法はすべて機能するはずです。最良の方法は、すべての履歴を追跡する git-tfs を使用することです。

于 2016-09-29T10:02:11.447 に答える