4
Add is used to recursively version some paths supplied by the user. Paths that
5
match ignore rules are not versioned, and paths that become versioned are
6
versioned in the nearest containing bzr tree. Currently we only do this within
7
a single tree, but perhaps with nested trees this should change.
9
Least work we can hope to perform
10
---------------------------------
12
* Read a subset of the full versioned paths data for the tree matching the scope of the paths the user supplied.
13
* Seek once to each directory within the scope and readdir its contents.
14
* Probe if each directory is a child tree to avoid adding data for paths within a child tree.
15
* Calculate the ignored status for paths not previously known to be ignored
16
* Write data proportional to the newly versioned file count to record their versioning.
17
* Assign a fileid for each path (so that merge --uncommitted can work immediately)
21
* Print the ignore rule for each ignored path in the scope.
22
* Print the path of each added file.
23
* Print the total count of ignored files within the scopes.
24
* Record the result of calculating ignored status for ignored files.
25
(proportional to the number we actually calculate).
30
#. If the path is versioned, and it is a directory, push onto the recurse stack.
31
#. If the path is supplied by the user or is not ignored, version it, and if a
32
directory, push onto the recurse stack. Versioning the path may require
33
versioning the paths parents.
34
#. Output or otherwise record the ignored rule as per the user interface selected.