Git(サイト・英語)は分散バージョン管理システムである。元々GitはLinux TorvaldsがLinuxカーネルのソースコードを管理するために書かれたものだが、Linux以外のプロジェクトでも採用されている。Ruby界隈ではRubinius(サイト・英語)やMerb(サイト・英語)での利用が知られており、Capistrano(サイト・英語)やVlad the Deployer(サイト・英語)といったデプロイツールもGitに対応している。
繰り返しになるが、Gitは分散バージョン管理システムである。その意味するところは、中央集権的なマスターリポジトリが存在しないというだけに留まらない。これは、ユーザの手元にあるリポジトリクローンが独立したリポジトリになれるということであり、クローン同士で変更点の差分をマージできるということである。
GitHub(サイト・英語)はgitリポジトリのホスティングと、リポジトリへのWebインターフェイスを提供するサービスだが、GitHubにはSourceForgeやGoogle Codeとは異なる独自のセールポイントがある。それは、GitHubでは他のプロジェクトからフォークすることが簡単だということだ。プロジェクトへのコントリビューションも同様に簡単だ。プロジェクトのWebサイトにある"fork"ボタンをクリックして、ソースコードをチェックアウトする。変更点をフォークしたリポジトリにコミットしたら、Gitのビルトイン機能である"pull request"を使ってプロジェクトオーナーにマージをリクエストする。GitHubが作り出したのは、ハッカー向けのMySpace(source)だ。
GitHubでフォークすることは、Myspace(またはFacebook)で「フレンドになる」ことによく似ています。いずれもソーシャルグラフのあるノードから別のノードへと線が引かれるのです。
もちろんGitHubプロジェクトもGitHubでホスティングされているが、リポジトリはプライベートな非公開リポジトリになっているので閲覧できない。GitHubではオープンソースプロジェクトは無料で(source)ホスティングされるが、プライベートなリポジトリはそうではない。 GitHubの開発者のひとりであるChris Wanstrathに確認したところ、プライベートリポジトリへ課金する計画は、無料ホスティングの資金調達のためであるとのことだった。
確かに、そうする予定です。現在の顧客向けの業務には、FamSpam(サイト・英語)の開発があります。GitHub自身の開発もそうです。私自身がGitHubのプライベートリポジトリのおかげで何度も救われました。時間の節約とチームメンバとの情報共有が大事だと思う人になら、きっと価値があると思ってもらえるはずです。
Chris WanstrathはGitHubの内部的な構成についてもInfoQに語ってくれた。
GitHubのほとんどはRailsで実装されていますが、post-commit でのリポジトリに統合させるための小さなアプリケーションはすべてMerbです。他にも、PythonのPygments(サイト・英語)をシンタックスハイライトに使っていますし、Ara T. HowardのBjプラグイン(サイト・英語)に自作のキューイング用Rubyスクリプトを追加して使っています。それから、GitとのインターフェイスはもちろんRuby(source)です。Gritを使っています。
GitHubにはすでにいくつもの見栄えのする機能が用意されている。リポジトリブラウザは当然のこととして、プロジェクトのWikiもあれば GitHub gem(source)というシェルからGitHubを快適に使うためのツールもある。今後も多くの機能が追加される予定である。
チケットシステムへの要望が強いので、シンプルなものを提供すべく作業中です。他にも、RubyGemsサーバの準備や、他のサービスとの連携を容易にするためのpost-commitフックをあらかじめ用意するといった作業もしています。自分ではGitデーモンを立てられないとか、立てたくないといった場合には私たちのリポジトリを使ってみてください。GitHubの公式リリース日程はまだ存在していないが、3月の終わり頃にローンチするだろうと予測されている(現在でもサイトにはアクセスできるが、ユーザ登録は招待制である)。より詳しく知りたければ、公式のGitHubウェブサイト(英語)かGitHubブログ(source)が参考になるだろう。GitHubでホストされているオープンソースプロジェクトの一覧も公開されている(source) 。
それから、GitHubを利用いただいている企業に役立つような機能も開発中です。
あとは、APIも公開予定です。読み取り専用のAPIの一部は近いうちにお見せできると思います。その後に、何らかの"書き込み"ができるようにします。新着フィードへのお知らせの投稿やメッセージの送信など、他にもクールなことをAPI経由でできるようになるでしょう。
原文はこちらです: http://www.infoq.com/news/2008/03/github-git-repository-hosting