GNU Arch が
どうなるか分からない ので、バージョン管理に
darcs の勉強も始めた。そこで、
GNU Arch quick start みたいに
darcs の quick start をメモしてみる。書くのは、昨日作った JavaScript
outEntry.js を例に、
darcs でファイルを新規管理する時の手順。
新規にプロジェクトを立ち上げる
カレント・ディレクトリーにファイル
outEntry.js があるとする。これを
darcs で管理し始める手順は次の通り。
$ darcs initialize ; _darcs ディレクトリーの作成
$ darcs add outEntry.js ; ファイルをレポジトリーに登録
$ darcs record --all ; 登録を反映
What is the patch name? Initial revision. ; パッチの名前をつける
Do you want to add a long comment? [yn] n ; コメントをつけるなら y
Finished recording patch 'Initial revision.'
以上で準備はお終い。複数のファイルを登録する時は
$ darcs add outEntry.js ChangeLog README README.*
のようにする。
darcs は
GNU Arch と違いレポジトリーを集めて管理したりしない。同じ、分散型バージョン管理といっても、毛色が違うみたい。どちらかというと
RCS に近く、
RCS ディレクトリーに当たるのが
_darcs になる。
RCS と同じようにレポジトリーをフロッピーで運べる気軽さはあるものの、レポジトリーごと
rm -rf してしまう怖さがある。
メール・アドレスの設定
何の設定もなしに
darcs record --all を実行すると、
darcs は log に付けるメール・アドレスを (初回のみ) 訊いてくる。
Darcs needs to know what name (conventionally an email address) to use as the
patch author, e.g. 'Fred Bloggs <fred@bloggs.invalid>'. If you provide one
now it will be stored in the file '_darcs/prefs/author' and used as a default
in the future. To change your preferred author address, simply delete or edit
this file.
What is your email address? at-aka@email.address
これを止めさせるには、環境変数
EMAIL か
DARCS_EMAIL を設定するか、
~/.darcs/defaults に author の設定をする。
defaults ファイルの書式は次の通り。
ALL author Masayuki Ataka <at-aka@email.address>
はじめの一歩
ファイルを変更したら、変更個所を確認。
$ darcs whatsnew ; 最新リビジョンとの差分を表示
{
hunk ./outEntry.js 7
+function gid (id){
+ return document.getElementById(id);
+}
+
hunk ./outEntry.js 36
- document.getElementById('category_'+num).innerHTML = txt;
+ gid('category_'+num).innerHTML = txt;
hunk ./outEntry.js 50
- var ul = document.getElementById ('bb');
+ var ul = gid ('bb');
}
問題がなければ、commit。
$ darcs record
hunk ./outEntry.js 7
+function gid (id){
+ return document.getElementById(id);
+}
+
Shall I record this patch? (1/3) [ynWsfqadjk], or ? for help: y
hunk ./outEntry.js 36
- document.getElementById('category_'+num).innerHTML = txt;
+ gid('category_'+num).innerHTML = txt;
Shall I record this patch? (2/3) [ynWsfqadjk], or ? for help: y
hunk ./outEntry.js 50
- var ul = document.getElementById ('bb');
+ var ul = gid ('bb');
Shall I record this patch? (3/3) [ynWsfqadjk], or ? for help: y
What is the patch name? New function gid.
Do you want to add a long comment? [yn] n
Finished recording patch 'New function gid.'
darcs のチェック・インは面白くて、修正部分の小さな固まりごとに
これは今回のパッチに含めるか?
と聞いてくる。コーディング中に typo を見つけた時なんか、この機能は便利。typo 部分だけ commit することができる。
いちいち聞かれたくない時は、
-a オプションを付ける。
修正が終わったら、ログを見ましょ。
$ darcs changes
Sat Sep 17 00:47:40 JST 2005 Masayuki Ataka <at-aka@email.address>
* New function gid.
Sat Sep 17 00:07:00 JST 2005 Masayuki Ataka <at-aka@email.address>
* Initial revision.
-s オプションで、詳しいログが見れる。
$ darcs changes -s
Sat Sep 17 00:47:40 JST 2005 Masayuki Ataka <at-aka@email.address>
* New function gid.
M ./outEntry.js -2 +6
Sat Sep 17 00:07:00 JST 2005 Masayuki Ataka <at-aka@email.address>
* Initial revision.
A ./outEntry.js