/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to doc/developers/add.txt

  • Committer: Vincent Ladeuil
  • Date: 2008-11-21 16:43:53 UTC
  • mto: (3855.1.1 bzr.integration)
  • mto: This revision was merged to the branch mainline in revision 3856.
  • Revision ID: v.ladeuil+lp@free.fr-20081121164353-8d07go33ycibzbwl
Better fix for bug #300055.

* bzrlib/tests/test_log.py:
(TestGetViewRevisions.make_tree_with_many_merges): Hijack the
helper to test for revisions touching file on a more significant
tree.
(TestGetViewRevisions.test_file_id_for_range): Better test to
highlight bug #300055: starting revision is a dotted revno and the
log should start right there, not at the mainline revision where
merging occured. But that uncovers yet another bug...
(TestGetRevisionsTouchingFileID.assertAllRevisionsForFileID):
_filter_revisions_touching_file_id doesn't have a 'direction'
parameter anymore.

* bzrlib/tests/blackbox/test_log.py:
(TestCaseWithoutPropsHandler): Fix line too long.
(TestLog.test_log_with_tags,
TestLogMerges.test_merges_partial_range): Fix whitespaces.

* bzrlib/log.py:
(calculate_view_revisions): Delete gratuitous split line. Push
direction handling closer to the needed point. Delete 'direction'
parameter when calling _filter_revisions_touching_file_id.
(_filter_revisions_touching_file_id): Delete 'direction'
parameter. This was used for calling reverse_by_depth which can't
handle an already reversed list.

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.