ラベル GNU Arch の投稿を表示しています。 すべての投稿を表示
ラベル GNU Arch の投稿を表示しています。 すべての投稿を表示

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 の使い方を随分忘れていた。下記ページを参考にした。

2005-08-28

GNU Arch のメンテナー

GNU Arch の最近の動向に関する自分用のメモ。

まず、GNU Arch のバージョン 2 が公開された。

といっても、スナップショットな段階みたい。そして、GNU Arch のメンテナー Tom Load 氏が降板。

これからの開発がどうなるかは、現在未定みたい。Revc の開発が続くのか、GNU Arch は終わってしまうのかしらん。

ところで、ML で何度か出てくる Bazaar と Bazaar-NG について、まとめてる FAQ があったので、抜粋して意訳しておく。

Bazaar (1.0) は GNU Arch から分岐したプロジェクトです。互換性の問題は残るものの、(GNU Arch で問題だった) ユーザー・インターフェースの問題の解決を試みています。Bazaar-NG はスクラッチから始まったプロジェクトで、GNU Arch や他のシステムから一番いいアイディアを取って来ようと言うものです。出来上がったプロトタイプは、Bazaar へフィードバックされるでしょう。

いま、一番熱いのは Bazaar-NG らしい。ただ、Python なツールなんだよね。もう少し、様子を見てみよう。

2005-07-14

Snapshot ブランチを切る |GNU Arch|

スナップショット用のブランチを GNU Arch で作る方法についてメモ。サンプルは、html-fold.el

初めてのスナップショット

$ tla make-log
$ ls ++log.*
++log.html-fold--mainline--0.1--ataka@milk.freemail.ne.jp--2005-elisp
... エディターでログを編集 ...
$ tla tag -S -l ++log.* log html-fold--mainline--0.1 html-fold--snapshots--0.1

-S オプションは、初めてブランチを作る時のおまじない。 -l オプションで、スナップショット用のログ・ファイルを指定する。これがないと、 tag of ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline--0.1--base-0 というサマリーがつく。

スナップショットを追加する

$ tla make-log
$ ls ++log.*
++log.html-fold--mainline--0.1--ataka@milk.freemail.ne.jp--2005-elisp
... エディターでログを編集 ...
$ tla tag -l ++log.* log html-fold--mainline--0.1 html-fold--snapshots--0.1

初めての時とやる事は同じ。 tla tag コマンドから -S オプションがなくなっただけ。スナップショット・ブランチへは、最新のパッチが追加される。

他のリビジョンをスナップショットに加えたい場合 (例えば、最新のパッチが patch-13 で、スナップショットへは patch-12 を加えたい)、バージョン番号を明示すればいい。

$ tla tag -l ++log.* log html-fold--mainline--0.1--patch-12 html-fold--snapshots--0.1

スナップショット・ブランチの名前を忘れた

$ tla branches
html-fold--mainline
html-fold--snapshots

で既存のブランチ名を確認できる。

スナップショット・ブランチのログを見る

$ tla revisions -s html-fold--snapshots--0.1
base-0
    tag of ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline--0.1--base-0
patch-1
    tag of ataka@milk.freemail.ne.jp--2005-elisp/html-fold--mainline--0.1--patch-4

GNU Arch の用語とコマンドを理解しきってないので、間違ってることあるかも。まだまだ分からない事が沢山。例えば、 前回 -l オプションなしでスナップショットを作ったから、変なサマリーがついちゃった。修正したいのだけど、ログの上書きってどうすればいいの? 分かる人いたら教えて下さい。

ref

2005-07-11

GNU Arch quick start |GNU Arch|

GNU Arch は、最近お気に入りのバージョン管理システム。かなりクセのあるソフトなので、僕自身、 簡単な説明を書いてる。ただ、新規にファイルを GNU Arch で管理しようと思った時、先の文書は冗長に過ぎる。せっかくだから、メモとして残しておきましょ。

html-fold.el というファイル一つを GNU Arch のバージョン管理に (初めて) 置いた時のコマンドを例に。

$ tla archive-setup html-fold--mainline--0.1       ; アーカイブ名の設定
$ tla init-tree html-fold--mainline--0.1           ; カレント・ディレクトリーを対象に
$ tla add-id -i elisp_html_fold_main html-fold.el  ; 新規ファイル登録
$ tla inventory --ids --source                     ; これはファイル登録の確認 (任意)
$ tla make-log                                     ; Emacs 等で新規のログを書く
$ tla import                                       ; アーカイブに登録

登録作業は、以上でお終い。cvs checkout に当たる作業は次の通り。

$ cd ..                                            ; 一つディレクトリーを戻って
$ tla get html-fold--mainline--0.1 html-fold-0.1   ; 先程のアーカイブを checkout
$ cd html-fold-0.1                                 ; html-fold-0.1 という directory が出来てるはず。

スナップショットの作成

どのバージョンを公開したかを覚えるのに、スナップショット・ブランチを使う。html-fold は base-0 (一番最初のリビジョン) を公開したので、これを snapshots--0.1 ブランチに保存する。

$ tla tag -S html-fold--mainline--0.1--base-0 html-fold--snapshots--0.1

-S オプションは、初めてスナップショット用のブランチを切る時に使う。二度目以降は要らない。例えば、patch-12 というリビジョンをスナップショット・ブランチに入れるには次のようにする。

$ tla tag html-fold--mainline--0.1--patch-12 html-fold--snapshots--0.1

2005-07-04

GNU Arch お試し記事、書き途中 |arch|

GNU Arch というバージョン管理システムがある。かな〜り使い勝手にクセのあるソフトなので、簡単な使い方の流れを書いてみた。

自作のソフト、 blgrep を開発した時の流れをまとめたもの。多分に書き途中だけど、参考になれば幸いです。

GNU Arch の特徴

  • CVSSubversion のような集中管理ではなく、ソース・レポジトリを個別に持てる分散管理システム。
  • コミットはファイルごとではなく、ソース・ツリー単位で行ない、これをチェッジセットという。
  • アーカイブ名そのものが、バージョン番号・ブランチの情報を含んでいる。

GNU Arch のインストール

インストールのドキュメントが見つかりにくいので、簡単に書いておく。

$ tar xzvf tla-1.3.3.tar.gz
$ cd tla-1.3.3/src
$ mkdir =build
$ cd =build
$ ../configure --prefix=/usr/local
$ make
$ make test
# make install

ちなみに、ドキュメントは、src/docs-tla/build/install.txt。configure で prefix を指定しないと、src/=build/=install 以下にバイナリーがインストールされる。zsh などの shell を使っている場合は、=build の先頭の = を \ でエスケープする必要がある。./=build でもいいけどね。