昔 GNU Arch で開発していたプロジェクトを、今流行の Git で開発することに決めた。git には archimport というコマンドがあって、GNU Arch のリポジトリーを Git へインポートすることができる。本エントリーに git archimport を使う手順を記す。
サンプルにするのは、2005 年以来開発が止まっている html-fold.el というツール。
準備
久しぶりに GNU Arch を使うので、昔の環境がない。まずは環境設定から。
自分の id を設定する。
$ tla my-id "Masayuki Ataka <masayuki.ataka@gmail.com>"
確認
$ tla my-id Masayuki Ataka <masayuki.ataka@gmail.com>
アーカイブの設定
GNU Arch のリポジトリーも tar.gz で固めて保存してあった (見つけるのが大変だった orz)。
リポジトリーを ~/repository/{archive}/ に展開する。
$ cd ~/repository $ tar xzf ~/archives.tar.gz $ ls \{archives\} 2003-elisp/ 2004-doc/ 2005-elisp/
GNU Arch は年ごとにアーカイブを新しくしていく方針だった。ぼくが使いたいのは 2005 の最新版。
ところで、本来は make-archive コマンドでアーカイブを作る時に、レポジトリー (アーカイブ) の場所が設定されるのだけど、今回はそれをしていない。tar で解凍したこれらのディレクトリーを、tla コマンドに「何処にレポジトリーがあるか?」を教えないといけない。そのためには register-archive コマンドを使う。
$ tla register-archive ~/repository/\{archives\}/2005-elisp Registering archive: ataka@milk.freemail.ne.jp--2005-elisp
一応デフォールト・アーカイブを ataka@milk.freemail.ne.jp--2005-elisp に設定しておく。
$ tla my-default-archive ataka@milk.freemail.ne.jp--2005-elisp
確認。
$ tla my-default-archive ataka@milk.freemail.ne.jp--2005-elisp
ちなみに archives コマンドを使うと今 tla に登録されてるアーカイブ一覧が見られる。
$ tla archives ataka@milk.freemail.ne.jp--2005-elisp /home/masayuki/repository/{archives}/2005-elisp
一つのディレクトリーしか register-archive してないから、一つのアーカイブしか表示されない。想定通り。
html-fold プロジェクトの確認
html-fold プロジェクトを調べる。
GNU Arch では、プロジェクトは次の書式で表されることを思い出しておく。
category--branch--version
まず、ataka@milk.freemail.ne.jp--2005-elisp アーカイブに何のプロジェクトが入っているか確認。プロジェクト名は category として登録されている。
$ tla categories blgrep clmemo html-fold rd-hindex2
html-fold プロジェクトが見つかった (良かった〜)。ブランチを確認する。
$ tla branches html-fold html-fold--mainline html-fold--snapshots
mainline ブランチと snapshopts ブランチの 2 つを作っていたんだね。使いたいのはスナップショットじゃなくて、開発のメイン・ブランチであろう mainline。
一応、バージョンも確認。
$ tla versions html-fold--mainline [18:41:09] html-fold--mainline--0.1
フム。バージョンは一つで 0.1 か。よし、よし。
git archimport
git archimport の使い方は次の通り。archive と branch が分かったら、git-archimport が使える。
$ git archimport <archive/branch>[:<git-branch>]
- ref. git-archimport(1)
一つ試してみる。
$ cd ~/project $ mkdir html-fold && html-fold $ git archimport ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline ...
確認。
$ ls -a ./ ../ .git/ html-fold.el $ git branch * ataka@milk.freemail.ne.jp--2005-elisp,html-fold--mainline--0.1 master
ふむ。GNU Arch のリポジトリーを Git に変換できたらしい。だけど、デフォールト・ブランチが master じゃなくて「ataka@milk.freemail.ne.jp--2005-elisp,html-fold--mainline--0.1」なのは不便だねぇ。
ブランチ名をちゃんと指定して、再チャレンジ。
$ rm -rf .git html-fold.el $ git archimport ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline:master
確認。
$ git branch * ataka@milk.freemail.ne.jp--2005-elisp,html-fold--mainline--0.1 master
ありゃ駄目だ。もしかして、git archimport の言う「ブランチ」は「カテゴリ--ブランチ--バージョン」な書式じゃないといけないのかな? バージョンは確か 0.1 だったはず。再トライ。
$ rm -rf .git html-fold.el $ git archimport ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline--0.1:master
確認
$ git branch * master $ git log commit df7be8c81cc2310366190d971dc2713c736b5d55 Author: Masayuki Ataka <ataka@milk.freemail.ne.jp> Date: Fri Jul 15 10:43:00 2005 +0000 Update version to alpha3 2005-07-15 git-archimport-id: ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline--0.1--patch-6 commit 757478802c5828727100137752d7af160fa44366 Author: Masayuki Ataka <ataka@milk.freemail.ne.jp> Date: Thu Jul 14 18:47:26 2005 +0000 Fix problem that html-fold skip in does not work with emacs-w3m Add 'forward-char and 'backward-char into the comparision list to this-command in html-fold-post-command. html-fold see the function binded to [left] and [right] but functions binded to [left] and [right] in Emacs-w3m are w3m-view-this-url and w3m-view-previous-page, respectively. git-archimport-id: ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline--0.1--patch-5 (続く)
お、見事に git のリポジトリーになった。良かった。良かった。
参考ページ
GNU Arch の使い方を随分忘れていた。下記ページを参考にした。
No comments:
Post a Comment