web-dev-qa-db-ja.com

JavaのTFS-悪い考え?

.NETベースのプロジェクトおよびタスク管理プラットフォームとしてTFSを検討しています。一部のチームはJavaで独占的に開発しており、SVN(Subclipse)に非常に満足しています。

私たちのマネージャーは次の質問を思いつきました:

  • JavaチームもTFSに移行する必要がありますか?
  • TFS(ソース管理のみ)は適切に処理しますかJavaプロジェクト?
  • Javaコードベースと履歴をSubclipseからTFSに移行するのは難しいですか?

現在、保守性の理由から、TFSを唯一のソース管理プラットフォームとして使用することを検討しています。 IT担当者が複数のシステムをサポートすることは避けたいです。

ありがとう

21
Jabberwocky

完全な開示、私はJava TFSのツール)を作成するチームに取り組んでいるので、この答えを適切に偏ったものとしてください:-)

TFSに関する限り、すべてのコードは同等に作成されます。バージョン管理にチェックインするのは、ファイル内の単なるバイトです。すべてのSCMシステムと同様に、ファイルがどの言語で書かれているかは関係ありません。

マイクロソフトは完全で豊富な Eclipse用のTFSプラグイン (Team Explorer Everywhereと呼ばれます)を提供しています。これにより、EclipseベースのIDEからTFSへの完全なソース管理、作業項目の追跡、ビルド、Sharepoint、レポートアクセスなどが提供されます。 100%Javaで記述されており、TFSによって公開されているWebサービスと直接通信します。

さらに TFSのクロスプラットフォームコマンドラインクライアント も提供しているため、選択したオペレーティングシステム(Mac、Linux、Solaris、HP-UX、AixのコマンドラインからTFSと通信できます)などすべて完全にサポートされています)。

最後に、Java TFSと通信したいツール)がある場合、それらは TFS SDK for Java を使用できます。これは、使用した完全なAPIです。 Eclipse統合とクロスプラットフォームのコマンドラインクライアントを作成しますが、サンプルとスニペットがパッケージ化されており、アプリケーションで再配布する準備ができています。

ビルドに関しては、いくつかの選択肢があります。現在のビルドサーバーを使い続けたい場合は、これが既にTFSとの通信をサポートしている可能性があります(一般的なすべてのオープンソースビルドサーバーがサポートしています)。それに加えて、Microsoftは TFS Build Extensions を提供しています。これにより、Team FoundationビルドサーバーでAntまたはMavenベースのビルドを実行できます。ビルドの一部としてJUnitテストを実行すると、ビルドの結果(警告またはエラーとともに)がJUnitテストデータとともにTFSに公開されます。また、Eclipse IDEでビルド定義を作成および管理し、それらへのアクセスを管理する1つの場所などを得ることができます。

したがって、Javaのサポートのレベルは非常に高く、Microsoftはこの領域への一貫した投資を示しています。最近一部を出荷しました TFS 2010 Power Tools for Eclipse そして、また、Team Explorer Everywhere 11のプレビューリリースをTeam Foundation Server 11(私たちは社内の同じチームです)と共に出荷しています。

SVNから履歴をインポートすることは、SCMツールからTFS(またはTFSを任意のSCMツール)に履歴をインポートすることと同じです。いくつかのオプションがあります。スナップショットを取得して、特定の時点(リリースなど)でカットオーバーしたり、履歴を移行したりできます。 SVNから履歴を移行するには、 Timely Migration からのものを含む、いくつかのパートナーソリューションを利用できます。多くのお客様が成功しているのを見てきました。

お役に立てば幸いです。

45
Martin Woodward

TFSを使用してJava/JVMプロジェクトに取り組んで1年が経過した後、私は誰もこれを行わないようにしたいと思います。 TFSは.NET開発者にとって最高の製品と見なされているかもしれませんが、Java経験のある開発者は見つかりません。Eclipse用のプラグインとIntelliJへの移植ですが、私は両方でひどい運がありましたが、それは主に、TFSが私が使用した他のVCSのように機能しないためだと思います。

私たちのチームでは、TFSとそれに起因する複雑化によるオーバーヘッドを10〜15%と推定しました。 TFSがファイルを上書きすることにしたために失われた作業の日数、不完全なTFS更新によって引き起こされた問題のトラブルシューティングの日数。チーム全体が最後に2日負けたため、6か月でブランチを作成しました。 「私はあなたの最新の変更で更新しました。マージで何も消えていないことを確認するために来てもらえますか?」というフレーズをよく耳にします。 Jiraを使用する代わりに、TFSのひどい問題追跡を使用してスタックし、さらに多くの問題を引き起こしています。

