mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
checkout test: further ensure workdir perms are updated
When both the index _and_ the working directory has changed permissions on a file permissions on a file - but only the permissions, such that the contents of the file are identical - ensure that `git_checkout` updates the permissions to match the checkout target.
This commit is contained in:
committed by
Patrick Steinhardt
parent
7361590030
commit
1b853c4831
@@ -156,3 +156,28 @@ void test_checkout_head__typechange_workdir(void)
|
||||
|
||||
git_object_free(target);
|
||||
}
|
||||
|
||||
void test_checkout_head__typechange_index_and_workdir(void)
|
||||
{
|
||||
git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
|
||||
git_object *target;
|
||||
git_index *index;
|
||||
struct stat st;
|
||||
|
||||
opts.checkout_strategy = GIT_CHECKOUT_FORCE;
|
||||
|
||||
cl_git_pass(git_revparse_single(&target, g_repo, "HEAD"));
|
||||
cl_git_pass(git_reset(g_repo, target, GIT_RESET_HARD, NULL));
|
||||
|
||||
cl_must_pass(p_chmod("testrepo/new.txt", 0755));
|
||||
cl_git_pass(git_repository_index(&index, g_repo));
|
||||
cl_git_pass(git_index_add_bypath(index, "new.txt"));
|
||||
cl_git_pass(git_index_write(index));
|
||||
cl_git_pass(git_checkout_head(g_repo, &opts));
|
||||
|
||||
cl_git_pass(p_stat("testrepo/new.txt", &st));
|
||||
cl_assert(!GIT_PERMS_IS_EXEC(st.st_mode));
|
||||
|
||||
git_object_free(target);
|
||||
git_index_free(index);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user