GitユーザだけどBitbucket使いたい!

「そんなむちゃくちゃな!」「なんだそれ?」と思う方へ。

結論を言ってしまうと、「無料」で「便利」だから使いたいと思ったのです。

Githubすごい!けど…

 ★研究目的で使うから、ちょっと非公開にしておきたい
 ★Wikiほしい!

となったら、お金がかかっちゃうんです。$7/moということは、$84/yrかな。


ちょっと貧乏な学生さんはとてもタダに弱いので、「タダのGithubはないのか!」と血眼になって探しまわりまして(誇張)、見つけたのがBitbucketでした。


BitbucketはMercurialという、Gitとは別の分散型バージョンシステムのためのホスティングサービスです。
このBitbucketは、

 ★非公開にできるよ!
 ★WikiもIssueもついてるよ!
 ★さらにタダですよ!(5 Usersまでは共有可能のご様子)

…使わない手はない。
でも友人たち含め、自分はGitを愛してる。どうすればいいの?


というわけで、GitユーザだけどBitbucketを使う方法を紹介します。
(注意:ものすごく長いです!)

目次

 ・前提条件
 ・Mercurial/hg-gitインストール
 ・Bitbucket登録/リポジトリ作成
 ・SSH認証鍵作成/登録
 ・Mercurialの設定ファイル ~/.hgrc作成
 ・Git→Mercurial変換
 ・Bitbucketにpush!

「設定は終わったけどどうやって運用するの?」
この質問には、こちらでお答えしています。



前提条件

 ★Mac OS X 10.6 Snow Leopard
  (Python 2.6標準インストール済)
 ★Git インストール済

 私の環境は上記の通りです。
 実行環境というか、みなさんの環境もこうであるという前提で進めてゆきます。


Mercurial/hg-gitインストール

Bitbucketを使うには、Mercurialをインストールする必要があります。
GitのリポジトリMercurialで扱えるように変換するプラグインも入れましょう。


1.[アプリケーション]→[ユーティリティ]→[ターミナル]を起動します。


2.表示された画面(ターミナル)に以下のコマンドを入力して実行します。

$ sudo easy_install pip

$ pip install mercurial hg-git

 パスワードを求められたら入力してください。
 これでインストールは終了です。


 上のコマンドが実行できない場合は、MacPortsユーザはMacPortsを使ってMercurialとhg-gitをインストールすると簡単だと思われます。
 ちなみにHomebrewユーザな私は、「brewじゃインストールできないの?」と思ったのですが…

 このコマンドが実行できるのならばそうするのが一番良いみたいです。


Bitbucket登録/リポジトリ作成

まずはbitbucketに登録しましょう。プライベートリポジトリを作成します。


1.Bitbucketにアクセスして、「Sign up free」をクリックし、登録してください。


2.登録したメールアドレス宛に、Bitbucketからメールが送られてきます。そこに書かれているURLをクリックして、Bitbucketに登録完了となります。


3.[Repositories]→[Create new repository]をクリックします。


4.[Create new repository]画面の、[Name]横のチェックボックス[private]を有効にしておき、詳細を入力してリポジトリを作成します。
 スクリーンショットの赤い枠で囲った箇所にチェックを入れないと、Wikiが使えないので注意です。
 まだLogOutはしないでくださいね。
 私は「blue」というリポジトリを作成しました。


SSH認証鍵作成/登録

一度ターミナルに戻って、SSH認証のための鍵を作りましょう。
実はこのあと、作成した鍵を使って、bitbucketにpushします。


1.SSH認証鍵を作成します。
 「ssh?」となる方は、こちらを参照して鍵を作成してください。


2.bitbucketの[Account]画面の、[SSH Keys]に作成した公開鍵(.pubの方)をアップロードしてください。
 まちがっても秘密鍵はアップロードしちゃダメ! ですよ!


Mercurialの設定ファイル ~/.hgrc作成

Mercurialの設定ファイル ~/.hgrcを作成します。


1.ターミナルで以下のコマンドを実行し、Emacsで~/.hgrcを開きます。
 もちろんエディタはviやnanoでかまいません! 私がEmacsを用いただけですので!

