見出し画像

リビジョン管理あれこれ

書ける状態では全くありませんが、思った時になるべく書く方が、次にいつ書けるかもわからないよりよい気もするので一つ簡単に書きます。「リビジョン管理」あれこれ。

通常のパソコンの利用ではあまり一般的ではありませんが、リビジョン管理とは、主に文書やプログラムのソースコードと言ったものの変更履歴を管理して以前のバージョンに戻したり、あるいは別の派生分岐を作成したりするためのシステム全般のことです。

最初期のものにRCSというものがあり、これは正しくリビジョンコントロールシステム、の略ですが、プロジェクト単位や複数人で共同作業は想定していないものの、個人がテキスト、あるいは場合によってはバイナリの変更履歴を管理するための必要最小限の機能を持ち、今日でも用途を限定すれば利用される機会があるようです。

そうするうちに、大きなオープンソースのプログラムなどのようなプロジェクト単位での複数人での作業にも対応するものも現れました。CVSなどがそうで、これは「チェックアウト」という手順により対象ファイルをチェックアウト(ある意味ロック)して自分が編集し、「コミット」という作業で変更をプロジェクトに反映させ、他の人間が編集する場合は再びチェックアウトして行う、というものです。こうしたものをプロジェクト単位で管理するものをリポジトリと呼ぶことがあり、共同作業者はこのリポジトリを共有して共に作業を行う、という形式になります。

CVSをより進化させたものがSubversionというもので、これも集中型のリポジトリを持つ共同作業、共同開発をほぼ前提としたリビジョン管理システムでした。ローカルを持たず、一カ所のリポジトリに対して各位が変更や修正を行うというものです。但し、分散したローカルのリポジトリを持たないため、差分の反映が一カ所であることから、一人がローカル内で行った作業結果をローカルにまず保存しておく、などと言った作業が若干しにくいものと言えました。

そのうちに、主にLinuxカーネルの開発者であるリーナス・トーバルズらを中心として、より高度なリビジョン管理システムとしてGitが考案させることとなりました。これは、分散型リポジトリのリビジョン管理システムとしては今日ほぼ主流と言ってよく、センターのリポジトリ及びそれを複製したローカルのリポジトリからなり、各位は自分の修正をローカルで保存・比較しながら作業して結果をリモートに「プッシュ」するという手順で処理を進めます。この時、同じ対象の同様の箇所を他の人間が修正を行っていた場合は、それまでの履歴や作業内容から互いの修正などが可能な場合はマージされてセンターに反映され、そうでない場合はその「コンフリクト」を各位が内容を見ながら手作業で修正して反映する、という作業になります。

簡単に以上にしますが、リビジョン管理システムは主にUnixを対象とした環境での利用が多いと思いますが、サービスによってはそうしたリポジトリを一定容量まで任意で作成できるものもあるため、方法によっては作業環境やツール等に依存せずの利用も可能と思います。物によっては、開発ツールや編集ツールそのものが、そうしたものへのオペレーション機能を備える場合もあります。以上です。

いいなと思ったら応援しよう!