#author("2021-06-28T08:25:16+09:00","","") #author("2022-06-09T17:28:56+09:00","","") [[MIFES/バージョン管理システム]] *バージョン管理システムについて [#ic7e654d] #contents(); ***▼バージョン管理システムとは [#w578a8c5] コンピューターの世界では、ある時点の状態をそのままもう一つ残しておくことを「バックアップ」といいます。 バージョン管理システムは「バックアップ」をシステム化し、「プロジェクト」で扱うファイルをまとめて管理するためのシステムです。 パソコンで情報を扱うあらゆる「プロジェクト」において、日々更新されるファイルの管理は大きな命題です。 - 修正作業が完了したが、元に戻すことになった - 修正前の状態に戻したが、やっぱり修正が必要だった - 知らない間に誰かが変更して、修正したところが元に戻ってしまった &ref(NGcase.gif); といった経験をした人も多いはず。 バージョン管理システムは、ファイルごとの修正履歴と、一緒に修正したファイル群のリビジョンを管理できるので、 - 過去のリビジョンに戻す - 最新のリビジョンに戻す - 他のメンバーに、今修正中であることを伝える - 誰が修正したのかを確認する - リビジョン同士を比較して、どこが修正されているかを確認し、調整する などが行えます。 プログラムソースの管理を目的に誕生したシステムのため、これまでは主にソフトウェアの開発プロジェクトに利用されてきましたが、プログラムソースしか管理できないというものではありません。 バージョン管理システムは、論文や書籍などの原稿管理や、個人的なファイル管理にも利用できます。 ''バージョン と リビジョン''(Version/Revision) バージョンは「版」、リビジョンは「修正」「改訂」という意味があります。 日々行うのは「修正」や「改訂」の作業なので、このページでも「リビジョン」という言葉を使っています。 ***▼リポジトリ [#p79614ac] バージョン管理システムは、データーベースシステムの一種で、多くのシステムでこのデータベースを リポジトリ とよびます。 リポジトリには、管理下のファイルごとに作成日時、変更日時、変更点、変更を行ったユーザー名などが記録されます。 記録した内容は、リポジトリの対象ユーザーならだれでも参照することができるため、他のユーザーが修正した過去のリビジョンを入手したり参照したりできるため、最新リビジョンと比較してどこが変更されているのか、いつ変更されたのかを見つけることができるのです。 **バージョン管理システムを使った編集作業 [#c6e3bbe1] ***▼バージョン管理システムを使った編集作業 [#e6b5bbc9] 1.作業開始 2.更新 &ref(edit_setup.gif); では、具体的にユーザーはどのように日常の編集作業をおこなうのでしょうか。Subversionを例に見てみましょう。 ***1: 【更新】 編集したいファイルの最新リビジョンを入手する [#m4c7fbc3] ユーザーは、バージョン管理されているファイルを編集する前に、そのファイルの最新のリビジョンを「作業フォルダー」に入手します。 Subversionではこの操作を【更新】と言います。 【更新】を実行すると、Subversionは「作業フォルダー」の対象ファイルと「リポジトリ」の対象ファイルの最終更新時間を比較し、「リポジトリ」内のファイルの方が新しいときは、「リポジトリ」にある最新版を「作業フォルダー」に上書きコピーします。 このとき、他のユーザーが編集をしないように、「ロック」することができます。ただし、長時間作業を行うときは、他の人の作業を止めてしまう場合があるので、要注意です。 ***2: 編集作業 [#tee0066c] ユーザーは「作業フォルダー」に取り込んだ最新状態のファイルを、テキストエディタなどを使って編集し、上書き保存します。 ***3: 【コミット】 編集したファイルを「リポジトリ」に登録する [#u924d4f5] ユーザーは、編集が完了したら「作業フォルダー」内の最新ファイルを「リポジトリ」に登録します。 Subversionでは、この操作を【コミット】と言います。 【コミット】を実行すると、Subversionは「作業フォルダー」の対象ファイルを最新リビジョンとして、「いつ」「だれが」コミットしたかなどの情報と一緒に、「リポジトリ」に登録します。 【更新】時に「ロック」したときは、「アンロック」(ロックの解除)も忘れずにしておきます。 以上が、日常的に行うバージョン管理システムでの編集作業です。 ※バージョン管理システムにより機能名称が異なる場合があります。 例)更新→チェックアウト/コミット→チェックイン など **バージョン管理システムいろいろ [#p4585958] 主なバージョン管理システムは以下のとおりですが、このほかにも多くのシステムがあります。 多くのバージョン管理システムは、オープンソースプロジェクトなどの開発時に、そのソースファイルを管理するために開発されたものです。 CVS 古くからあるソースコード管理システム。フリー(無料)だったこともあり、1990年代を通じて広く利用されていた。(集中型/フリー) Subversion 無料であること、TortoiseSVNをはじめとするクライアントプログラムが多数あることなどから、現在も広く利用されている。(集中型/フリー) Mercurial 機能は多くないが、高速に動作するなど大規模なプロジェクトにも対応できるように設計されている。(分散型/フリー) Git Linuxのソースコード管理を目的として開発され、現在もLinuxの開発プロジェクトで使用されている。 動作速度に重点が置かれている。(分散型/フリー) Visual SourceSafe Microsoft社のVisual Studio 2005までの製品に同梱されている。Visual Studioで開発する「プロジェクト」のバージョン管理を行うことができる。(集中型) ''「集中型」 と 「分散型」'' バージョン管理システムには、リポジトリ(リビジョン情報を記録するデータベース)の持ち方により、「集中型」と「分散型」の2つのタイプがあります。 集中型(集中管理方式) リポジトリはサーバーだけにある。ユーザーはファイルの操作時にこのデータベースと直接やりとりをする。 分散型(分散管理方式) りポジトリはサーバーにあるが、ユーザーの「作業フォルダー」にもリポジトリがあり、各人の更新情報はそちらで行う。 サーバーのリポジトリと「同期」をとることにより、共有情報になる。 ●次では、SubversionとMIFES 9でバージョン管理をご利用いただくための設定方法などをご案内しています。 // //