Simplify and fix thin pack resolving.
authorDave Borowitz <dborowitz@google.com>
Fri, 19 Mar 2010 01:15:04 +0000 (18:15 -0700)
committerDave Borowitz <dborowitz@google.com>
Thu, 22 Apr 2010 21:35:41 +0000 (14:35 -0700)
commit36a682557f0bf203448b888a0c4d67268a423d0a
treefa26f5f60e9c8b54f3d22dec278b1b45ac8b399b
parent29d08812e20f8d3cf912346c96d348fea57d968b
Simplify and fix thin pack resolving.

This change cuts down on passing around callbacks to resolve external
references by creating a ThinPackData class that has different semantics
for resolving ref deltas. In all cases except thin packs, PackData
objects have associated pack objects (added as a member variable in
this change), so we can use the index to resolve ref deltas if they
exist. ThinPackDatas, on the other hand, are constructed with an
ObjectStore that is used for external ref resolving. Since we now
make use of the pack index, we only have to deal with postponing shas
in ThinPackData.iterentries. Since this is the only method used for
constructing an index, we still have to be able to handle ref deltas to
objects later in the file.

Modified the compat tests (and one small error in server.py) to
successfully exercise this code, but still missing unit tests.

Change-Id: I244b92c00cbae8e30883c5de4dbf47a9195bd174
dulwich/object_store.py
dulwich/pack.py
dulwich/server.py
dulwich/tests/compat/server_utils.py
dulwich/tests/compat/test_server.py
dulwich/tests/compat/test_web.py