変更をコミットする

前回の記事ではリポジトリから作業コピーを取得しました。今回は、リポジトリ管理下にあるファイルに変更を加えて、コミットする手順を見ていきます。

変更を行う

まず、作業コピーを取得したディレクトリに移動します。

# cd /home/testuser/work/
work# ll
-rw-r--r-- 1 root root 153 Aug 13 22:51 index.html

「index.html」を適当に編集し、変更を加えます。

work# vi index.html
<html>
<head>
<title>初めてのSubversion</title>
</head>
<body>
<h1>初めてのSubversion</h1>
<p>初回のリポジトリ登録</p>
<p>1回目の更新</p>
</body>
</html>

変更を確認する

上記で加えた変更をSubversionは正しく認識しています。Subversionがどのように認識しているかはsvn statusコマンドで確認できます。 svn statusコマンドは作業コピーにあるファイルやディレクトリの状態を出力します。

work# svn status
M       index.html

1列目は、項目が追加、削除、変更の、どの状態かをを示します。
上記出力結果では’M’となっているため、「index.html」は何らかの修正が加えられたことがわかります。他に下表のような種類があります。

表示 意味
空欄 変更なし。
A 項目は追加準備されている。
D 項目は削除準備されている。
M 項目は修正された。
R 項目は作業コピー内で置き換えらた。これは、そのファイルが削除準備され、その場所に同名の新しいファイルが、追加準備されたことを表す。
C 項目の内容 (属性ではなく) は、リポジトリから受け取った更新によって競合状態にある。
X 項目は外部定義で与えられている。
I 項目は無視されている。 (例: svn:ignore 属性がついている)
? 項目はバージョン管理下にない。
! 項目は失われた (例: svn を使わずに削除・移動した場合)。また、これはディレクトリが不完全である (チェックアウトや更新が中断された) ことを示す。
~ 項目は、ある種のオブジェクト (ファイル、ディレクトリ、リンク) としてバージョン管理下にあるが、別の種類のオブジェクトで置き換えられた。

変更を確認する手段として、svn diffコマンドも活用します。svn diffコマンドは変更の差分を確認できます。一度、実行してどのように表示されるか確認してみてください。

work# svn diff

変更をコミットする

変更内容に問題がないことを確認したら最後にコミットします。
コミットとは、作業コピーの変更した内容をリポジトリに送信することです。ローカル上で変更を加えただけでは、リポジトリ上には反映されません。コミットすることで初めてリポジトリに反映されます。

コミットはsvn commitコマンドで行います。

work# svn commit -m "1回目の更新"
Sending        index.html
Transmitting file data .
Committed revision 2.

-mオプションを使用して、このコミットに対して任意のメッセージを付与します。後から変更履歴を確認する際に、どのような変更なのかがわかるようなメッセージを付与することが重要です。

これで、リポジトリにも今回の変更が反映されました。