diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2019-05-12 11:00:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-12 11:00:31 -0700 |
commit | 7f562f2c7880dd7a1b29de62b35842971e746158 (patch) | |
tree | e3c7cc030cad7975d33e1df495db8d665f7ed870 | |
parent | 604e281135df0df3c7ed9d200eb77fec48bc30f0 (diff) | |
parent | e215f47579432e0d0597cdcafab2fafa2e37ca46 (diff) | |
download | libgit2-7f562f2c7880dd7a1b29de62b35842971e746158.tar.gz |
Merge pull request #5057 from eaigner/merge-rebase-onto-name
rebase: orig_head and onto accessors
-rw-r--r-- | include/git2/rebase.h | 28 | ||||
-rw-r--r-- | src/rebase.c | 16 | ||||
-rw-r--r-- | tests/rebase/merge.c | 10 |
3 files changed, 54 insertions, 0 deletions
diff --git a/include/git2/rebase.h b/include/git2/rebase.h index f6b2e20ad..a97c16b05 100644 --- a/include/git2/rebase.h +++ b/include/git2/rebase.h @@ -200,6 +200,34 @@ GIT_EXTERN(int) git_rebase_open( const git_rebase_options *opts); /** + * Gets the original `HEAD` ref name for merge rebases. + * + * @return The original `HEAD` ref name + */ +GIT_EXTERN(const char *) git_rebase_orig_head_name(git_rebase *rebase); + +/** + * Gets the original `HEAD` id for merge rebases. + * + * @return The original `HEAD` id + */ +GIT_EXTERN(const git_oid *) git_rebase_orig_head_id(git_rebase *rebase); + +/** + * Gets the `onto` ref name for merge rebases. + * + * @return The `onto` ref name + */ +GIT_EXTERN(const char *) git_rebase_onto_name(git_rebase *rebase); + +/** + * Gets the `onto` id for merge rebases. + * + * @return The `onto` id + */ +GIT_EXTERN(const git_oid *) git_rebase_onto_id(git_rebase *rebase); + +/** * Gets the count of rebase operations that are to be applied. * * @param rebase The in-progress rebase diff --git a/src/rebase.c b/src/rebase.c index 45460367e..a68313fc6 100644 --- a/src/rebase.c +++ b/src/rebase.c @@ -1327,6 +1327,22 @@ int git_rebase_finish( return error; } +const char *git_rebase_orig_head_name(git_rebase *rebase) { + return rebase->orig_head_name; +} + +const git_oid *git_rebase_orig_head_id(git_rebase *rebase) { + return &rebase->orig_head_id; +} + +const char *git_rebase_onto_name(git_rebase *rebase) { + return rebase->onto_name; +} + +const git_oid *git_rebase_onto_id(git_rebase *rebase) { + return &rebase->onto_id; +} + size_t git_rebase_operation_entrycount(git_rebase *rebase) { assert(rebase); diff --git a/tests/rebase/merge.c b/tests/rebase/merge.c index cccaac7b8..d24e4facf 100644 --- a/tests/rebase/merge.c +++ b/tests/rebase/merge.c @@ -44,6 +44,10 @@ void test_rebase_merge__next(void) git_status_list *status_list; const git_status_entry *status_entry; git_oid pick_id, file1_id; + git_oid master_id, beef_id; + + git_oid_fromstr(&master_id, "efad0b11c47cb2f0220cbd6f5b0f93bb99064b00"); + git_oid_fromstr(&beef_id, "b146bd7608eac53d9bf9e1a6963543588b555c64"); cl_git_pass(git_reference_lookup(&branch_ref, repo, "refs/heads/beef")); cl_git_pass(git_reference_lookup(&upstream_ref, repo, "refs/heads/master")); @@ -53,6 +57,12 @@ void test_rebase_merge__next(void) cl_git_pass(git_rebase_init(&rebase, repo, branch_head, upstream_head, NULL, NULL)); + cl_assert_equal_s("refs/heads/beef", git_rebase_orig_head_name(rebase)); + cl_assert_equal_oid(&beef_id, git_rebase_orig_head_id(rebase)); + + cl_assert_equal_s("master", git_rebase_onto_name(rebase)); + cl_assert_equal_oid(&master_id, git_rebase_onto_id(rebase)); + cl_git_pass(git_rebase_next(&rebase_operation, rebase)); git_oid_fromstr(&pick_id, "da9c51a23d02d931a486f45ad18cda05cf5d2b94"); |