~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/add.txt

  • Committer: Vincent Ladeuil
  • Date: 2009-12-14 15:51:36 UTC
  • mto: (4894.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4895.
  • Revision ID: v.ladeuil+lp@free.fr-20091214155136-rf4nkqvxda9oiw4u
Cleanup tests and tweak the text displayed.

* bzrlib/tests/blackbox/test_update.py:
Fix imports and replace the assertContainsRe with assertEqualDiff
to make the test clearer, more robust and easier to debug.

* bzrlib/tests/commands/test_update.py: 
Fix imports.

* bzrlib/tests/blackbox/test_filtered_view_ops.py: 
Fix imports and strange accesses to base class methods.
(TestViewTreeOperations.test_view_on_update): Avoid os.chdir()
call, simplify string matching assertions.

* bzrlib/builtins.py:
(cmd_update.run): Fix spurious space, get rid of the final '/' for
the base path, don't add a final period (it's a legal char in a
path and would be annoying for people that like to copy/paste).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Add
 
2
===
 
3
 
 
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.
 
8
 
 
9
Least work we can hope to perform
 
10
---------------------------------
 
11
 
 
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)
 
18
 
 
19
Optionally:
 
20
 
 
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).
 
26
 
 
27
Per file algorithm
 
28
------------------
 
29
 
 
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.