cvs バージョン管理 使い方
同業者と話すときは「日本語で喋れ!日本語で!」と心の中で毒づくも、自分も専門家という立場なので大っぴらには文句を言えない日々を送る。※詳細プロフィールは、※本サイトは ファイルに加えられた変更履歴の … ソフトウェアを開発する際、ソースコードや各種リソースの管理に役立つのがバージョン管理システムだ。バージョン管理システムはソースコード管理システムなどとも呼ばれ、大規模な開発を行う際には必須と言っても過言ではない。また、大規模な開発だけでなく小規模な開発や個人による開発においても、ファイルの変更履歴の記録やバックアップといった用途に活用できる。 本特集ではバージョン管理システムの基本的な考え方や用語を解説するとともに、オープンソースソフトウェア/フリーソフトウェア開発において多く利用されているバージョン管理システムである、 バージョン管理システムとは、その名のとおりプログラムのソースコードや各種リソースを管理するためのシステムだ。代表的なものとしてはCVSやSubversion、Git、Mercurial、Visual SourceSafeなどがある。バージョン管理システムは以下のような機能を備えており、特に複数人/複数拠点間で連携してソフトウェア開発を行う際に有効である。 なお、バージョン管理システムは中央集権型と分散型の2つに分けられる。中央集権型は1つのサーバーで変更履歴が管理され、そのサーバーに対して後述するチェックアウトやコミットといったアクセスを行うもので、代表的なものにCVSやSubversionがある。一方、分散型のバージョン管理システムではローカルで変更履歴が管理されるもので、代表的なものにGitやMercurialがある。本記事ではCVSおよびSubversionを例にバージョン管理システムの利用法を説明しているが、基本的な考え方はほかのバージョン管理システムでも同じである。 バージョン管理システムを使用した開発では、(1)「リポジトリ」と呼ばれるファイルや管理情報などを保存する場所から作業用のディレクトリにファイルを取り出し、(2)取り出したファイルに修正を加え、(3)変更を加えたファイル(もしくは変更差分)をリポジトリに送信する、といったステップで開発作業を進めていく(  リポジトリから作業用ディレクトリにファイルを取り出す作業は「チェックアウト」と呼ばれ、また作業用ディレクトリに取り出したファイルは「ワーキングコピー」、もしくは「ローカルコピー」などと呼ばれる。また、ワーキングコピーに加えた変更点をリポジトリに保存する作業は「コミット」もしくは「チェックイン」などと呼ばれている。 上記のようなリポジトリに対する操作は、専用のクライアントを介して行う。CVSの場合「cvs」、Subversionの場合「svn」という、コマンドラインで操作するクライアントが一般的だが、WindowsのエクスプローラからCVS/Subversionリポジトリにアクセスできる「TortoiseCVS」や「 使用するバージョン管理システムごとにファイルの管理方法は異なるが、どのバージョン管理ツールでも共通なのが、ファイルを階層構造で管理する点だ。開発に使用するツールによっても異なるが、ソースファイルや各種リソースファイルは関連するものごとにディレクトリを分けておくのが一般的だ。バージョン管理ツールは、このディレクトリ階層を保ったままファイルを管理することができる。一般に、開発に必要なファイルを含むトップディレクトリからの階層構造(ツリー)のことを「モジュール」もしくは「プロジェクト」などと呼ぶ(  バージョン管理システムを使用した開発で、最初に行うのがリポジトリにモジュールを登録する作業だ。この作業は「インポート」などと呼ばれる。ファイルをインポートすると、リポジトリにはファイルの内容に加え、ファイルの作成者や以後の変更履歴など、ファイルを管理するための情報が作成され、ファイルとともに保存される。 リポジトリに格納されているファイルをチェックアウトすると、通常はファイルとともにその管理情報がワーキングコピーとして作業ディレクトリに保存され、これを元にファイルの管理が行われる。チェックアウトしたファイルは、バージョン管理システムを使わない場合とまったく同様に、エディタや統合開発環境(IDE)などで自由に編集できる。通常管理情報はソースファイルやリソースファイルとは異なるファイル/ディレクトリに保存されるからだ。 ファイルに加えた変更は、コミットを行うことでリポジトリに保存される。コミットは通常モジュール単位で行い、ワーキングコピーの管理情報を元に、変更が加えられたファイルの情報がリポジトリに送信される。通常、コミットを行う際は変更点や伝達事項といったメモも記録しておける。 なお、ファイルの変更履歴は「リビジョン」と呼ばれる管理番号で管理される。通常、コミットを行うごとに付加されたリビジョンは増加していく。 複数人で開発を行っている場合や、複数の拠点で開発を行っている場合、ワーキングコピーのリビジョンがリポジトリにあるファイルのリビジョンよりも低い場合がある。この場合、「アップデート」(更新)を行うことで、ワーキングコピーをリポジトリにある最新ファイルのものと同期できる。 メニューバーから「Modify」->「Update Selection」を選び、CVSサーバ上のファイルを更新します。 関連サイト. 特に CVS サーバは立てず、Windows のファイル共有で行うので、「ローカルに接続されたディレクトリ」を選択します。 CVSのバージョン(V): cvs 1.10 (標準) 共通設定. 基本的にciとcoコマンドを使う ci : チェックイン(要はcommit) co : チェックアウト(要はpush) rcsdiff : diff; リビジョン管理したいファイルを登録する(ci -i) All Rights Reserved. $ cvs tag Release-4_1-2003_10_16 ↑ タグ名 (ここでは, <バージョン名>-<日付>としている) タグの付け方に関してはプロジェクト毎に決まり毎を作っておくべきであろう。 cvsはオープンソースソフトウェアの開発において、広く使われているバージョン管理システムだ。cvsはソースコードなどのリソースやその変更履歴がcvsサーバー側で管理される中央集権型のバージョン管理システムで、cvsサーバーに対してチェックアウトやコミットといった操作を行うことで開発作業を進めていく。 ステム開発系の仕事を中心に10年以上IT業界に生息しているが、実は横文字と専門用語が苦手。 Contentsなお、構築に使用したマシン環境は、下記のとおりです。上記のソフトウェアと環境を使って解説を進めていきますが異なる環境でも同様の操作は可能です。また以下の記事を参考にして仮想環境の構築を解説していますので参考にしてください。CVSは、1982年にリリースされた単独型の バージョン管理ソフトウェアの多くは、UNIXマシンをリポジトリサーバーとして使用しているため、UNIXマシンを構築します。今回は、仮想化ソフトウェアのVagrantを使用してUNIXマシン(BOX)を構築します。 構築するUNIXマシンにWindowsからアクセスするため、ブリッジネットワークを追加します。 Vagrantfileの編集が終了したら、BOXを起動します。 BOXが起動しましたので、BOXに接続します。なお、ユーザーvagrantは、Vagrant用のイメージにデフォルトで作成されるアカウントです。このアカウントは、sudo実行時にパスワード無しでroot権限を取得できます。 ホスト名を設定します。ここでは、ホスト名をunixとしています。 一旦ログアウトして、再度vagrant sshで接続するとホスト名の変更を確認できます。CentOS、ubuntuなどのLinux系OSでは、インストール形態にもよりますが、多くの場合インストールされていませんので、パッケージ管理コマンドを使用して追加インストールします。 ブリッジネットワークの確認および、WindowsマシンへのPING応答確認を行います。 以上の手順で、リポジトリサーバーの構築が終了します。リポジトリサーバーが構築できましたので、バージョン管理を行います。CVSだけに限らず、バージョン管理ソフトウェアでは、リポジトリの初期化が必要になりますので、必ず初期化して下さい。 コマンドを実行しても何も表示されませんが、初期化は終了しています。なお、CVSではコマンドを実行する際に、リポジトリの場所を指定する必要があるため、毎回-dオプションを指定して利用するのも煩わしいため、環境変数CVSROOTを設定します。 以上で、リポジトリの初期化が終了します。管理したいフォルダまたは、ファイルをモジュールとして登録します。 実行すると、環境変数EDITORで指定されたエディタが起動しますの、CVSログを編集します。 なお、import時に-mオプションを指定すると、エディタを起動せずのCVSログを編集できます。 以上で、モジュールの登録が終了します。登録したモジュールを、任意のフォルダ上にチェックアウトします。 チェックアウトしたモジュール中のファイルを修正し、修正をリポジトリに反映(コミット)します。 実行すると、バージョンが1.1から1.2に変更されたことがわかります。CVSでは、複数名によるリポジトリ操作が可能ですので、commit前のモジュールをcheckoutした場合、commit後のモジュールに変更する必要があります。例えば、Aさんがfile_A.cを更新する前に、Bさんがcheckoutした場合、BさんはAさんのcommitしたfile_A.cを更新する必要があります。実際のCVSでの運用では、checkout→updateという流れでモジュールを最新化しますので、誰がファイルを編集中なのかを意識する必要はありません。チェックアウトした作業用ディレクトリにファイルを追加し、リポジトリに反映します。なお、SSH公開鍵は、Cygwin上で予め作成しておきます。Cygwin上のSSH公開鍵をリポジトリサーバーにコピーします。ここでは、Cygwin上のSSH公開鍵id_rsa.pubをリポジトリサーバーの作業用ディレクトリにpunio.pubという名前でコピーしています。 ファイルが追加されましたので、ファイルを追加します。 commitするようにメッセージが表示されますので、続いてcommitを行います。新しく追加されたファイルが、バージョン 1.1で登録されたことがわかります。 最後に、作業用ディレクトリ上のSSH公開鍵を、 これまでの作業で、SSH接続の準備ができましたのでWindows上のCygwin端末から、リポジトリを操作します。なお、opensshおよび、cvsコマンドはCygwinのデフォルトインストールではインストールされませんので、冒頭で紹介した記事を参考にして必要なコマンドをインストールして下さい。SSH秘密鍵を用いて、リポジトリサーバーへ接続可能か確認します。 リポジトリサーバー上で指定した環境変数CVSROOTの他に、CVS_RSHをリモート側で リモートからモジュールをチェックアウトします。 先に追加したSSH公開鍵もcommitされているため、チェックアウト時に取得できたことがわかります。 ファイルの変更履歴を表示します。 作業用ディレクトリ上にあるファイルの状態を表示します。Stickyがnoneになっていないファイルは、commitできなくなっているため注意が必要です。 一旦、SSH接続環境を構築するとリポジトリの操作は、、SSH接続時にパスフレーズを要求されますが、モジュールの登録を含め全てリポジトリサーバー上と同じように操作できますので、いろいろなコマンドを試してみて下さい。ここまで、CVSの環境を構築し、簡単な使い方を解説しました。2008年に開発が終了したとは言え、CVSはまだまだ現役で使えるバージョン管理ソフトウェアです。記事で紹介できなかったコマンドもたくさんありますが、紹介した基本的なコマンドを駆使して、ソースコード管理にチェレンジしましょう。次回は、リモートリポジトリを使うなら、tracpath(トラックパス)が便利です!下記記事をぜひご参照下さい。さっそく実務でも使って見ましょう。Copyright © 2019 OpenGroove,Inc.