dulwich-users team mailing list archive
-
dulwich-users team
-
Mailing list archive
-
Message #00598
[PATCH 00/34] Framework for walking commits
Repo.revision_history is nice and simple, but doesn't expose a whole lot of
options. This series builds up a framework for walking commits efficiently and
correctly with respect to C git's implementation.
I did have some benchmarks of this vs. the previous implementation, but there
were some improvements between then and now, so I need to find and re-run them.
This one has fewer incompatible API changes and more NEWS entries :)
c0ce323 tests/utils: Function for quickly building commit graphs.
ffb71f2 tests/utils: Build commit graphs with custom trees.
e6c6233 tests/utils: Build graphs of commits with arbitrary attributes.
b7e0347 diff_tree: Make rename/rewrite threshold constants public.
acdedc3 objects: Make ShaFile.__eq__ work when other is not a ShaFile.
b2d01e8 Add a simple, extensible framework for commit walking.
f08b421 walk: Add option to limit the number of commits returned.
c27aa61 walk: Encapsulate walk results in an object.
b3230a8 objects: Add lookup_path method to Tree.
6862389 diff_tree: Add function for getting tree changes for merges.
54cd823 walk: Add WalkEntry method to get tree changes.
c724a65 walk: Return only commits matching specified paths.
af48e9f diff_tree: Construct RenameDetectors without passing tree SHAs.
d932a45 diff_tree: Add want_unchanged to changes_with_renames.
f3e58be diff_tree: Add rename_detector to tree_changes.
287dd49 diff_tree: Add rename_detector to tree_changes_for_merge.
5a73d58 walk: Add option for rename detection.
609cff5 walk: Add option to follow paths across rename/copy.
f177ce6 walk: Raise MissingCommitError instead of KeyError.
cc6b61f repo: Implement revision_history with a Walker.
e0a0c53 walk: Add options to limit by commit time.
a8b3be4 walk: Handle a small, fixed number of out-of-date-order commits.
3afc0a1 walk: Simplify WalkEntry constructor.
b7a54b1 walk: Extract commit-time pqueue into its own class.
ef41aaa walk: Separate reordering logic from iteration logic.
f7b9736 test_walk: Simplify commit_time attr assignment.
d8b2b02 walk: Allow topological ordering.
eb06ea5 Add walk module to tests/__init__.py.
a80b4f2 walk: Walk a fixed number of extra commits before returning.
b56bc6b walk: Exclude parents more aggressively.
4548e33 walk: Reorganize 'since' boundary code.
af3611b walk: Record last commit yielded by the pq.
b356947 _compat: Add implementation of all().
b203909 walk: Propagate excluded out-of-order commits.
NEWS | 19 ++
dulwich/_compat.py | 14 ++
dulwich/diff_tree.py | 136 +++++++++++--
dulwich/errors.py | 1 +
dulwich/object_store.py | 18 +--
dulwich/objects.py | 30 +++-
dulwich/repo.py | 52 +----
dulwich/tests/__init__.py | 1 +
dulwich/tests/test_diff_tree.py | 201 ++++++++++++++++++-
dulwich/tests/test_utils.py | 84 ++++++++
dulwich/tests/test_walk.py | 411 +++++++++++++++++++++++++++++++++++++++
dulwich/tests/utils.py | 80 ++++++++
dulwich/walk.py | 364 ++++++++++++++++++++++++++++++++++
13 files changed, 1330 insertions(+), 81 deletions(-)
Follow ups
-
Re: [PATCH 00/34] Framework for walking commits
From: Dave Borowitz, 2011-07-28
-
[PATCH 34/34] walk: Propagate excluded out-of-order commits.
From: dborowitz, 2011-07-28
-
[PATCH 33/34] _compat: Add implementation of all().
From: dborowitz, 2011-07-28
-
[PATCH 32/34] walk: Record last commit yielded by the pq.
From: dborowitz, 2011-07-28
-
[PATCH 31/34] walk: Reorganize 'since' boundary code.
From: dborowitz, 2011-07-28
-
[PATCH 29/34] walk: Walk a fixed number of extra commits before returning.
From: dborowitz, 2011-07-28
-
[PATCH 30/34] walk: Exclude parents more aggressively.
From: dborowitz, 2011-07-28
-
[PATCH 28/34] Add walk module to tests/__init__.py.
From: dborowitz, 2011-07-28
-
[PATCH 27/34] walk: Allow topological ordering.
From: dborowitz, 2011-07-28
-
[PATCH 26/34] test_walk: Simplify commit_time attr assignment.
From: dborowitz, 2011-07-28
-
[PATCH 24/34] walk: Extract commit-time pqueue into its own class.
From: dborowitz, 2011-07-28
-
[PATCH 25/34] walk: Separate reordering logic from iteration logic.
From: dborowitz, 2011-07-28
-
[PATCH 23/34] walk: Simplify WalkEntry constructor.
From: dborowitz, 2011-07-28
-
[PATCH 22/34] walk: Handle a small, fixed number of out-of-date-order commits.
From: dborowitz, 2011-07-28
-
[PATCH 21/34] walk: Add options to limit by commit time.
From: dborowitz, 2011-07-28
-
[PATCH 20/34] repo: Implement revision_history with a Walker.
From: dborowitz, 2011-07-28
-
[PATCH 19/34] walk: Raise MissingCommitError instead of KeyError.
From: dborowitz, 2011-07-28
-
[PATCH 17/34] walk: Add option for rename detection.
From: dborowitz, 2011-07-28
-
[PATCH 18/34] walk: Add option to follow paths across rename/copy.
From: dborowitz, 2011-07-28
-
[PATCH 16/34] diff_tree: Add rename_detector to tree_changes_for_merge.
From: dborowitz, 2011-07-28
-
[PATCH 15/34] diff_tree: Add rename_detector to tree_changes.
From: dborowitz, 2011-07-28
-
[PATCH 14/34] diff_tree: Add want_unchanged to changes_with_renames.
From: dborowitz, 2011-07-28
-
[PATCH 13/34] diff_tree: Construct RenameDetectors without passing tree SHAs.
From: dborowitz, 2011-07-28
-
[PATCH 12/34] walk: Return only commits matching specified paths.
From: dborowitz, 2011-07-28
-
[PATCH 11/34] walk: Add WalkEntry method to get tree changes.
From: dborowitz, 2011-07-28
-
[PATCH 09/34] objects: Add lookup_path method to Tree.
From: dborowitz, 2011-07-28
-
[PATCH 10/34] diff_tree: Add function for getting tree changes for merges.
From: dborowitz, 2011-07-28
-
[PATCH 08/34] walk: Encapsulate walk results in an object.
From: dborowitz, 2011-07-28
-
[PATCH 07/34] walk: Add option to limit the number of commits returned.
From: dborowitz, 2011-07-28
-
[PATCH 05/34] objects: Make ShaFile.__eq__ work when other is not a ShaFile.
From: dborowitz, 2011-07-28
-
[PATCH 06/34] Add a simple, extensible framework for commit walking.
From: dborowitz, 2011-07-28
-
[PATCH 04/34] diff_tree: Make rename/rewrite threshold constants public.
From: dborowitz, 2011-07-28
-
[PATCH 03/34] tests/utils: Build graphs of commits with arbitrary attributes.
From: dborowitz, 2011-07-28
-
[PATCH 02/34] tests/utils: Build commit graphs with custom trees.
From: dborowitz, 2011-07-28
-
[PATCH 01/34] tests/utils: Function for quickly building commit graphs.
From: dborowitz, 2011-07-28