Presentation of paths and path handling in general present some interesting UI issues.

Root Directory Naming

For example: $ mtn st Current branch: foobar Changes against parent added
added foobar

$ mtn ls known
foobar

Relative Names

Peg Revision Syntax

For example consider the following: $ mtn rename foo bar $ mtn add foo $ mtn revert foo

The "foo" given to mtn revert will match both the file that was renamed to bar and the new file that was added. If one wanted to only revert the addition they should be able to say something like: $ mtn revert foo@NEW

See also ["RevertUI"].

We do currently have a way of doing almost this: automate get\_corresponding\_path REV1 FILE REV2 will allow you to translate the name as it existed in one rev to the name of the corresponding nid in REV2. If you're working in the context of REV2, you can now use this translated path instead of the other name... provided the nid still exists to have a path in REV2.

Conceptually, paths only exist in the context of some revision so while the path@REV syntax is somewhat common it seems somewhat inverted. Perhaps something that represents this hierarchy (i.e. puts the REV before the path) would be better.

The idea of //REV/path doesn't work so well since REV is really a selector and selectors already use the "/" character.

Depth Syntax

The current --depth option applies to all paths named in a restriction. However these paths may represent directories at different levels in the hierarchy and a single --depth option may not make the most sense. Ideally, each directory named in a restriction could allow a specific depth value.

Since depth is specific to a particular path the depth should possibly come after the path. It would be nice to support both revision specific paths and path specific depths in whatever syntax we arrive at.