サイトのファイルをBitbucketに登録した話

バックアップを兼ねてサイトのファイルをBitbucketに登録してみました。Bitbucketを使ったのはGitHubでは有料だったプライベートリポジトリを無料で使うことができるからです。Git以外にMercurial(今回使うのはこっち)を使うことができるのも大きなポイントです。Bitbucketアカウントの作成とMercurialのインストールを予め行っておく必要があります。

Bitbucketのリポジトリを作成する

GitHubと同じようにGUI操作によりリポジトリを作成します。「Create」ボタンからリポジトリの新規作成画面に移動します。

bitbucket1

必須項目のNameにリポジトリ名を入力します。リポジトリを公開したくない場合は「Access level」にチェックを入れます。続いて「Repository type」に「Mercurial」を選択します。基本的に必要なのは以上の3箇所ですが、「Language」を選択するとバケツアイコンの見た目などを変えることができます。登録するファイルはWordPress関連のスクリプトなのでPHPを選択しました。この選択は動作に影響がない(はず)です。

ローカルファイルをリポジトリに反映する

bitbucket2
上記のようにBitbucketが提示してくれた方法でもいいのですが、今回は対象ディレクトリをそのままBitbucketに登録してみます。わかりやすいように対象ディレクトリにはリポジトリと同じ名前をつけます。

$ cd [リポジトリ名]
$ hg init
$ hg add *
$ hg commit -m 'initialize'
$ hg push https://[Bitbucketユーザ名]@bitbucket.org/[Bitbucketユーザ名]/[リポジトリ名]

以上で登録は完了です。

ただし、この方法では毎回リモートリポジトリのURLを指定しなければなりません。そこで.hg/hgrcに以下の内容を記述したファイルを置きます。

[paths]
default = https://[Bitbucketユーザ名]@bitbucket.org/[Bitbucketユーザ名]/[リポジトリ名]

もちろんinitのあとに作成すれば初回pushの際にもURLを指定する必要はありません。また、「@」より前のユーザ名は省略可能ですが、省略すると毎回ユーザ名の入力を求められます。

hg cloneすれば自動的にこのファイルが生成されるのですが、2回認証を行うのと対象ファイルをすべて移動させる手間を考えてこちらの方法は選択しませんでした。

今後ファイルに変更が生じた場合はcommit + pushすればBitbucketのリポジトリにも反映されます。

# ファイルを新たに追加した場合はaddで管理対象に追加する
$ hg add ファイル名
$ hg commit -m 'コミットメッセージ'
$ hg push

エラーが発生したら

commitの際に「中止: ユーザ名が未指定です」のようなエラーメッセージが表示される場合、mercurialの設定ファイルを作成する必要があります。~/.hgrcに以下の内容を記述すればcommitできます。

[ui]
username = ユーザ名 <メールアドレス>