「Subversionのインストール (CentOS 5.5 64bit) 」に引き続き、Subversion の簡単な使いかたをまとめてみたいと思います。
1. チェックアウト (checkout)
Subversion サーバ内 hello リポジトリの全ファイルを、ローカルの作業ディレクトリである ~/hello に取得します。
(*) 前回に引き続き、Subversion サーバは localhost としています。
$ cd ~/hello
$ svn checkout svn+ssh://localhost/var/svn/repos/hello
[ユーザID]@localhost's password:
svn+ssh プロトコルを使用しているため、Subversion サーバへのログインパスワードが要求されますのでパスワードを入力してください。
A hello/branches
A hello/tags
リビジョン 1 をチェックアウトしました。
現時点では「trunk」「branches」「tags」の3つのディレクトリしかありませんのでチェックアウトは短時間で完了します。
結果を確認してみましょう。
. .. .svn branches tags trunk
(*) 青字はディレクトリです。
「.svn」というディレクトリができています。Subversion 管理情報が格納されているディレクトリで、全ディレクトリ (今回の例だと trunk、branches、tags) に作成されます。
2. ファイルの追加 (add, commit)
trunk 配下に新規ファイル「test.txt」を追加します。
$ echo "sample" > test.txt
現時点では test.txt がローカルの作業ディレクトリ上に作成されただけです。
ファイルのステータスを確認するオプション (status) で svn コマンドを実行してみても
? test.txt
「?」と表示され、リポジトリは存在を認識していない状態となっています。
svn コマンドを add オプション実行することで、リポジトリの追加対象となります。
ステータス確認の結果も「A」(ADD: 追加) となっています。
A test.txt
$ svn status
A test.txt
残念ながら、この時点でもまだリポジトリには反映されていません。
svn コマンドを commit オプション実行して、初めてリポジトリに反映 (コミット) されます。
[ユーザID]@localhost's password:
追加しています hello/trunk/test.txt
ファイルのデータを送信中です.
リビジョン 2 をコミットしました。
(*) パスワードの入力が必要となります。
3. ファイルの変更 (diff, commit)
今度は、先ほど追加した「test.txt」の内容を変更します。
前回と同様、commitしない限りリポジトリには反映されません。
ステータスを確認してみます。
M test.txt
「M」(MODIFIED: 更新) となっています。
また、diff オプションを使用することで、リポジトリと作業ディレクトリの内容を比較することも可能です。
Index: test.txt
===================================================================
--- test.txt (リビジョン 2)
+++ test.txt (作業コピー)
@@ -1 +1 @@
-sample
+Hello, SVN.
差分内容に問題内容でしたらコミットします。
手順は「2. ファイルの追加」と同様です。
[ユーザID]@localhost's password:
送信しています hello/trunk/test.txt
ファイルのデータを送信中です.
リビジョン 3 をコミットしました。
(*) パスワードの入力が必要となります。
4. 他ユーザの変更内容の取り込み (update)
複数ユーザで同一プロジェクトを進めていると、他のユーザが修正したソースを自分の作業ディレクトリに取り込む必要があります。
他のユーザが作成・コミットした「hello/trunk/test2.txt」を取り込みます。
オプションは update を使用します。
[ユーザID]@localhost's password:
A hello/trunk/test2.txt
リビジョン 5 に更新しました。
(*) パスワードの入力が必要となります。
(*) hello/trunk/test2.txt コミット時のリビジョンが4であるため、今回のリビジョンは5となっています。