Add

Add is used to recursively version some paths supplied by the user. Paths that match ignore rules are not versioned, and paths that become versioned are versioned in the nearest containing bzr tree. Currently we only do this within a single tree, but perhaps with nested trees this should change.

Least work we can hope to perform

Optionally:

Per file algorithm

#. If the path is versioned, and it is a directory, push onto the recurse stack. #. If the path is supplied by the user or is not ignored, version it, and if a directory, push onto the recurse stack. Versioning the path may require versioning the paths parents. #. Output or otherwise record the ignored rule as per the user interface selected.