Commit 09866d6f by Edward Thomson

stash: correctly stash wd modified/index deleted

parent 57f45e7f
...@@ -313,8 +313,7 @@ static int build_workdir_tree( ...@@ -313,8 +313,7 @@ static int build_workdir_tree(
if ((error = git_commit_tree(&b_tree, b_commit)) < 0) if ((error = git_commit_tree(&b_tree, b_commit)) < 0)
goto cleanup; goto cleanup;
if ((error = git_diff_tree_to_workdir_with_index( if ((error = git_diff_tree_to_workdir(&diff, repo, b_tree, &opts)) < 0)
&diff, repo, b_tree, &opts)) < 0)
goto cleanup; goto cleanup;
data.include_changed = true; data.include_changed = true;
......
...@@ -399,3 +399,22 @@ void test_stash_save__skip_submodules(void) ...@@ -399,3 +399,22 @@ void test_stash_save__skip_submodules(void)
assert_status(repo, "untracked_repo/", GIT_STATUS_WT_NEW); assert_status(repo, "untracked_repo/", GIT_STATUS_WT_NEW);
} }
void test_stash_save__deleted_in_index_modified_in_workdir(void)
{
git_index *index;
git_repository_index(&index, repo);
cl_git_pass(git_index_remove_bypath(index, "who"));
cl_git_pass(git_index_write(index));
assert_status(repo, "who", GIT_STATUS_WT_NEW | GIT_STATUS_INDEX_DELETED);
cl_git_pass(git_stash_save(&stash_tip_oid, repo, signature, NULL, GIT_STASH_DEFAULT));
assert_blob_oid("stash@{0}^0:who", "a0400d4954659306a976567af43125a0b1aa8595");
assert_blob_oid("stash@{0}^2:who", NULL);
git_index_free(index);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment