~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/add.txt

  • Committer: v.ladeuil+lp at free
  • Date: 2006-12-01 15:06:29 UTC
  • mto: (2172.3.1 bzr.73948)
  • mto: This revision was merged to the branch mainline in revision 2181.
  • Revision ID: v.ladeuil+lp@free.fr-20061201150629-zjd2an87u0r7nhhw
The tests that would have help avoid bug #73948 and all that mess :)

* bzrlib/transport/http/response.py:
(handle_response): Translate a 416 http error code into a bzr
exception.

* bzrlib/transport/http/_urllib2_wrappers.py:
(HTTPDefaultErrorHandler.http_error_default): Translate a 416 http
error code into a bzr exception.

* bzrlib/transport/http/_pycurl.py:
(PyCurlTransport._curl_perform): It could happen that pycrul
itself detect a short read.

* bzrlib/transport/http/__init__.py:
(HttpTransportBase._retry_get): New method, factorizing the retry
logic.
(HttpTransportBase.readv): We can have exception during the
initial GET worth degrading the range requirements (i.e. retrying
the GET request with either single or not ranges).

* bzrlib/tests/test_transport_implementations.py:
(TransportTests.test_readv_short_read): InvalidRange can also be
raised.

* bzrlib/tests/test_http.py:
(TestRangeRequestServer.test_readv_invalid_ranges): Was named
test_readv_short_read, the new name make the intent
clearer. Depending of the code path used (urllib or pycurl), both
exceptions can be raised.

* bzrlib/tests/HttpServer.py:
(TestingHTTPRequestHandler.do_GET): If invalid ranges are
specified, returns a 416 instead of the whole file (both are valid
according to the RFC).

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.