Subversionでは、cvs status と cvs update コマンドの間にあるたくさんの混乱 をなくそうとしてきました。
cvs status コマンドは二つの目的があります: まず、作業コピー中のローカルな変更をユーザに示すこと、二番目に どのファイルが最新ではなくなっているかをユーザに示すこと。 不幸にも、CVSの非常に読みにくい状態表示のために、たくさんのCVSユーザは このコマンドをまったく生かしていません。そのかわりに、変更点を見る のに、cvs update、あるいは cvs -n update を実行する癖をつけてしまいました。-nオプションを忘れ ると、まだ扱う準備ができていないリポジトリ上の変更もマージしてしまいま す。
Subversion では、svn status の出力を 人間が読むにも、プログラムで扱うにも簡単になるように改良 しました。また、svn updateは更新されたファイル についての情報のみを表示し、ローカルの変更は表示 しないように しました。
svn status はローカルに修正されたすべての ファイル を表示します。デフォルトではリポジトリにアクセスしません。このコマンド はいろいろなオプションをとりますが、以下は最もよく利用されるものです:
過去の情報を取得してから表示するためにリポジトリに アクセスします。
バージョン管理下にあるすべての 情報を表示します。
非再帰的に実行します(サブディレクトリに降りていきません)。
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の前にリビジョン番号が 表示されていないのは、作業コピーにはまだ存在していないからです)
最後に、最もよく表示されるステータスコードの簡単なまとめを載せておきます:
A リソースは追加予告されています D リソースは削除予告されています M リソースはローカルに変更されています C リソースは衝突しています(変更箇所がリポジトリと作業コピーとの 間でまだ完全にはマージされていません) X リソースはこの作業コピーから見て外部のものです(他のリポジトリから 来たものです。svn:externalsの項を参照してください) ? リソースはバージョン管理下にはありません。 ! リソースは失われたか、不完全です(Subversion 以外の別のツールによって削除 されました)
Subversion は CVSのP とU コードを連結し、単にU を表示します。 マージや衝突が起こるときには、Subversionはそれに関するすべての 内容を表示するかわりに単にG または C を表示します。
svn statusに関する詳細はsvn statusの項 を参照してください。
© 2015 jtdan.com