Subversionでは、cvs status と cvs update コマンドの間にあるたくさんの混乱 をなくそうとしてきました。
cvs status コマンドは二つの目的があります: まず、作業コピー中のローカルな変更をユーザに示すこと、二番目に どのファイルが最新ではなくなっているかをユーザに示すこと。 不幸にも、CVSの非常に読みにくい状態表示のために、たくさんのCVSユーザは このコマンドをまったく生かしていません。そのかわりに、変更点を見る のに、cvs update、あるいは cvs -n update を実行する癖をつけてしまいました。-n
オプションを忘れ ると、まだ扱う準被ウ器コできていないリポジトリ上の変更もマージしてしまいま す。
Subversion では、svn status の出力を 人間が読むにも、プログラムで扱うにも簡単になるように改良 しました。また、svn updateは更新されたファイル についての情報のみを表示し、ローカルの変更は表示 しないように しました。
svn status はローカルに修正されたすべての ファイル を表示します。デフォルトではリポジトリにアクセスしません。このコマンド はいろいろなオプションをとりますが、以下は最もよく利用されるものです:
-u
過去の情報を取得してから表示するためにリポジトリに アクセスします。
-v
バージョン管理下にあるすべての 情報を表示します。
-N
非再帰的に実行します(サブディレクトリに降りていきません)。
statusコマンドには二つの出力形式があります。 デフォルトの「短い形式」では、ローカルの変更は以下のように 表示されます:
$ svn status M foo.c M bar/baz.c
--show-updates
(-u
) オプションを指定すると、以下のようにもっと長い出力形式が利用されます。
$ svn status -u M 1047 foo.c * 1045 faces.html * bloo.png M 1050 bar/baz.c Status against revision: 1066
この場合、二つの新しいコラムが表示されます。二番目のコラムは ファイルやディレクトリが最新でない場合にはアスタリスク('*')が表示 されます。三番目のコラムはアイテムの作業コピーリビジョン番号です。 上の例では、アスタリスクはもし更新しようとすれば faces.html
はパッチされ、 bloo.png
はリポジトリに新規追加されるだろう ことを示しています。(bloo.png
の前にリビジョン番号が 表示されていないのは、作業コピーにはまだ存在していないからです)
At this point, you should take a quick look at the list of all possible status codes in svn status. Here are a few of the more common status codes you'll see:
A リソースは追加予約されています D リソースは削除予約されています M リソースはローカルに変更されています C リソースは競合しています (変更箇所がリポジトリと作業コピーとの 間でまだ完全にはマージされていません) X リソースはこの作業コピーから見て外部のものです (他のリポジトリ由来です。 外部定義項を参照)。 ? リソースはバージョン管理下にはありません。 ! リソースは失われたか、不完全です(Subversion 以外の別のツールによって削除 されました)
For a more detailed discussion of svn status, see 自分がした変更の概要確認項.
svn update updates your working copy, and only prints information about files that it updates.
Subversion は CVS の P
と U
コードを連結し、単に U
を表示します。 マージや競合が起こるときには、Subversionはそれに関するすべての 内容を表示するかわりに単に G
または C
を表示します。
svn statusに関する詳細は自分がした変更の概要確認項 を参照してください。