regexps.com
前章では チェンジセット (changesets), および, mkpatch
と dopatch
コマンド (伝統的な diff
と patch
プログラムの主題についての変わり種)を紹介しました.
本章ではより詳細な説明をします:
チェンジセットがどのようにアーカイブで使われているか,
また, commit
や update
コマンドによって
どのように利用されてるかについてです.
このことから, arch
を最大限活用する方法がわかります.
プロジェクトの最新のリビジョンを get
し, 変更を加え, ログメッセージを書き, これらの変更点をアーカイブに commit
したとしましょう.
何が起きているでしょうか?
本質的に, commit は:
1 最新のリビジョンと比較して、 あなたが加えた変更を記述するチェンジセットを求める.
2 新しいリビジョンのためにアーカイブの中にディレクトリを作成する。
3 アーカイブの中にログメッセージとチェンジセットを格納する。
この観点で, 以前の章を見直したい人もいるかもしれません: それはどのように動作するか -- 新しいリビジョンの commit.
以前に, cat-archive-log
コマンドはアーカイブからログメッセージを取り出すことを学びました
(なぜアリスがコミットできないかについて検討するを参照).
アーカイブから, チェンジセットも取り出せます:
% cd ~/wd % tla get-changeset hello-world--mainline--0.1--patch-1 patch-1 [...]
get-changeset
はチェンジセットをアーカイブから取得し, この場合は, それを patch-1
と呼ばれるディレクトリに格納します.
(チェンジセットのフォーマットが記述されているのは arch のチェンジセットフォーマットです.)
チェンジセットのフォーマットはプログラムで使うために最適化したもので, 人のためのものではありません. "手で"チェンジセットを見るのは厄介です. 代わりに, 以下のようにして, diff フォーマットでのパッチの記録を取りたいと思うことでしょう:
% tla show-changeset --diffs patch-1
[...]
もし例題を追ってきてたら, 以前に導入した changes
コマンド (しまった -- 何したんだっけ?を参照) から,
show-changeset
の出力形式を理解することでしょう
一組の変更をコミットするとき、一般的に"最良の習慣"なのは 意識して クリーンチェンジセット を作ることです.
クリーンチェンジセットは、全てが関連しあう, 一つの目的のためだけの、
変更のみを含むものです.
例えば、いくつか直さなければならないバグがあったり、追加する機能があれば、
それらの変更を混同して一つの commit
にしないことです.
クリーンチェンジセットには多くの利点がありますが, なかでも重要なことは以下の点です:
容易な点検 チェンジセットを理解しやすいのは, 一つのことだけを行なおうとしてるときです.
容易なマージ 後の章で学習が進むにつれて、アーカイブのチェンジセットの集合を調べて, その中から, 取りだして選びたい場合があります. "バグフィックス A" が必要で, "新機能 B" は不要かもしれません. 各チェンジセットが一つのみの目的を持つなら、 この手の 用心深い選別 (cherrypicking) は大変現実的です.
arch Meets hello-world: A Tutorial Introduction to The arch Revision Control Systemregexps.com