2005-09-16

darcs quick start

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.*

のようにする。

darcsGNU 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

これを止めさせるには、環境変数 EMAILDARCS_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
      
        

No comments:

Post a Comment