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

2005-10-19

Emacs の darcs モード (vc-darcs)

バージョン管理システム darcsEmacs から操作するツールについて紹介しやう。 Emacsdarcs 関連パッケージは以下のサイトで公開されている。

上記ページにはいくつかの darcs 用パッケージがあるけれど、今回僕が試したのは vc-darcs.elEmacs がデフォールトで提供している VC (Version Control) パッケージに darcs を加えるツール。VC パッケージについては、 Emacs Reference Manual の Version Control の項を参照のこと。

簡単な使い方

使い方は、Emacs の vc パッケージに同じ。つまり...

C-x v v
修正分をコミット (Log 入力バッファーが表示されるので、入力後 C-c C-c)。
C-x v =
最新バージョンとの差分を表示。
C-u C-x v =
任意のバージョンとの差分を表示。
C-x v l
darcs の Log を表示。
C-x v u
ソースの修正分をキャンセルして最新のバージョンに戻す。

といったことができるようになる。それから vc-darcs を入れると、バックアップ・ファイル (ファイル末尾に ~ のついたファイル) を作らなくなる。

残念なことに、 darcs のインタライティブな commit は vc-darcs からは出来ない。

インストール

上記サイトのリンクを辿ると、vc-darcs.el の最新版をダウンロードできる。

なお、vc-darcs は darcs でバージョン管理されている。だから、 darcs で開発版の vc-darcs.el を手に入れることも可能。やり方は下の通り。

$ darcs get http://www.pps.jussieu.fr/~jch/software/repos/vc-darcs/_darcs/ (ソースの入手)
$ darcs pull                                                               (最新版の更新)

vc-darcs は単体のソース・ファイルなので、load-path にファイルを移動してインストール終了。.emacs に次の一行を追加しておく。後は好みに応じてメール・アドレスを設定するなり、ご自由に。

;;
;; vc-darcs
;;
(add-to-list 'vc-handled-backends 'DARCS)
(setq vc-darcs-mail-address "Masayuki Ataka <ataka@foo.com>")

ref

2005-09-17

darcs で補完入力を使う |zsh|

バージョン管理システム darcs をコマンドラインで使う時の usage は次の通り。

$ darcs COMMAND OPTIONS ARGUMENTS ...

一般的な shell なら、 darcs までは補完が利く。でも、そこから先の COMMANDOPTIONS にも補完が利くと嬉しい。

僕が愛用してるのは zsh なので、zsh に darcs の補完機能を加える設定方法を書いてみた。

なお、zsh に限らず、bash や tcsh の補完についても Wiki (英語) に情報があるので参照されたし。

設定

以下のサイトの Zsh Completion の項から、 zsh completion newをダウンロード。

ダウンロードしたファイルを _darcs というファイル名に変更後、zsh の私的 completion 用ディレクトリーに入れる (ここでは ~/etc/zsh/ としよう)。

.zshrc を開いて、次のコードを追加する。

fpath=(~/etc/zsh $fpath)
autoload -U ~/etc/zsh/*(:t)
autoload -U compinit && compinit

zsh を起動し直せば、設定が反映されてるはず。

darcs の補完も、次期 zsh では標準として組み込まれるそうな。

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
      
        

2005-07-13

darcs でパッチを送る |darcs|evolution|

darcs で管理されてるプログラムのソースを取得して、手元で修正を加えた。

分散管理システム ( darcs もその一つ) のよい所は、手元に自分用のレポジトリを作って (分散と云われる所以ね) 管理ができる所。つまり中央レポジトリへの write 権がなくても、自分好みに開発ができる。自分用の (あまりに自分専用すぎて他人には公開できない) パッチを作ってる人とか、所用でネットに繋げないけど開発を続けている人とか、一回のコミット単位が大きすぎて中央へのコミット前に手元でも何回かバージョン管理したい人とかに便利。

閑話休題。手元のパッチを、オリジナルの作者に送ろうと思う。その為に darcsdarcs send というコマンドを持っているのだけど、デフォールトでは動かなかった。何でだろ。マニュアルを読むと、 evolution を使ってメールを送る方法が書いてあったのでメモ。

% darcs send --sendmail-command "evolution \"mailto:%T?subject=%S&attach=%A&cc=%C&body=%B\""

好みを言えば、 Mew をコマンドラインから呼び出せるとよいのだけどなぁ。誰か、そういう事やってる人いる?

ref

2005-07-01

バージョン管理システム darcs のインストール |darcs|

バージョン管理システムの一つ、 darcs をとある事情でインストール。使い方なんて全然分かってないけど、インストールに少し手こずったのでメモを残しとく。

darcs

darcs は、新しめのバージョン管理システム。同種のソフトだと、 RCSCVSSubversionGNU Arch なんてのがある。 GNU Arch なんかと同じく、分散管理ができるみたい。巷では、パフォーマンスが低いとか、まだベータ・バージョンなんて風評も聞く。ちょっと使った感じでは、個人使用ならこれはいい、かもしれない。特にログの書き方が面白い。もう少し使ってから、使用感を書きます。

darcs のソースコードは Haskell というマイナー (失礼!) な言語で書かれている。なので、インストールの手順は次のようになる。

  1. Haskell のコンパインラーのインストール
  2. darcs のインストール

ghc -- The Glasgow Haskell Compiler

ghc -- The Glasgow Haskell Compiler というのが、事実上 Haskell の標準コンパイラーのよう。[2005-06-30] の最新版は 6.4。

configure があるので、 configure; make; make install で一発かと思いきや、configure でコケる。

configure: error: GHC is required unless bootstrapping from .hc files.

最初、このエラーを見た時は意味が分からなかった。文章は読めるけど、理解ができないってやつね。

ghc のページを見てみたら、不吉な問言を発見。

The source distribution needs an installed GHC 5.X or 6.X to build.
If there isn't a binary distribution for your platform (any version), then you'll need to consult the section on Porting GHC in the Building Guide.

うわぁ。ここは、素直にバイナリーを頂きます。ちなみに、用意されてるバイナリーは、Linux (x86, x86_64, PowerPC, PowerPC 64), Windows (x86), FreeBSD (x86), OpenBSD (x86), MacOS X (PowerPC), AIX (PowerPC)。

バイナリーをインストールしたら、ソースからのコンパイルも出来た。ただ Pentium4 2.8G でも、コンパイルに 1 時間以上かかった。やる人は気合いを入れて。

darcs のインストール

darcs インストールの最大の山は、 The Glasgow Haskell Compiler なので、後は楽。

./configure; make test; make install

でお終い。

オマケ

darcs でソースが配布されている場合:

  1. ソースの取得: darcs get http://foo.bar.org/fofofo/bababa/
  2. ソースの更新: darcs pull

ref