4

TFS (Microsoft Team Foundation Server) にコード リポジトリがあります。git-tfs を使用して、これを git リポジトリに変換できます。

しかし、私がやりたいのは、TFS にプッシュする 1 つの中央 git リポジトリをセットアップし、すべての開発者にその git リポジトリのクローンを作成してもらい、TFSにプッシュできないようにすることです。中央リポジトリから「下流」にいる人に関する限り、TFS リポジトリがあることを示すことはまったく望んでいません。

TFS サーバー情報は git-tfs によって作成されたリポジトリに含まれているため、これを行うにはどうすればよいですか?

4

2 に答える 2

2

これが機能するには、いくつかの問題を解決する必要があります。最も顕著なのは、変更を TFS にチェックインするときに使用される、git ユーザーから TFS 資格情報へのマッピングです。

その他の厄介なことは、他の TFS ユーザーと競合する可能性があることです (つまり、誰かが TFS に直接プッシュすることを決定した場合)。

それが、git-tfs の一部として開発されなかった理由だと思います (少なくとも、数か月前にこの機能を追加しなかったのはそのためです)。

TFS のログイン/パスワードのペアをプレーン テキスト ファイルに保存しても問題がなく、競合のないワークフローを確保できる場合 (たとえば、git 中央リポジトリ以外の方法で TFS へのチェックインを禁止するなど)、必要なものを実装できます。コミット フックまたは単純なスケジューラを使用することもできます (したがって、プッシュは即時ではなく、延期され、非同期になるため、git 中央リポジトリへのプッシュが大幅に高速化されます)。

実際のスクリプトは非常に簡単なはずですが、まだ誰もわざわざ書いていません (少なくとも私はそのようなことを知りません)。

于 2012-03-29T13:17:03.243 に答える
0

まず、--no-metadataフラグを使用してコミットから TFS メタデータを取り除きます。次に、--authors="path-to-authors.txt"フラグを使用して TFS ユーザーを現在のユーザーにマップします。

git tfs clone http://tfs:8080/tfs/DefaultCollection $/Project1 --authors="c:\project1\authors.txt" --no-metadata

authors.txt で、ユーザーの TFS ID を次のように電子メールにマップします。

TFSDOMAIN\peter.pan = Peter Pan <peter.pan@disney.com>

リポジトリのクローンを作成git tfs bootstrapしたら、ファイル内の TFS 構成を実行して削除し.git/configます。TFS にチェックインすることはできなくなりましたが、開発者間でリポジトリを共有することはできます。

https://github.com/git-tfs/git-tfs/blob/master/doc/commands/clone.mdの詳細git tfs clone

于 2013-06-04T13:41:15.107 に答える