-m [--message]
svn commit -m[--message] <メッセージ>
コミットと同時にコミットメッセージを送れる。いつも使う。
関係無いけど、コミット前には svn status
と svn diff
をして、コミットされる内容が自分の意図通りかちゃんと確認しましょう。
-l [--limit] / -v [--verbose]
svn log -l[--limit] <数字> -v[--verbose]
-l
オプションで指定した個数分だけ直近のログが表示される。
-v
オプションを付けると変更のあったファイルが表示される。
具体的には svn log -l 5 -v
などとして使う。
-r [--revision]
svn log -r[--revision] ARG1:ARG2
-r
オプションはあらゆる svn コマンドで使用できて、ARG1 < ARG2 で使うことが多いが、
svn log
の場合、ARG1 < ARG2 で使うと -r
オプションを使わなかった時と上下が反転してしまう。
ARG
には日付などいくつか指定できる種類が有るが、私が主に使うのはリビジョン番号と 'HEAD' 。
具体的には svn log -r HEAD:500
などとして使う。(ただしHEADは501以降と仮定)
もちろん -v
オプションなどと併用可。
svn diff -r[--revision] ARG1:ARG2
svn log
同様。
ARG1 が旧、ARG2 が新として扱われるので、入れ替えると + と - が入れ替わる。
svn merge -r ARG1:ARG2 <ソースブランチ> <ターゲットブランチ>
マージするときはターゲットブランチに移動して svn merge <ソースブランチ>
するのが楽。
リビジョンを指定しなかった場合、ARG1 はそのブランチが作られたリビジョン、ARG2 は HEAD で指定したのと同等。
基本的に指定しなくて良いと思うが、ARG1 はそのブランチが作られたリビジョン、ARG2 にそのブランチが最終更新されたリビジョンを指定しておくと、作業したリビジョン番号を振り返りやすくて良くない?むしろマージされたリビジョン番号を mergeinfo に残しておきたい?一理ある。
ARG1 > ARG2 のリビジョン番号の指定をすると逆マージ( git revert
に相当?)という過去のリビジョンに戻す操作をできる。
例えば svn merge -r 1000:995 .
とするとカレントディレクトリに加えられた 996, 997, 998, 999, 1000 のコミットの変更箇所を元に戻せる。内部的にどのような処理になっているのかは知らないが、リバースパッチのようなもの、 svn diff -r 1000:995 > パッチファイル
でパッチを作って svn patch パッチファイル
をやっているようなものじゃないかと思ってるので、あまり過信しすぎるのも怖い…かも?
-c [--change]
svn diff -c[--change] <リビジョン番号>
svn log -c[--change] <リビジョン番号>
svn merge -c[--change] <リビジョン番号>
-r
オプションだとリビジョン番号を範囲で指定するが、 -c
はリビジョン番号を一つだけ指定する。
svn log -c 1000
は svn log -r 1000:1000
と同等。
svn diff -c 1000
は svn diff -r 999:1000
と同等。
svn merge -c 1000
は svn merge -r 999:1000
と同等。
特に diff
はこのコミットの変更だけ見たいという状況はよくあると思う。そういうときに使う。
また、負の数も指定できる。
svn diff -c -1000
は svn diff -r 1000:999
と同等。
svn merge -c -1000
は svn merge -r 1000:999
と同等。
そのため、 diff
は正の値を指定した時と +- が逆に、 merge
は負の値を指定した場合逆マージになる。
個人的には(会社のルールに従ってください)逆マージを行いたいときは -r
オプションを使わず、 -c
オプションを使うことを勧めたい。
コミットするときにワンステップごとに変更したので戻すときもワンステップごとに。一つづつ戻したほうが、何を戻したのがわかりやすいと思う。リビジョンが増えることは大した問題じゃ無いと思う。