2010-11-09

GNU Arch のリポジトリーを Git のリポジトリーに変換する

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>]

一つ試してみる。

$ 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