summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/revwalk.c5
-rw-r--r--tests/revwalk/basic.c25
2 files changed, 28 insertions, 2 deletions
diff --git a/src/revwalk.c b/src/revwalk.c
index 74ce8a10b..072ae4674 100644
--- a/src/revwalk.c
+++ b/src/revwalk.c
@@ -455,7 +455,7 @@ static int get_revision(git_commit_list_node **out, git_revwalk *walk, git_commi
*/
if (!walk->limited) {
if ((error = add_parents_to_list(walk, commit, list)) < 0)
- return error;
+ return error;
}
*out = commit;
@@ -678,7 +678,7 @@ void git_revwalk_sorting(git_revwalk *walk, unsigned int sort_mode)
walk->enqueue = &revwalk_enqueue_unsorted;
}
- if (sort_mode != GIT_SORT_NONE)
+ if (walk->sorting != GIT_SORT_NONE)
walk->limited = 1;
}
@@ -737,6 +737,7 @@ void git_revwalk_reset(git_revwalk *walk)
walk->walking = 0;
walk->limited = 0;
walk->did_push = walk->did_hide = 0;
+ walk->sorting = GIT_SORT_NONE;
}
int git_revwalk_add_hide_cb(
diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c
index 1106bf4ce..efb48cbf1 100644
--- a/tests/revwalk/basic.c
+++ b/tests/revwalk/basic.c
@@ -197,6 +197,31 @@ void test_revwalk_basic__push_head(void)
cl_assert_equal_i(i, 7);
}
+void test_revwalk_basic__sorted_after_reset(void)
+{
+ int i = 0;
+ git_oid oid;
+
+ revwalk_basic_setup_walk(NULL);
+
+ git_oid_fromstr(&oid, commit_head);
+
+ /* push, sort, and test the walk */
+ cl_git_pass(git_revwalk_push(_walk, &oid));
+ git_revwalk_sorting(_walk, GIT_SORT_TIME);
+
+ cl_git_pass(test_walk_only(_walk, commit_sorting_time, 2));
+
+ /* reset, push, and test again - we should see all entries */
+ git_revwalk_reset(_walk);
+ cl_git_pass(git_revwalk_push(_walk, &oid));
+
+ while (git_revwalk_next(&oid, _walk) == 0)
+ i++;
+
+ cl_assert_equal_i(i, commit_count);
+}
+
void test_revwalk_basic__push_head_hide_ref(void)
{
int i = 0;