secretbase.log

.NET/C#/Pythonなど

チェンジセットという概念

Subversionを含む最近のバージョン管理システムには、”チェンジセット”という概念があります。

チェンジセット(Changeset)とはなにか

チェンジセット(Changeset) とはなんでしょうか。

日本のWikipediaには無かったので 英語のWikipedia をみてみると

In revision control, a changeset is a way to group a number of modifications that are relevant to each other in one atomic package,
that may be canceled or propagated as needed. This is one synchronization model.

http://en.wikipedia.org/wiki/Changeset

多少意訳を含めると

"リビジョン管理システムにおいて、チェンジセットは一つのアトミックなパッケージ中の密接な関係がある多数の変更をグループ化する方法です。これは一つの同期モデルです。"

といったところでしょうか。

いまいち分かりづらいですが、SVNにおいては、コミットの操作においてその全ての変更(チェンジセット)をリビジョンとしてグループ化し、リビジョン番号を割り当てています。

すなわち、”1つ以上のファイルの変更を、1つの論理的な単位にまとめられたもの”と考えてもよいでしょう。

よくあるケースですが、ある不具合修正や仕様変更に対するソースコードの修正は、複数のファイルの変更を伴うことがほとんどだと思います。
そういった場合、複数のファイルの変更をひとつの変更単位にまとめることで、変更履歴が分かりやすい形となることを意味しています。

Subversionにおける リビジョン番号

リビジョン番号ですがこれは単にひとつずつ更新される数字です。任意のリビジョン番号を指定して、ファイル群(つまりスナップショット)をチェックアウトすることができ、tagをつけたり、branchしたりといったことが可能です。

チェンジセットという概念自体は、SVNに限った話ではないので覚えておいて損はないですね。

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)