Filtered views

Bazaar

Filtered views

Filtered view の紹介

Viewはtreeに対するマスクを提供し、ユーザーはtreeの一部分に集中できるようになります。 このマスキングが役に立ついくつかの場面があります。たとえば、大きなプロジェクトの技術ライターやテスターはプロジェクトのうち一部のディレクトリやファイルだけを扱います。

開発者は大規模な変更をviewを使っていくつかのコミットに分解したいと思うかもしれません。 shelve unshelve がいくつかの変更を後のコミットまでとっておくのに対して、viewは次のコミットに(何を含めないかではなく)何を含めるかを指定します。

viewを作った後は、ファイルリストをサポートするコマンド - status, diff, commit, etc - に暗黙的に毎回そのファイルリストが渡されます。 それらのコマンドに明示的にファイルリストを渡すことも可能ですが、指名するファイルは現在のviewの中にないといけません。 対照的に、ツリーを対象とするコマンド - pull, merge, update, etc - はviewが作られた後もツリー全体に対して操作しますが、現在のviewに関係するもののみを報告します。 どちらのケースでも、Bazaarはユーザーに毎回viewが使われていることを報告するので、操作や出力がマスクされていることが判ります。

view を作る

次のように, view コマンドにファイルやディレクトリを指定することでviewを作ります:

bzr view file1 file2 dir1 ...

出力は:

Using 'my' view: file1, file2, dir1

現在のviewをリストする

現在のviewを見るには、 view コマンドに引数をつけないで実行します:

bzr view

もしviewが無ければ、 No current view. というメッセージが出力されるでしょう。 そうでなければ、現在のviewの名前と内容が次のように表示されます:

'my' view is: a, b, c

viewを切り替える

ほとんどの場合、viewは「変更を選択するために作られて、変更がコミットされると削除される」という具合に短い期間で使われます。 それ以外の場合では、viewに名前をつけてそれを切り替えたい場合があるかもしれません。

名前つきviewを宣言してそれに切り替えるには:

bzr view --name view-name file1 dir1 ...

たとえば:

bzr view --name doc NEWS doc/
Using doc view: NEWS, doc/

名前つきviewを見るには:

bzr view --name view-name

名前つきviewに切り替えるには:

bzr view --switch view-name

全ての名前つきviewの一覧を得るには:

bzr view --all

一時的にviewを無効にする

現在のviewを削除せずに無効にしたい場合、 off という名前の仮想viewに切り替えることができます。これは、ツリー全体を一つか二つのコマンドで操作する必要があり(例: merge)、しかしその後に元のviewに戻りたい場合に便利です。

現在のviewを削除せずに無効にするには:

bzr view --switch off

ツリー全体に対する操作が終わったら、元のviewの名前を指定して戻ることができます。たとえば、デフォルトの名前が使われて他のであれば:

bzr view --switch my

viewを削除する

現在のviewを削除するには:

bzr view --delete

名前つきviewを削除するには:

bzr view --name view-name --delete

全てのviewを削除するには:

bzr view --delete --all

注意点

view を定義しても作業ツリー内のほかのファイルを削除するわけではありません。単に作業ツリーに対する “レンズ” を提供するだけです。

view は作業ツリーのメタデータとして保存されます。pull, push, update といったブランチコマンドを使っても他の作業ツリーに伝播しません。

view はファイルパスの形で定義されます。もしview内のファイルをview外に 移動したのであれば、view はそのファイルを追跡しません。 たとえば、viewが doc/ と定義されていて doc/NEWSNEWS に移動しても view は doc/ に定義されたままで、 doc/NEWS のように変更されたりはしません。同じように、view内のファイルを削除してもviewからはそのファイルパスは削除されません。

現在のviewを利用するコマンドは:

  • status
  • diff
  • commit
  • add
  • remove
  • revert
  • mv
  • ls

ツリー全体に対する操作だけれども現在のviewの中だけを報告するコマンドは:

  • pull
  • update
  • merge.

現在のところ、多くのコマンドがviewを無視します。ニーズがあるコマンドから徐々に上の対応リストに追加されていくでしょう。 いくつかのコマンドは全体図を見るのがより適しているために、viewを無視したままになるでしょう。このタイプのコマンドには次のものがあります:

  • log
  • info