8

私は、私が働いている会社で新しいプロジェクトを始める予定です。これは C++ と C# によるソフトウェア開発プロジェクトで、3 つの場所に 6 ~ 8 人の開発者がいます。

ここの古いプロジェクトは SVN とカスタム課題トラッカーを使用していますが、TFS に切り替える予定です。この新しいプロジェクトでは、経営陣に TFS の代わりに GitHub Enterprise を使用するよう説得したいと思います。私は TFS の経験はあまりありませんが、git はよく使用しており、GitHub の経験も多少あります。

完全なエクスペリエンス、つまり、バージョン管理、問題/バグ追跡、および Wiki の統合について特に質問しています。ここには関連する質問がいくつかありますが、それらはバージョン管理の側面のみに焦点を当てています。そう:

  • TFS に対する GitHub Enterprise の主な利点は何ですか?
  • GitHub Enterprise がレプリケートできないこと以外に、TFS が提供する利点は何ですか?
  • 2 つのソリューションのうち、継続的インテグレーションのサポートが優れているのはどれですか?

すべての開発は、Visual Studio (2010、おそらく 2012) を使用する Windows マシン上で行われます。

4

2 に答える 2

8

うーん、私はあなたに完全な答えを与えることはできません。しかし、Java 開発用の TFS についても調べました。ここに、あなたにとっても興味深い点がいくつかあります。

  • TFS を使用すると、パスとファイル名の長さに制限がありました。これは、C# でのパッケージ化が異なる方法で行われるため、Java でより可能性が高いようです。
  • ロック: ファイルを作成すると、何らかの方法で TFS でロックされます (またはその「スポット」が予約されます)。これらのファイルを修正するために人々が部屋にいなかったとき、これは非常に面倒でした。分散したチームでは、それがどのように機能するのか想像できません。
  • Java を使用した CI は面倒でした。それは機能しましたが、Jenkings/Hudson/Bamboo/TeamCity と比較すると、Java には使用しません。TFS では CI ビルドのワークフローが可能になるため、C# を使用する方が興味深いかもしれません。そのため、特定のビルドを自動展開に昇格させることができます。しかし、私はそれを実生活で使用したことはありません。私はそのアイデアが好きでした:)
  • TFS の問題追跡は問題ありません。利用可能なスクラム/アジャイル計画プラグインもいくつかあります
  • TFS wiki は時間の無駄です。しかし、GitHub wiki は Git に基づいているため、人々はマークアップを書く必要があります。開発者にとっては問題ありませんが、私たちのチーム メンバーがその分野の出身であることには疑問があります。
  • GitHub に CI が組み込まれていることを知りませんか? 私が知っている CI サーバーはすべて Git をサポートしています。
  • Git Windows クライアントは少し奇妙です。msysgit クライアントにはパスの長さの制限があり、cygwin のクライアントはさらに奇妙に感じられますが (感じただけで)、どちらもうまく機能します。GitHub には独自のクライアントがあります。それが何に基づいているのかわかりません。

あなたのチームが分散していることを考えると、私は Git を選びます。より柔軟なワークフローが可能になります。ネットワークが安定していれば、TFS も確実に機能します。以前に SVN を使用していた場合: ソース管理としての TFS は、間違いなく人々を怒らせるでしょう。しかし、VisualStudio と MS-Server-Parts に慣れている開発者は、VisualStudio との競合がはるかに少なくなります。

繰り返しますが、TFS + Java を使用してみました (または試してみる必要がありました) が、C# + Visual Studio ではまったく別の話です。統合はそこではるかに良くなります。それでも、私のポイントのいくつかはまだ役立つかもしれません:)

于 2012-10-08T11:36:37.650 に答える
4

TFS に関する私の唯一の経験は短く、非常に不快だったので、特にコメントすることはできません。

ただし、定期的に git と github (エンタープライズ バージョンも) を使用しており、さまざまな集中型 VCS (rcs、cvs、svn、synergy) と分散型 VCS (hg、git) を使用してきました。

GIT と TFS の主な違いは、いくつかの補助的な機能の違いは別として、基本的に TFS は中央集権型システム (rcs、cvs、svn、synergy など) であり、git は分散型システム (dvcs) であることだと思います。これは、最初はあまり違いがないように見えるかもしれませんが、深い意味があります。

  • dvcs リポジトリのクローンにはすべての履歴が含まれているため、ネットワークがダウンしている場合、サーバーが応答していない場合、飛行機に座っている場合などに、作業を続けたり、ブランチを切り替えたり、機能をコミットしたりできます。
  • コミットはクローンされたリポジトリに対してローカルであるため、リポジトリの機能のクローンを作成することで機能に取り組むことができ、うまくいかない場合はリポジトリを削除するだけで、もう 1 つの自由度 (ブランチに直交するなど) があります。プッシュしなければ、アップストリーム リポジトリの履歴に残ることはありません。
  • DVCS は特定のワークフローを指示しません。チームのやり取りを自由に構成できます (階層化、直交、フラット、集中化など)。これは、設計上ニーズを満たすことができないシステムに取り残されることなく、チームが成長 (および縮小) するのに役立つ大きな利点です。
  • GIT (および hg も) は、パッチセット/キルトなどを直接サポートしており、継続的な統合に使用できます。これは通常、集中型の VCS で行うのが難しいため、ほとんど行われていません (TFS にこれらの機能があるかどうかはわかりません)。
于 2012-10-08T14:40:56.743 に答える