前回の記事ではリポジトリから作業コピーを取得しました。今回は、リポジトリ管理下にあるファイルに変更を加えて、コミットする手順を見ていきます。
変更を行う
まず、作業コピーを取得したディレクトリに移動します。
# 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オプションを使用して、このコミットに対して任意のメッセージを付与します。後から変更履歴を確認する際に、どのような変更なのかがわかるようなメッセージを付与することが重要です。
これで、リポジトリにも今回の変更が反映されました。