2012-01-13 9 views
4

チームをバージョン管理用のTFSからgitに移行したいと思っています。Gitとtfs:中央リポジトリとtfsとの通信はできますか?

私は次の操作を行うべきではない何らかの理由がある:

  1. はのgit - TFS
  2. を使用して中央gitリポジトリを作成しますが、各開発者のクローンに中央リポジトリを持っているから引き、それにプッシュ
  3. 中央リポジトリからのみtfsを更新しますか?

ありがとう!

答えて

3

TFSはそれですべて中央リポジトリを持っているとしてザ・は、危険なことができるのgit-TFS

を使用して中央gitリポジトリを作成します。
たgitのレポは巨大 1(周りのクローンを作成することは容易ではない)であること

を終わることができ、私はいくつかの小さい Gitのリポジトリを作成するためにいくつかのgit-tfsを作ることをお勧めします。

+0

しかし、私は本当に中央リポジトリをtfsに限定した戦略を意味しました。 – tpdi

+0

git-tfsはブランチを管理しているので、大きな問題ではないはずです...そして、クローンが非常に長くても、1回だけ実行されます! – Philippe

+0

@Philippe true、そして私はあなたの非常に完全な答えをupvoted。私の主張はより一般的なものです:DVCSを使用する場合、リポジトリの細分性をその用途に適応させること(それを複製する必要があります)を使用して、アーキテクチャのさまざまなコンポーネントを分離する機会として使用してくださいあなたの申請。 1つの巨大なモノリシックソースベースを維持するのとは対照的に。 – VonC

1

GitとTFSのやりとり、git-tfsは完璧ではないため(Gitの主な特徴は、一度作成したコミットを変更することができないこととgit-tfs裸のリポジトリでは動作しません)、TFSの前に中央のGitリポジトリを置くのは簡単ではありません...

あなたのチームがこのワームフローを使用することを想像してみてください。 (merge conflictのために管理する必要があります)...

git-tfsは裸のリポジトリでは動作しないので、実際には2つのgitリポジトリが同期する必要があります。 TFSとやりとりする最初のもの(git-tfsをどこで使うのかは分かりません)。 「チェックイン」コマンド) b)は、あなたがそれぞれを複製する(使用のgit-TFS a)は一つだけでは、複数のGitのコミットを持っている場合でも、TFSにコミット持って受け入れる:

はその後、あなたは、2つのオプションを持っています(git-tfs 'rcheckin' commitを使用して)git commitを実行します。

最初のケースa)は良くありませんが、いくつかのsciptsとgitフックで解決するのは簡単です。 2つのリポジトリ。

git-tfsのrcheckinコマンドとgitリポジトリを同期させると、git commitごとに新しいものが作成され、解決するのは難しいです。同期スクリプトは書くのがはるかに難しくなります(私はすべてのマージの競合が解決できるかどうか分かりません)。私はこれらのスクリプトを書くことに始めましたが、努力する価値がないため停止しました(特に、ソリューションファイルが読み込まれるたびにVisual Studio 2012でリロードの問題が解決されたため)。もしあなたがそれをしたいのであれば、以下の投稿のスクリプトはどこから始めるのが良いかを教えてください。

結論として、私はそれを行う価値がないと思います。 git-tfsのローカルワークフローは非常に簡単でgit central repositoryは必要ありません。

しかし、まだGitセントラルリポジトリが必要な場合は、この投稿(http://sparethought.wordpress.com/2012/08/23/my-environment-for-day-to-day-work-with-git-tfs/)のハイブリッド方法(TFSへのコミットとgitからのフェッチ)が動作しているように見えます。

0

Team Foundation Server 2013はチームプロジェクトのソース管理リポジトリとしてGitをサポートし、Visual Studio Tools for GitはVisual Studioに組み込まれたGitアクセスを提供します(add-in for 2012、2013年に同梱)。

関連する問題