ホームディレクトリに置く各種初期化ファイルはこれまで Subversion で管理して、様々なホストから参照していたのだが、 どうも使い切れていなかった。初期化ファイルをコピーすべき 新しいホストで「さあ svn チェックアウトしよう」って時に、 「えーと、リポジトリどこだっけ?」となる。
いや、元からあるホストのウィンドウを出して
svn info
すりゃわかるってのは知ってる。でも、
出てきた svn+ssh://さーば/リポジトリ/まで/の/ぱす/
をこぴぺするのが面倒臭いのだ。だったら当座必要なファイルだけ
scp しちゃえばいいじゃん、ってことになって、あんまり
svn管理するうまみを引き出していなかった。ってか逆に面倒と
感じていた。怠惰。
でもMercurialは、「今そこで使ってるディレクトリがリポジトリ」 という発想なので、まず、リポジトリがどこかを忘れっこない。 普段メインで使っているホストの名前とホームディレクトリの場所を 忘れるか? 忘れっこない。
以下、ホームディレクトリまわりにある初期化ファイルのMercurial 管理のステップ。
.hgignoreの準備
ホームディレクトリ以下全部のファイルを管理する訳ではないので 「デフォルトではファイルを追加しない」ようにしておく。
cd echo "syntax: glob *" > .hgignore
リポジトリ初期化
ホームディレクトリで
hg init
する。これでおしまい。あとは足したいファイルを追加。
管理下に置きたいファイルの追加
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。ああ簡単。