diff options
| author | Edward Thomson <ethomson@edwardthomson.com> | 2014-07-18 14:50:06 -0400 |
|---|---|---|
| committer | Edward Thomson <ethomson@microsoft.com> | 2014-10-26 22:59:21 -0400 |
| commit | 93a7004cc234da31d912bb0f266c39b99ab8c8db (patch) | |
| tree | 06fc49a4dda32a64a77e221f6ebe7109d1754d1b /tests | |
| parent | a35a9890b00b538cd0f3ef94a526c0dd2ec461bf (diff) | |
| download | libgit2-93a7004cc234da31d912bb0f266c39b99ab8c8db.tar.gz | |
git_rebase_commit: drop already-picked commits
Already cherry-picked commits should not be re-included. If all changes
included in a commit exist in the upstream, then we should error with
GIT_EAPPLIED.
Diffstat (limited to 'tests')
11 files changed, 43 insertions, 0 deletions
diff --git a/tests/rebase/merge.c b/tests/rebase/merge.c index e578bef9b..04d06d2e8 100644 --- a/tests/rebase/merge.c +++ b/tests/rebase/merge.c @@ -207,3 +207,41 @@ void test_rebase_merge__commit_updates_rewritten(void) git_reference_free(upstream_ref); } +void test_rebase_merge__commit_drops_already_applied(void) +{ + git_reference *branch_ref, *upstream_ref; + git_merge_head *branch_head, *upstream_head; + git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; + git_oid commit_id; + int error; + + 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/green_pea")); + + 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_git_fail(error = git_rebase_commit(&commit_id, repo, NULL, signature, + NULL, NULL)); + + cl_assert_equal_i(GIT_EAPPLIED, error); + + cl_git_pass(git_rebase_next(repo, &checkout_opts)); + cl_git_pass(git_rebase_commit(&commit_id, repo, NULL, signature, + NULL, NULL)); + + cl_assert_equal_file( + "8d1f13f93c4995760ac07d129246ac1ff64c0be9 2ac4fb7b74c1287f6c792acad759e1ec01e18dae\n", + 82, "rebase/.git/rebase-merge/rewritten"); + + git_merge_head_free(branch_head); + git_merge_head_free(upstream_head); + git_reference_free(branch_ref); + git_reference_free(upstream_ref); +} + diff --git a/tests/resources/rebase/.gitted/objects/05/3808a709cf91385985369159b296cf61a177ac b/tests/resources/rebase/.gitted/objects/05/3808a709cf91385985369159b296cf61a177ac Binary files differnew file mode 100644 index 000000000..c38c5b255 --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/05/3808a709cf91385985369159b296cf61a177ac diff --git a/tests/resources/rebase/.gitted/objects/50/8be4ff49d38465ad3de58f66d38f70e59f881f b/tests/resources/rebase/.gitted/objects/50/8be4ff49d38465ad3de58f66d38f70e59f881f Binary files differnew file mode 100644 index 000000000..7ce4452b2 --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/50/8be4ff49d38465ad3de58f66d38f70e59f881f diff --git a/tests/resources/rebase/.gitted/objects/61/139b9b40a3e489f4abbc6af14e10ae14006e47 b/tests/resources/rebase/.gitted/objects/61/139b9b40a3e489f4abbc6af14e10ae14006e47 Binary files differnew file mode 100644 index 000000000..b096a964c --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/61/139b9b40a3e489f4abbc6af14e10ae14006e47 diff --git a/tests/resources/rebase/.gitted/objects/ad/c97cfb874cdfb9d5ab17b54f3771dea6e02ccf b/tests/resources/rebase/.gitted/objects/ad/c97cfb874cdfb9d5ab17b54f3771dea6e02ccf Binary files differnew file mode 100644 index 000000000..cc7ccd086 --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/ad/c97cfb874cdfb9d5ab17b54f3771dea6e02ccf diff --git a/tests/resources/rebase/.gitted/objects/cb/20a10406172afd6ca3138ce36ecaf8b1269e8e b/tests/resources/rebase/.gitted/objects/cb/20a10406172afd6ca3138ce36ecaf8b1269e8e Binary files differnew file mode 100644 index 000000000..acd6bdc56 --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/cb/20a10406172afd6ca3138ce36ecaf8b1269e8e diff --git a/tests/resources/rebase/.gitted/objects/d4/82e77aecb8e07da43e4cad6e0dcb59219e12af b/tests/resources/rebase/.gitted/objects/d4/82e77aecb8e07da43e4cad6e0dcb59219e12af Binary files differnew file mode 100644 index 000000000..af3bd174a --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/d4/82e77aecb8e07da43e4cad6e0dcb59219e12af diff --git a/tests/resources/rebase/.gitted/objects/dc/12ac1e10f2be70e8ecd52132a08da98a309c3a b/tests/resources/rebase/.gitted/objects/dc/12ac1e10f2be70e8ecd52132a08da98a309c3a new file mode 100644 index 000000000..9907248f8 --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/dc/12ac1e10f2be70e8ecd52132a08da98a309c3a @@ -0,0 +1 @@ +xMJ1]ϤAd@\UICwLDQ/mUAI1eqU<hKfOg$#2/]/%.(-.
uxɟ3mu?鬿==
x$Dc@4sCycW5]זkGJFQ-
Zy
\ No newline at end of file diff --git a/tests/resources/rebase/.gitted/objects/e7/bb00c4eab291e08361fda376733a12b4150aa9 b/tests/resources/rebase/.gitted/objects/e7/bb00c4eab291e08361fda376733a12b4150aa9 Binary files differnew file mode 100644 index 000000000..da96e9d9c --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/e7/bb00c4eab291e08361fda376733a12b4150aa9 diff --git a/tests/resources/rebase/.gitted/objects/ed/f7b3ffde1624c60d2d6b1a2bb792d86de172e0 b/tests/resources/rebase/.gitted/objects/ed/f7b3ffde1624c60d2d6b1a2bb792d86de172e0 new file mode 100644 index 000000000..e2e98d6d8 --- /dev/null +++ b/tests/resources/rebase/.gitted/objects/ed/f7b3ffde1624c60d2d6b1a2bb792d86de172e0 @@ -0,0 +1,3 @@ +xOKN!u)h +ct
f?8fb8{}o:`I0U
ZbH-PKўhEk=t@LrBق>!EnDph~K?C~!pSCoz3 +!D <轛;1]d~juZU
\ No newline at end of file diff --git a/tests/resources/rebase/.gitted/refs/heads/green_pea b/tests/resources/rebase/.gitted/refs/heads/green_pea new file mode 100644 index 000000000..3bffe27d1 --- /dev/null +++ b/tests/resources/rebase/.gitted/refs/heads/green_pea @@ -0,0 +1 @@ +d482e77aecb8e07da43e4cad6e0dcb59219e12af |
