Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

UbuntuでSubversionを利用してみる。

最近、Rubyを頻繁に利用する機会が増えました。
Windows上でもWSHやExcelマクロ等をRubyで書いています。
WideStudioを利用してRubyGUIなアプリケーションを作成してみたり・・・・
もうRuby無しでは私のコンピュータライフはありえません。
そんなこんなでRubyを利用していると、様々なプログラムソースが乱立してしまって、管理に困ってきました。
そこで、Subversionを利用してバージョン管理を行うことに。
今回はLinuxのコンソールを利用してSubversionを利用します。
基本的なコンピューティング環境がLinuxなので。

利用するために必要な手順

当然ですが、あらかじめSynapticを利用してSubversionをインストールしておく必要があります。
Synapticの利用方法については、他ブログで多数紹介されているのでそちらにお任せする事にします。

LinuxでもWindowsでもSubversionでバージョン管理を行う場合は、下記の手順が必要となります。

  1. バージョン管理したいファイルを用意する
  2. 任意のディレクトリにリポジトリを作成する
  3. リポジトリへバージョン管理したいファイルをインポートする
  4. データベースからチェックアウト

バージョン管理したいファイルを用意する

私の場合、自分が作成するRubyアプリケーションのソースコードをバージョン管理する事にします。
今回はLInuxに焦点を当てていますが、Windows版ならばExcelファイル等もバージョン管理できるみたいです。

任意のディレクトリにリポジトリを作成する

★PC上にリポジトリ用のディレクトリを作成します。

私の場合はhomeの下にあるworkディレクトリの下にRepositoryディレクトリを作成し、その中にリポジトリを作成する事にしました。
/home/work/Repository

リポジトリ作成コマンドを実行

上記で作成したRepositoryディレクトリへ移動し、svnadmin createコマンドを実効するとリポジトリが作成されます。

KAMUYCIKAP cd /home/work/Repository
KAMUYCIKAP svnadmin create ./RubyProject

リポジトリへバージョン管理したいファイルをインポートする

ここまでの手順で無事にリポジトリが作成出来ているはずです。
いよいよ作成したリポジトリへバージョン管理したいファイルをインポートします。

★カレントディレクトリをバージョン管理したいファイルがあるディレクトリへ移動する。

インポートする前にカレントディレクトリをバージョン管理したいファイルがあるディレクトリへ移動しておきます。

★初期インポートコマンド実行
KAMUYCIKAP svn import file:///home/kamuycikap/work/Projects/Repository/RubyProject
★コメントの記入

初期インポートコマンドを実行するとコンソール上にGnomeエディタが起動し、インポートに対するコメントを入力することが出来ます。
コメントは入力してもしなくても問題ありませんが、どんなファイルだったかくらいは残しておいても良いと思います。
初期インポートのコメントなので、「初期インポート」とコメントに書く事にしました。

<注意>
「-- この行以下は無視されます --」と書かれている行以降に込めんとは書かないように注意して下さい。
このコメントを破棄する形で終了するとインポートがキャンセルされます。

★インポート結果が画面上に表示される。

無事にインポートが実行されると、画面上に結果が表示されます。

KAMUYCIKAP% svn import file:///home/kamuycikap/work/Projects/Repository/RubyProject
追加しています              exe
追加しています  (バイナリ)  exe/setup.exe
追加しています  (バイナリ)  exe/setupfile.zip
追加しています              download_page
追加しています              download_page/index\.html
追加しています              download_page/downamp.html
追加しています              download_page/index.html
追加しています              src
追加しています              src/TKAmazonECS.rb
追加しています              src/ShipmentSortWork.rb
追加しています              src/MainWindow.win.bak
追加しています              src/PmnExit_Activate.rb
追加しています              src/nbproject
追加しています              src/nbproject/project.properties
追加しています              src/nbproject/project.xml
追加しています              src/nbproject/private
追加しています              src/nbproject/private/config.properties
追加しています              src/nbproject/private/private.properties
追加しています              src/nbproject/private/private.xml
追加しています              src/MainWindow.win
追加しています              src/ShipmentSortWork.wns
追加しています              src/MainWindow.rb.bak
追加しています              src/ShipmentSortWork.prj
追加しています              src/IfdBarCode_KeyHook.rb
追加しています              src/TKinString.rb
追加しています              src/ShipmentSortWork.col
追加しています              src/MainWindow.rb

リビジョン 1 をコミットしました。

データベースからデータをチェックアウトする

★チェックアウトするディレクトリを作成

データベースからチェックアウトするディレクトリを作成します。
このディレクトリにデータベースのファイルを展開するようになります。

私は下記のディレクトリに作成する事にします。
/home/kamuycikap/work/Projects/RubyTools

★チェックアウトコマンドを実行する

チェックアウトにはsvn checkoutコマンドを使います。

