Mercurialへの移行

Jasonuserpic-187-100x100.png*本ブログは ATLASSIAN blogs を翻訳したものです。本文中の日時などは投稿当時のものですのでご了承ください。 
*原文 : 2011 年 2 月 21 日、
Jason Hinch 投稿 “The Mercurial Move

半年前にアトラシアンは、ソフトウェアの開発方法において大きな変更を開始しました。2010年8月に、FishEyeとCrucible のソースを Subversion から Mercurial へ移行しました。その後、チームは分散型バージョン管理システム(DVCS)についての経験と知識を得ており、一連のブログ記事でご紹介したいと思います。シリーズの最初の​記事である今回は、なぜ伝統的な SCM システムから DVCS へ移行することを決めたのか、またなぜ Mercurial を選んだのかについて説明します。

では、なぜ DVCS に移行したのか?

私たちは最高の仕事をしたいし、それを続けたいのです。

  • プラクティスの最先端をいく近代的なツールだから。アトラシアンは、お客様に素晴らしい製品を提供することができるように、業界内での開発プラクティスの最前線にいるよう努めています。業界内で、特に私たちが使用しているオープンソースプロジェクト(たとえば jQuery, Adium, Raphael)の業界内で、DVCS の方向へ向かっているというトレンドに気付いています。
  • 便益を理解したいから。世界中で、人々は DVCS を使用することによりもたらされる便益について語っています。そして私たちは見逃していたものを知りたいと思いました。なぜ開発チームがこのソリューションの方向へ進んでいるのかもっと理解したいと思いましたし、またそれにより可能になる新しい開発プラクティスを活用できるかどうか知りたいと思いました。
  • アトラシアン社員がすでにそれをやっていたから。アトラシアンの開発者の多くは、Subversion のブリッジ(Git-svn や Hgsubversion)を介して内部の開発に、Git と Mercurial を使用し始めていました。彼らはローカルのコミット、賢いマージ、オフライン作業など DVCS の便益を知っていました。
  • ドッグフードだから。多くの顧客が当社の製品において、さらに良い DVCS サポー​​トを求めていることに気づきました。FishEye、Crucible、Bamboo はすでに Git と Mercurial に対しての基本的なサポートを提供しています。しかし、私たちのツールが、DVCS の分散型という性質やリポジトリ構造を完全にサポートし、それに基づいて開発されるようにするために、まだ改善の余地があると感じています。DVCS ツールを私たち自身で使用することにより、それを補完する私たちの製品にどの機能を組み込むべきかが分かります。

なぜ Git や Bazaar ではなく Mercurial なのか?

Mercurial 、Bazaar、Git はすべて素晴らしいツールですが、その中から一つを選択しなければなりませんでした。それらの DVCS の選択肢を試用して、Mercurial を使用することに決めました。理由は下記のとおりです:

  • Subversion のバックグラウンドから移行するときに、Git よりも学習曲線が簡単だと感じた
  • Mercurial は完全に横断的に OS のサポートを提供している
  • シンプルなベースコマンドのセットだけでなく、強力な拡張機能がバンドルされており上級ユーザーはそれを有効にできる。
  • Python を使って独自の拡張機能を作成するための素晴らしい API が提供されている。Python は、十分な数のアトラシアンの開発者が知識を持っている言語である。
  • ブランチと、コミットがどのブランチになされたのかの履歴を保管できる。変更やバグが導入されたコンテキストを決定しようとするときに、信じられないほど役に立つ。

さらに私たち昨年 Bitbucket を買収しました。これには、主に2つの便益がありました。リポジトリを格納したりフォークする素晴らしいホスティングプラットフォームを持っていたということと、分散開発について豊富な知識を持っているチームが加わったということです。

移行することはできるか?

会社全体をいっぺん