dot-filesもMercurialへ移行

ホームディレクトリに置く各種初期化ファイルはこれまで Subversion で管理して、様々なホストから参照していたのだが、 どうも使い切れていなかった。初期化ファイルをコピーすべき 新しいホストで「さあ svn チェックアウトしよう」って時に、 「えーと、リポジトリどこだっけ?」となる。

いや、元からあるホストのウィンドウを出して svn info すりゃわかるってのは知ってる。でも、 出てきた svn+ssh://さーば/リポジトリ/まで/の/ぱす/ をこぴぺするのが面倒臭いのだ。だったら当座必要なファイルだけ scp しちゃえばいいじゃん、ってことになって、あんまり svn管理するうまみを引き出していなかった。ってか逆に面倒と 感じていた。怠惰。

でもMercurialは、「今そこで使ってるディレクトリがリポジトリ」 という発想なので、まず、リポジトリがどこかを忘れっこない。 普段メインで使っているホストの名前とホームディレクトリの場所を 忘れるか? 忘れっこない。

以下、ホームディレクトリまわりにある初期化ファイルのMercurial 管理のステップ。

  1. .hgignoreの準備

    ホームディレクトリ以下全部のファイルを管理する訳ではないので 「デフォルトではファイルを追加しない」ようにしておく。

    cd
    echo "syntax: glob
    *" > .hgignore
    
  2. リポジトリ初期化

    ホームディレクトリで

    hg init
    

    する。これでおしまい。あとは足したいファイルを追加。

  3. 管理下に置きたいファイルの追加

    hg add .hgignore .emacs* .zlog* .zsh* ...
    hg ci -m "Mercurialで行くぜ!"
    

    と、重要なファイルを突っこんでコミット。

以上でおしまい。別ホストでこのリポジトリを受け取るときは、 まず空っぽのディレクトリで受け取ってからホームにコピーすればよい。

mkdir /tmp/emptydir
cd /tmp/emptydir
hg clone ssh://さっきのさーば/ .
tar cf - .|tar xpfC - $HOME

HGのssh:// スキーマの基準ディレクトリはホームディレクトリなので 「サーバ名/」だけでホームディレクトリのリポジトリとなる。

その後、メインホストの方でファイルをいじったら普通に hg ci するだけでよく、別ホストの方でいじくったら hg ci に加えて hg push する。

メイン側での変更を別ホストで取り込みたいときは hg pull -u でOK。ああ簡単。