
Filesystem Operations
=====================
sb --filesystem --create --name <name> --owner <owner> --group <group>
sb --filesystem <fs>... --policy [want-snapshot][require-reasons]... --on|--off
sb --filesystem <fs>... --inspect

Group Operations
================
sb --Group --create --name <name> --parent <group>... --owner <owner>

User Operations
===============
sb --user --create --name <login> --fullname <name> --email <addr>
sb --user <user>...
sb --user <user>... --modify --site [--add <site>...] [--remove <site>...]

Snapshot Operations
===================
# note: a snapshot must be `--based' in order to use `--extend'
#  (but what's the policy `want-snapshot' issue?)
#  (how do you clean up fschanges in `integration' w/o a snapshot
#   to extend?)

sb [--filespace <fs>] --snap --create <name> [--based <basename> | --current]
sb [--filespace <fs>] --snap <snapshot> --extend --request <cr>...
sb [--filespace <fs>] --snap <snapshot> --commit


File Operations
===============
sb --file --create <path>... --request <cr>... --remarks <cmts> 
	  [--stdin] [--binary] --group <group>
sb --file <path>... --checkin --request <cr>... --other-fs <fs>...
sb --file <path>... --delete --request <cr>... [--verbose]
sb --file <path>... --diverge
sb --file <path1>... --rename --to <path2>... --request <cr>... [--verbose]

sb --file <path>... --checkout --lock
sb --file <path>... --unlock


# the <path1>... and <path2>... files are pairwise renamed
#  ie, sb --file A B C --rename --to D E F 
# means rename A -> D, B -> E, C -> F

sb --file <file1>... --link \
   --to <file2>... --to-filespace <fs> [--request <cr>...]

# note that <file1>... refers to the refers to the TARGET, where the old
#                      files are
#       and <file2>... (and <fs>) are the DESTINATION, 
#                      where the new files will be
# the destination _directory_ must be locked, and `--request' must
# be specified if the destination FS requires it

sb --file [<dir>...] --tar [--keep-mode] [--stdout] --def <key>=<val> ...

Directory Operations
====================
sb --dir <dir>... --lock
sb --dir --create <path>... --request <cr>...
sb --dir <dir>... --checkin --request <cr>... --remarks <cmt>...

sb --dir <dir1>... --link --to-filespace <fs> --to <path2>... --request <cr>... --remarks <cmt>... 


Reports
=======


sb --report user|changereq|filesystem|snap|group (*)
sb --report active-fs-changes|{open,fixing,researching}-changereqs (*)
sb --report integrations (*)

(*) Common `--report' options:

       --format <field> ...
       --where <slot> = <value>
       --where property.<prop> = <value>

In a `--where' clause, valid slot names depend on the type of
object being reported.

 Report           Type                     Slot           Type
+---------------+-----------------------+------------------------------------+
| integrations  | <integration-request> |  file-system   <file-system>       |
|               |                       |  owner         <user>              |
|               |                       |  base-request  <change-request>    |
+---------------+-----------------------+------------------------------------+
| changereq     | <change-request>      |  state         <symbol>            |
+---------------+-----------------------+------------------------------------+

Likewise with a `--format' clause.  The default format for `--report'
is a single-line entry.  Otherwise, slots or fields may be listed.
A field is an accessor method like `cr' or `state'


Change Requests
===============
sb --changereq <cr>... [--format '(raw field...)']
sb --changereq --group <group> \
    --title <title> --summary <summ>... --remarks <rem>... \
    [--severity <sev>]

sb --changereq <cr> --research
sb --changereq <cr> --fixing
sb --changereq <cr> --done [--with <fs>]
sb --changereq <cr> --ok
sb --changereq <cr> --comment --remarks <rem>...