チームの開発者の何人かは、スタンドアロンのgitまたはgit-tfsブリッジのいずれかを使用してgitを使用しています。また、更新やチェックインなどの「危険な」アクティビティの前にソースツリーをコピーするだけのものもあります。

どちらにしても、経験のないチームにはお勧めしません...

6
Dusty J

私は@Martin_Woodwardの答えがとても好きですが、私の意見では偏りすぎているので、ここに2セントを追加します。私たちの会社も同様の状況にあり、決定は(私の意見では)状況に依存します。私は3つの異なる状況を見ることができ、決定はそれぞれ異なる場合があります。

  1. あなたは主に.NETソリューションを開発しており、Javaパーツは.NETソリューションに統合されています。
  2. .NETソリューションは、Javaソリューションから独立して開発されており、半分は.NET、半分はJavaです。
  3. ほとんどのソリューションはJavaで開発されており、ごく一部しか.NETで開発されていません

私はマーティンに最初のケースでのみ同意します。共通の開発環境、ソースコード管理、ビルドプロセスから利益を得ることができます... JavaみんながTFSソース管理との違いを学びます(名前はありますか?)。そしてあなたの未来は明るく見えます;-)

.NETソリューションとJavaソリューションが互いに独立している場合、TFSを使用してJavaソリューションを開発するための唯一の引数は、運用コストです。そして、開発環境を運用することによる節約がTFSのみである場合、SubversionプロジェクトをTFSに切り替えることによる追加コストを上回ります。

最後のケースでは、開発するための共通の環境を持つためだけに多くの人々と切り替えるのは恐ろしい決断でしょう。 SubversionをVisualStudioに統合(たとえばVisualSVNまたは他のプラグインを使用)することができ、ほとんど投資する必要がありません。

通常、履歴を含むソースコードの移行は面倒で、うまくいくかどうかはソースとターゲットに依存します。 CSVとSVNには良い経験がありますが、他の人には(良い)経験はありません。しかし、それは通常問題ではありません。古いSVNリポジトリ(読み取り専用)を使用して、最後のマイルストーンを移行するだけです。しばらくすると、SVNリポジトリは言うまでもありません...

4
mliebelt

1年間TFS/Javaを使用した後、Dusty J(はい、TFS/Javaは悪い)に完全に同意し、Microsoftの優れたサポートについてMartin Woodwardに完全に同意しません。開発者としての私の義務はEclipse TFSで問題ありませんが、問題は私のビルド/リリースの義務です。

まず、このEclipseプラグインでは、CVS/SVNのように複数のプロジェクトのブランチを一度に作成できません。プロジェクトごとに個別にブランチを作成する必要があります。次に、ブランチに同じプロジェクト名を保持することはできません。プロジェクト名を変更し、ブランチからチェックアウトして元の名前に名前を変更する必要があります。私の投稿 EclipseワークスペースをTFSワークスペースに関連付ける方法? も参照してください。EclipseワークスペースをTFSワークスペースに関連付ける方法はありません。したがって、ローカルフォルダーのマッピングは保存できません。ブランチを構築するために別のEclipseワークスペースを開いた後、再度実行する必要があります。また、ローカルマッピングは同じであるため、Dusty Jが書いたように、保存されていない作業でローカルフォルダーを消去する可能性があります。

警告なしでローカルファイルを削除することはTFSのひどい機能です(投稿 TFSのコマンドラインからコマンドgetが並列プロジェクトを削除する理由)を参照してください )。 Eclipseの通常のオプション[ローカルマッピングの削除]でローカルファイルを消去する可能性について、マイクロソフトはどのように考えていますか?

そのため、TFSを学ぶための努力にもかかわらず、以前に使用したCVSと比較して、さまざまなビルドに10倍の時間を費やしています。

3
Alex

(別の偏ったMS従業員)

TFSは、約18か月前にチームを結成して、JavaエクスペリエンスをTFS /チームサービスおよびすべてのプラットフォームで優れたものにすることだけに焦点を当てています。私はそのチームの一員であり、この質問が出されたとき、エンドツーエンドのストーリーがかなり悪かったことには異論はありませんが、昨年の回答はかなり変わったと思います。

私のチームは、エンドツーエンドのエクスペリエンスを可能な限り完全にするために、TFSのビルドタスクとデプロ​​イメントタスク、およびEclipseとIntelliJのプラグインを提供しています。また、Java開発者である場合は、TFSを最大限に活用する方法を文書化するために努力しています。

詳細については、チェックアウト http://Java.visualstudio.com をご覧ください。

おかげで、ジェイソンプリケット

0
Jason Prickett