Subversion コマンドラインクライアント: svn

コマンドラインクライアントを使うには、svn と入力してから、使いたいサブコマンドを入力し[58]、その後オプションや捜査する対象を入力してください。— サブコマンドとスイッチの並びには特定の順序はありません。たとえば svn status を使う際、以下のどれも有効です。

$ svn -v status
$ svn status -v 
$ svn status -v myfile

ほとんどのクライアントコマンドの使用法は、もっとたくさんの例が 第2章 にあり、属性の管理を行うコマンドは 属性項 にあります。

svn のオプション

Subversion はサブコマンドごとに違ったオプションを持っていますが、どれもグローバル — つまりそれぞれのオプションは、一緒に利用されるサブコマンドにかかわらず同じ意味になります。たとえば --verbose (-v) は常に、どのサブコマンドと一緒に使っても、「冗長 (verbose) な出力」を意味します。

--auto-props

config ファイルにある enable-auto-props ディレクティブを上書きして auto-props を有効にします。

--change (-c) ARG

特定の「変化」 (別名、リビジョン) を参照するのに使用します。このオプションは、「-r ARG-1:ARG」 の簡略記法です。

--config-dir DIR

Subversion にデフォルトの場所 (ユーザのホームディレクトリにある.subversion) ではなく、指定したディレクトリから設定情報を読み出すように指示します。

--diff-cmd CMD

ファイル間の差分を表示するのに使う、外部プログラムを指定します。 このオプションを指定せず svn diff を実行すると、デフォルトでは unifid diff 形式の Subversion 内蔵 diff エンジンを使用します。外部 diff プログラム を利用する場合、--diff-cmd を使用してください。--extensions オプションで diff プログラムを指定することもできます (詳しくはこの章のあとで説明します)。

--diff3-cmd CMD

ファイルをマージするために使う外部プログラムを指定します。

--dry-run

コマンドの実行をそのままたどりますが、実際の更新は (ディスクやリポジトリに) しません。

--editor-cmd CMD

ログメッセージや属性値を編集するのに使う外部プログラムを指定します。デフォルトエディタを指定する方法は、config項editor-cmd をご覧ください。

--encoding ENC

コミットメッセージが、指定した文字セットでエンコードされていることを Subversion に伝えます。デフォルトは、あなたのオペレーティングシステムのもともとのロケールで、コミットメッセージが別の文字セットでエンコードされている場合には、それを指定する必要があります。

--extensions (-x) ARGS

Subversion が外部 diff コマンドに渡す、一つ以上の引数を指定します。このオプションは、--diff-cmd オプションを指定した、svn diffsvn merge でのみ有効です。複数の引数を渡す場合、それらすべてをクォートでくくらなくてはなりません (例: svn diff --diff-cmd /usr/bin/diff -x "-b -E")。

--file (-F) FILENAME

そのファイルの内容を、サブコマンドに指定するのに使用しますが、サブコマンドが変われば、その内容の扱いが変わります。例えば、svn commit では内容をコミットログとして扱いますが、svn propset では属性値として扱います。

--force

特定のコマンドや操作の実行を強制します。通常であれば Subversion が拒否するような操作がいくつかありますが、この force オプションを渡し、Subversion に「影響含め何をしようとしているかわかっているから、とにかくやらせてくれ」と伝えられます。このオプションは、電源を入れたまま電子工作をするのに似ています — 何をやろうとしているのかよく理解していないと、きっと嫌な目に遭うでしょう。

--force-log

--messages (-m) や --file (-F) オプションに渡す、疑わしい引数を正しいものとして強制的に受け入れるように指示します。Subversion はデフォルトでは、サブコマンドの対象ではなく、上記のようなオプションを引数に渡されるとエラーとなります。例えば、--file (-F) オプションにバージョン管理下のファイルのパスを指定すると、Subversion はあなたが間違ったと見なし、パスを操作の対象とし、ログメッセージの取得先として、他の (バージョン管理外の) ファイルの読み込みに単に失敗します。自分の意図を宣言し、この種のエラーを無視するには、--force-log オプションを、ログメッセージを受け入れるサブコマンドに対して指定します。

--help (-h-?)

一つ以上のサブコマンドと一緒に使って、それぞれのサブコマンドの内蔵ヘルプテキストを表示します。このオプションだけを単独で使うと、共通のクライアントヘルプテキストを表示します。

--ignore-ancestry

Subversion に対して差分を計算するときに、系統情報を無視するよう指示します (単にパス内容のみを利用します)。

--ignore-externals

Subversion に、外部定義と外部定義によって管理される外部作業コピーを無視するように指示します。

--incremental

(他の出力と) 連結しやすい形式で出力を表示します。

--limit NUM

最初の NUM 個のログメッセージだけを表示します。

--message (-m) MESSAGE

コマンドライン上で、このオプションの後にログメッセージやロックコメントを指定します。以下のようになります。

$ svn commit -m "They don't make Sunday."
--new ARG

ARG を新しいほうのターゲットとして使用します (svn diff とともに使います)。

--no-auth-cache