KAMUYCIKAP% svn checkout file:///home/kamuycikap/work/Projects/Repository/RubyProject .
A    exe
A    exe/setup.exe
A    exe/setupfile.zip
A    download_page
A    download_page/index\.html
A    download_page/downamp.html
A    download_page/index.html
A    src
A    src/TKAmazonECS.rb
A    src/MainWindow.win.bak
A    src/ShipmentSortWork.rb
A    src/PmnExit_Activate.rb
A    src/nbproject
A    src/nbproject/project.properties
A    src/nbproject/project.xml
A    src/nbproject/private
A    src/nbproject/private/config.properties
A    src/nbproject/private/private.properties
A    src/nbproject/private/private.xml
A    src/MainWindow.win
A    src/ShipmentSortWork.wns
A    src/MainWindow.rb.bak
A    src/ShipmentSortWork.prj
A    src/IfdBarCode_KeyHook.rb
A    src/MainWindow.rb
A    src/ShipmentSortWork.col
A    src/TKinString.rb
リビジョン 1 をチェックアウトしました。

コマンドは、svn checkout <リポジトリPATH> <作業コピーディレクトリPATH> の書式となっています。
作業コピーディレクトリPATHの指定を行わない場合は、カレントディレクトリにリポジトリ名と同じ名前のディレクトリを作ってチェックアウトしようとします。
なので、今回は"."をつけています。

チェックアウトした作業コピーの修正と既存のファイルの内容変更及び追加と削除

WindowsのSubversionでは、エクスプローラ等のファイラーに表示されているアイコンに、大将となるファイルの状態が表示されますが、コマンドラインで利用する今回のLinux環境ではそうは行きません・・・・
作業コピーの状態を知るためにコマンドが用意されています。

★作業コピーの修正状態を取得する

チェックアウトした作業コピーがリポジトリにあるファイルと内容が相違ないかチェックするコマンドは下記のコマンドになります。

KAMUYCIKAP% svn status
M test.rb
KAMUYCIKAP%

test.rbがリポジトリに含まれるファイルです。
test.rbの内容が編集編集されていると、「M」がファイルの前に表示されています。
上記のサンプルは編集されている状態のサンプルです。

★具体的な修正箇所を取得する

svn statusコマンドではファイルが修正されたかどうかを取得することは出来ますが、ファイルの度の部分が修正されたかまでは取得できません。
具体的なファイルの修正箇所を調査するコマンドは下記のコマンドになります。

KAMUYCIKAP% svn diff RUBY_COMMITTERS 
Index: RUBY_COMMITTERS
===================================================================
--- COMMIT        (リビジョン 1)
+++ COMMIT        (作業コピー)

svn diffはファイル名を指定しない場合、全てのファイルがチェックの対象になります。

★修正した作業コピーをデータベースへコミットする

コマンドsvn commitかsvn ciを利用します。
インポートの時と同じようにエディタでコメントを入力することが可能です。
コメント内容を破棄して終了することで、コミットを中断することが出来ます。

KAMUYCIKAP% svn commit -m "過去のファイルを削除し、新しいクラスファイルを追加" 
削除しています              src\main00.rb
追加しています              src\main01.rb

リビジョン 1 をコミットしました。
★新しく作ったファイルを追加する

プロジェクトに新しいファイルを作成した後にsvn statusコマンドを実行すると下記の用に表示されます。
rubyold.rbを編集し、rubyadd.rbファイルを新しく作成した場合のサンプルです。

KAMUYCIKAP% svn status
?   rubyadd.rb
M   rubyold.rb
KAMUYCIKAP%

?マークのあるファイルは、このファイルがまだSubversionの管理対象とはなっていない事を意味しています。
このファイルを管理対象に追加するためにはsvn addコマンドを利用します。
svn addコマンドは明示的にファイル名を引数として与える必要があります。
追加するファイル名は並べて記述する事も可能です。

KAMUYCIKAP% svn add rubyadd.rb
A   rubyadd.rb
KAMUYCIKAP%

結果、もう一度svn statusを実行するとこうなります。

KAMUYCIKAP% svn status
A   rubyadd.rb
M   rubyold.rb
KAMUYCIKAP%

上記結果のAマークはこのファイルが追加予告状態にある事を示しています。
この状態からコミットすることで追加します。

コミットするにはsvn commitを行います。

KAMUYCIKAP% svn commit
追加しています   rubyadd.rb
送信しています   rubyold.rb
ファイルのデータを送信中です..
リビジョン 2 をコミットしました。
KAMUYCIKAP%
★すでに管理しているファイル自体を削除する

コミットによって追加または修正されたファイルを削除するためには、svn delコマンドを利用します。
svn addと同じようにファイル名を指定してコマンドを実行します。

KAMUYCIKAP% svn del rubyadd.rb
D   rubyadd.rb
KAMUYCIKAP%

追加予告状態と同じようにDがファイル名の左側に表示されます。
Dマークが削除予告状態を表しています。
コミットすることで削除予約状態から削除状態になります。

KAMUYCIKAP% svn commit
削除しています   rubyadd.rb

ファイルのデータを送信中です..
リビジョン 2 をコミットしました。
KAMUYCIKAP%