mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-08 04:30:48 +00:00

`git_rebase_next` will apply the next patch (or cherry-pick) operation, leaving the results checked out in the index / working directory so that consumers can resolve any conflicts, as appropriate.
60 lines
1.8 KiB
C
60 lines
1.8 KiB
C
#include "clar_libgit2.h"
|
|
#include "git2/rebase.h"
|
|
#include "posix.h"
|
|
|
|
#include <fcntl.h>
|
|
|
|
static git_repository *repo;
|
|
static git_signature *signature;
|
|
|
|
// Fixture setup and teardown
|
|
void test_rebase_merge__initialize(void)
|
|
{
|
|
repo = cl_git_sandbox_init("rebase");
|
|
}
|
|
|
|
void test_rebase_merge__cleanup(void)
|
|
{
|
|
cl_git_sandbox_cleanup();
|
|
}
|
|
|
|
void test_rebase_merge__next(void)
|
|
{
|
|
git_reference *branch_ref, *upstream_ref;
|
|
git_merge_head *branch_head, *upstream_head;
|
|
git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT;
|
|
git_status_list *status_list;
|
|
const git_status_entry *status_entry;
|
|
git_oid file1_id;
|
|
|
|
checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE;
|
|
|
|
cl_git_pass(git_reference_lookup(&branch_ref, repo, "refs/heads/beef"));
|
|
cl_git_pass(git_reference_lookup(&upstream_ref, repo, "refs/heads/master"));
|
|
|
|
cl_git_pass(git_merge_head_from_ref(&branch_head, repo, branch_ref));
|
|
cl_git_pass(git_merge_head_from_ref(&upstream_head, repo, upstream_ref));
|
|
|
|
cl_git_pass(git_rebase(repo, branch_head, upstream_head, NULL, signature, NULL));
|
|
|
|
cl_git_pass(git_rebase_next(repo, &checkout_opts));
|
|
|
|
cl_assert_equal_file("da9c51a23d02d931a486f45ad18cda05cf5d2b94\n", 41, "rebase/.git/rebase-merge/current");
|
|
cl_assert_equal_file("1\n", 2, "rebase/.git/rebase-merge/msgnum");
|
|
|
|
cl_git_pass(git_status_list_new(&status_list, repo, NULL));
|
|
cl_assert_equal_i(1, git_status_list_entrycount(status_list));
|
|
cl_assert(status_entry = git_status_byindex(status_list, 0));
|
|
|
|
cl_assert_equal_s("beef.txt", status_entry->head_to_index->new_file.path);
|
|
|
|
git_oid_fromstr(&file1_id, "8d95ea62e621f1d38d230d9e7d206e41096d76af");
|
|
cl_assert_equal_oid(&file1_id, &status_entry->head_to_index->new_file.id);
|
|
|
|
git_status_list_free(status_list);
|
|
git_merge_head_free(branch_head);
|
|
git_merge_head_free(upstream_head);
|
|
git_reference_free(branch_ref);
|
|
git_reference_free(upstream_ref);
|
|
}
|