It's raining cats and dogs.

無駄なことなんてないはず

subversionをコマンドで使う練習その2

前回に引き続きsubversionをコマンドで使う練習を進める。
今回は前回作成したファイルに変更を加えてコミットしてみるところから。
前回作成したファイルname.txtに行を追加

$ cat /home/hoge/work/hoge_prj/names.txt
taro
jiro
saburo
siro
goro
rokuro    ←ここ追加
shichiro  ←ここ追加

変更内容を確認する

$ svn status names.txt
M      names.txt

「M」が付いた。
ということはローカルのファイルに変更があって、リポジトリにはまだ変更内容が反映されてないことを示す。
次にどのような内容の修正をしたか、リポジトリと比較してみる。

$ svn diff names.txt
Index: names.txt
===================================================================
--- names.txt   (リビジョン 1)
+++ names.txt   (作業コピー)
@@ -3,3 +3,5 @@
 saburo
 siro
 goro
+rokuro
+shichiro

「rokuro」「shichiro」の行に「+」が付いている。これでその行が追加されたことがわかる。
んで、「−」が付いていたら削除されていることになる。


次は変更内容をリポジトリに登録してみる。

$ svn commit -m "add rokuro,shichiro"
送信しています              names.txt
ファイルのデータを送信中です.
リビジョン 2 をコミットしました

ファイルがコミットされて、リビジョンが2になったようだ。
次はリポジトリに変更があったかどうか、ログを確認してみる。

$ svn log names.txt
------------------------------------------------------------------------
r2 | hoge | 2006-11-23 00:05:56 +0900 (木, 23 11月 2006) | 1 line

add rokuro,shichiro
------------------------------------------------------------------------
r1 | hoge | 2006-11-21 03:02:41 +0900 (火, 21 11月 2006) | 1 line

start hoge_prj
------------------------------------------------------------------------

変更内容が表示された。
リビジョン2(r2)に変更したのは「hoge」さんということがわかる。
メッセージは何をどのように変更したか、わかりやすいものにしなければいけない。
(わかりにくいメッセージだったな・・・)


さらに詳細をみてみる。

$ svn log --verbose names.txt
------------------------------------------------------------------------
r2 | hoge | 2006-11-23 00:05:56 +0900 (木, 23 11月 2006) | 1 line
変更のあったパス:
   M /hoge_prj/trunk/names.txt

add rokuro,shichiro
------------------------------------------------------------------------
r1 | hoge | 2006-11-21 03:02:41 +0900 (火, 21 11月 2006) | 1 line
変更のあったパス:
   A /hoge_prj
   A /hoge_prj/trunk
   A /hoge_prj/trunk/address.txt
   A /hoge_prj/trunk/names.txt

start hoge_prj
------------------------------------------------------------------------

「--verbose」オプションで詳細がみれる。
ちなみにカレントディレクトリ配下のすべての履歴情報をみるときは
ファイル名を指定しなければよい。

$ svn log --verbose
------------------------------------------------------------------------
r1 | hoge | 2006-11-21 03:02:41 +0900 (火, 21 11月 2006) | 1 line
変更のあったパス:
   A /hoge_prj
   A /hoge_prj/trunk
   A /hoge_prj/trunk/address.txt
   A /hoge_prj/trunk/names.txt

start hoge_prj
------------------------------------------------------------------------

ところで、「names.txt」をコミットした直後では、その変更内容が表示されていないことに気づく。
これは以下のコマンドで、最新のものになる。

$ svn update
リビジョン 2 です。
$ svn log --verbose
------------------------------------------------------------------------
r2 | hoge | 2006-11-23 00:05:56 +0900 (木, 23 11月 2006) | 1 line
変更のあったパス:
   M /hoge_prj/trunk/names.txt

add rokuro,shichiro
------------------------------------------------------------------------
r1 | hoge | 2006-11-21 03:02:41 +0900 (火, 21 11月 2006) | 1 line
変更のあったパス:
   A /hoge_prj
   A /hoge_prj/trunk
   A /hoge_prj/trunk/address.txt
   A /hoge_prj/trunk/names.txt

start hoge_prj
------------------------------------------------------------------------

今回はここまで。
次回は競合(コンフリクト)してみちゃう。