認証情報 (ユーザ名やパスワードなど) を、Subversion 管理ディレクトリにキャッシュしないよう指示します。

--no-auto-props

config ファイル中の enable-auto-props ディレクティブを上書きする形で auto-props を無効にします。

--no-diff-added

追加されたファイルの差分を表示しないよう Subversion に指示します。ファイルを追加した際の svn diff のデフォルトの動作は、(空の) 既存ファイルに全内容を追加した場合の差分と、同じ出力になります。

--no-diff-deleted

削除されたファイルの差分を表示しないよう Subversion に指示します。ファイルを削除した際の svn diff デフォルト動作は、ファイル残っているが内容をすべて削除した場合の差分と、同じ出力になります。

--no-ignore

global-ignores 設定オプションや、svn:ignore 属性にマッチしたため、通常なら省略されるようなファイルのステータス一覧を表示します。詳しい情報は、config項無視されるバージョン管理下にないアイテム項 をご覧ください。

--no-unlock

自動的にファイルをロック解除しません (デフォルトのコミットの動作は、コミットの一部として対象ファイルをすべてロック解除します)。詳しい情報は、ロック項 をご覧ください。

--non-interactive

認証が失敗したり十分な許可がないときに、認証要求 (例: ユーザ名とパスワード) するのを抑制します。これは、Subversion を自動スクリプト中で実行しており、認証要求するより単に失敗したほうが都合がいい場合に役に立ちます。

--non-recursive (-N)

サブディレクトリに対して、サブコマンドを再帰的に実行するのを抑止します。ほとんどのサブコマンドはデフォルトで再帰的に実行しますが、いくつかのサブコマンド — 通常、本質的に削除や取り消しが起きるようなもの — はそうではありません。

--notice-ancestry

差分を計算するときに系統情報を考慮します。

--old ARG

ARG を古いほうのターゲットとして使用します (svn diff とともに使います)。

--password PASS

コマンドラインで認証用パスワードを指定します — この指定がなければ、必要な場合、Subversion はパスワードを要求してきます。

--quiet (-q)

実行中に重要な情報だけを表示するように指示します。

--recursive (-R)

サブコマンドをサブディレクトリに対して再帰的に実行するようにします。ほとんどのサブコマンドはデフォルトで再帰的です。

--relocate FROM TO [PATH...]

作業コピーが参照しているリポジトリの場所を変更するため、svn switch サブコマンドと一緒に使います。これは、リポジトリの場所が移動しても、既存の作業コピーを使い続けたい場合に便利です。サンプルは svn switch をご覧ください。

--revision (-r) REV

特定の操作で、リビジョン (またはリビジョン範囲) を指定します。revision オプションの引数として、リビジョン番号、リビジョンキーワード、日付 (中かっこ内) を指定できます。リビジョン範囲を指定する場合、二つのリビジョンをコロンで区切ってください。以下に例を示します。

$ svn log -r 1729
$ svn log -r 1729:HEAD
$ svn log -r 1729:1744
$ svn log -r {2001-12-04}:{2002-02-17}
$ svn log -r 1729:{2002-02-17}

詳しくは リビジョンキーワード項 をご覧ください。

--revprop

指定したファイルやディレクトリの属性のかわりに、リビジョンの属性を操作します。このオプションを使う場合、--revision (-r) オプションを使ってリビジョンも渡す必要があります。

--show-updates (-u)

作業コピーのどのファイルが古くなっているかといった情報をクライアントに表示します。これは実際にはファイルを更新しません — svn update を実行した場合に、どのファイルが更新されるかを表示するだけです。

--stop-on-copy

バージョン管理下リソースの履歴を巡回する、Subversion のサブコマンドに対して、コピー — 履歴中でリポジトリのほかの場所からコピーされたリソースがある場所 — 発見時には履歴情報の収集を中止させます。

--strict

Subversion が厳密なセマンティックスを使うようにします。このセマンティックスとは、具体的なサブコマンド (はっきり言うと svn propget) について説明しないと、漠然とした概念になってしまいます。

--targets FILENAME

コマンドラインにすべてのファイルを記述するかわりに、指定したファイルから操作するファイルの一覧を取得するよう Subversion に指示します。

--username NAME

コマンドラインでの認証に、指定したユーザ名を使うように指示します — そうしないと、必要に応じて Subversion はその入力をユーザに求めます。

--verbose (-v)

サブコマンド実行時に、できるたけ多くの情報を表示するように、クライアントに指示します。Subversion は、追加フィールド、すべてのファイルの詳細情報、動作内容についての追加情報などを表示するようになります。

--version

クライアントのバージョン情報を表示します。この情報は、クライアントのバージョン番号だけでなく、クライアントが Subversion リポジトリにアクセスする際の、すべてのリポジトリアクセスモジュールの一覧も表示します。--quiet (-q) と一緒に指定すると、短い形式でバージョン番号を表示します。

--xml

XML フォーマットで出力します。

svn のサブコマンド

以下に様々なサブコマンドを挙げます。



[58] はい、そうですね。--version オプションを使うときにはサブコマンドは不要です。少し後でそのことに触れます。