diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2019-05-12 22:06:00 +0100 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2019-05-12 22:06:00 +0100 |
commit | c9f116f148c9eb64988eb36ec83d1a653dc81ee0 (patch) | |
tree | 3d67e468faa306ad2c3e0cedfd15088abe485d5b | |
parent | 1e3a639d4af0e8acdf710b74ee7b230c39df84ae (diff) | |
parent | ab27c83561f5a312da7a6abe3221dfd7ee20d1fa (diff) | |
download | libgit2-c9f116f148c9eb64988eb36ec83d1a653dc81ee0.tar.gz |
Merge branch 'pr/5061'
-rw-r--r-- | src/revwalk.c | 9 | ||||
-rw-r--r-- | tests/revwalk/basic.c | 18 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/revwalk.c b/src/revwalk.c index 6d12d34eb..935bd4dde 100644 --- a/src/revwalk.c +++ b/src/revwalk.c @@ -194,10 +194,17 @@ int git_revwalk_push_range(git_revwalk *walk, const char *range) if ((error = git_revparse(&revspec, walk->repo, range))) return error; + if (!revspec.to) { + git_error_set(GIT_ERROR_INVALID, "invalid revspec: range not provided"); + error = GIT_EINVALIDSPEC; + goto out; + } + if (revspec.flags & GIT_REVPARSE_MERGE_BASE) { /* TODO: support "<commit>...<commit>" */ git_error_set(GIT_ERROR_INVALID, "symmetric differences not implemented in revwalk"); - return GIT_EINVALIDSPEC; + error = GIT_EINVALIDSPEC; + goto out; } if ((error = push_commit(walk, git_object_id(revspec.from), 1, false))) diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 8e7302552..ee70ec635 100644 --- a/tests/revwalk/basic.c +++ b/tests/revwalk/basic.c @@ -400,6 +400,24 @@ void test_revwalk_basic__push_range(void) cl_git_pass(test_walk_only(_walk, commit_sorting_segment, 2)); } +void test_revwalk_basic__push_range_merge_base(void) +{ + revwalk_basic_setup_walk(NULL); + + git_revwalk_reset(_walk); + git_revwalk_sorting(_walk, 0); + cl_git_fail_with(GIT_EINVALIDSPEC, git_revwalk_push_range(_walk, "HEAD...HEAD~2")); +} + +void test_revwalk_basic__push_range_no_range(void) +{ + revwalk_basic_setup_walk(NULL); + + git_revwalk_reset(_walk); + git_revwalk_sorting(_walk, 0); + cl_git_fail_with(GIT_EINVALIDSPEC, git_revwalk_push_range(_walk, "HEAD")); +} + void test_revwalk_basic__push_mixed(void) { git_oid oid; |