はじめに
Debian パッケージを作成するということは,要するに,上流ソースのディレクトリ内に debian/ ディレクトリを作り,その中にいろいろなファイルを用意することである.このようなディレクトリ構成のせいで,debian/ 以下のコードのバージョン管理をどのようにすればよいかが直感的にわかりにくい.
このため,debian/ 以下のコードのバージョン管理を git で簡単に行うためのパッケージ git-buildpackage が用意されている.git-buildpackage では2つのブランチ,すなわち upstream ブランチ(デフォルトでは upstream)と debian ブランチ(デフォルトでは master)を用意し,以下のような手順で管理する.
- 上流の新しいバージョンをインポートする.これは upstream にコミットされた後,master にマージされる.
- パッケージ管理者は master で作業し,debian/ 以下を作成・変更し,コミットする.
- 手元でうまくいったらリリースする.リリースしたポイントを記録するためにタグが付けられる.
- debian/ 以下にバグが発見されたら 2 に戻る.
- 上流がバージョンアップしたら 1 に戻る.
今回は既に Debian リポジトリにあるパッケージを git-import-dsc でインポートする方法には触れず,最初から git-buildpackage を用いるとどうなるかを説明する.
準備
例としてパッケージ foo を管理することとする.foo の上流は git でバージョン管理されていて,それは ssh://www.example.com/srv/git/foo.git にあるとする.
$ cd /tmp $ git clone -b release0.0.1 ssh://www.example.com/srv/git/foo $ cd foo $ git archive --prefix=foo/ HEAD | gzip > ../foo-0.0.1.tar.gz
最初のインポート
git-import-orig コマンドを用いる.
$ mkdir -p ~/debian-foo/foo $ cd ~/debian-foo/foo $ git init $ git-import-orig /tmp/foo-0.0.1.tar.gz Upstream version is 0.0.1 Warning: Can't symlink orig tarball due to missing debian/changelog Initial import of '/tmp/foo-0.0.1.tar.gz' ... Succesfully imported version 0.0.1 of /tmp/foo-0.0.1.tar.gz $ git branch * master upstream $ git tag upstream/0.0.1
debian ブランチである master で debian/ ディレクトリを作成する.
$ DEBFULLNAME='Your Name' dh_make -e yourname@example.com -p foo_0.0.1 -f /tmp/foo-0.0.1.tar.gz $ git add debian $ git commit $ vi debian/control $ vi debian/rules $ vi debian/changelog $ debuild -i -us -uc -tc # test build
うまくいったら git-buildpackage を用いてパッケージを生成する.ここで dh_make が作った .orig. ファイルを消しておかないと後で変なことになるので注意.
$ git commit $ rm ../foo_0.0.1.orig.tar.gz $ git-buildpackage --git-tag -us -uc -tc
下流のバージョンアップ
debian/ 以下にバグが見つかった場合.
$ vi debian/... $ git commit $ DEBFULLNAME='Your Name' DEBEMAIL='yourname@example.com' git-dch --release $ git commit $ git-buildpackage --git-tag -us -uc -tc
上流のバージョンアップ
git-import-orig でインポートしたら,dch でバージョンを 0.0.2 に上げておかなければならない点に注意.あいかわらず orig ファイルは消しておいた方が無難.
$ cd /tmp/foo $ git pull $ git archive --prefix=foo/ HEAD | gzip > ../foo-0.0.2.tar.gz $ cd ~/debian-foo/foo $ git-import-orig /tmp/foo-0.0.2.tar.gz $ rm ../foo_0.0.2.orig.tar.gz $ dch -i $ git commit $ git-buildpackage --git-tag -us -uc -tc
0 件のコメント:
コメントを投稿