$ emacs ~/ .hgrc


2.以下の内容を入力して保存してください。
 [ui]のusernameおよびsshは、あなたのメールアドレス、あなたの秘密鍵の名前に変更してくださいね。

[ui]
username = YOUR NAME
ssh = ssh -i ~/.ssh/id_rsa -C


[extensions]
hggit = /Library/Python/2.6/site-packages/hggit
schemes =


[schemes]
bitbucket = ssh://hg@bitbucket.org/


 「なぜ[schemes]…?」と思ったら、こちらに書いてありました。

で、Mercurialのpush先のリモートリポジトリ、Gitのように「origin」をリポジトリごとに登録できたりしないんだけれど、代わりに「schemeプラグインでプッシュ先を短く記述できる。

http://blog.udzura.jp/2010/11/18/deploying-via-bitbucket-using-mercurial/

 おお、すごい!
 ~/.hgrcの書き方はこちらもぜひ参考になさってください。


Git→Mercurial変換

GitリポジトリMercurialリポジトリに変換します。
私のローカルリポジトリ、Gitで管理しているblueというフォルダはDropboxの中にあります。(恥ずかしいので一部隠しました)
↓こんなフォルダ構成の場合、blueをMercurialリポジトリに変換する手順を説明します。
(以下の作業をするまでは、Mercurial、blue-hgフォルダは存在しません)

1.Dropbox/Mercurialを作成します。
 この後の操作はまたもやターミナルで行うので、ターミナルでMercurialフォルダを作成してみましょう。

$ cd ~/Dropbox
$ mkdir Mercurial


2.GitリポジトリMercurialフォルダにcloneします。
 blueはMercurialと同じ、Dropboxフォルダの直下にありますね?
 Dropboxフォルダに移動した状態で、以下のコマンドを実行してください。

$ git clone --bare blue Mercurial/blue.git
Cloning into bare repository Mercurial/blue.git...
done.

 Mercurialフォルダの中身を確かめてください。
 blue.gitがある! はずなのですが、どうですか?


3.gitレポジトリをMercurialリポジトリに変換しましょう。
 blue.gitの中には、blueフォルダ内のGitリポジトリがコピーされています。
 以下のコマンドでMercurialフォルダに移動し、blue.gitの中身をMercurialリポジトリに変換しましょう。

$ cd ~/Dropbox/Mercurial
$ hg clone blue.git blue-hg

 blue-hgの中身は、もともとblueの中にあったプログラムになっていると思います。どうですか?


Bitbucketにpush!

やっと…やっと設定が終わりましたよ…!
では、さくっとBitbucketにpushしちゃいましょう。
ターミナルがそのままでしたら、Mercurialフォルダにいらっしゃいますね?


1.以下のコマンドを実行します。
 youraccountには、あなたがbitbucketに登録したアカウント名を入れます。
 blueも、あなたが作成したリポジトリ名に変更してくださいね。
 パスワードを求められたら、SSH認証鍵生成時のパスフレーズを入力してください。
 パスフレーズは、キーチェーンアクセスに登録すれば、今後入力する必要がなくなります。

$ hg push bitbucket://youraccount/blue
pushing to bitbucket://youraccount/blue
remote: Identity added: /Users/you/.ssh/id_rsa
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 8 changesets with 8 changes to 7 files
remote: bb/acl: youraccount is allowed. accepted payload.


さて、Bitbucketに反映されたでしょうか…? 確認してみます。

できた!


2.おかたづけをしましょう。blue.gitは消してかまいませんね。

$ rm -rf ../blue.git

おつかれさまでした。

長かったですねえ。すんなりうまくいきましたか?
私は、このエントリの編集中にノートPCの電源が切れたり、Safariが強制終了したりで肝が冷えました。


とりあえず、今回はBitbucketにプライベートリポジトリを作り、pushするところまでをやりました。
次にみなさんは、「Gitでコミットしたんだけど、Bitbucketに反映させるにはどうしたらいいの?」となるはずです。
どうやって、GitもBitbucketも使って行くのか。それは『GitユーザがBitbucketを普通に使うには。 - CROSS HOPE』で説明します。