Commit 4c534892 by Edward Thomson

Merge pull request #2581 from jacquesg/stash-ignored-directories

Stash ignored directories
parents 89602a1a 7b7aa75f
...@@ -232,7 +232,8 @@ static int build_untracked_tree( ...@@ -232,7 +232,8 @@ static int build_untracked_tree(
} }
if (flags & GIT_STASH_INCLUDE_IGNORED) { if (flags & GIT_STASH_INCLUDE_IGNORED) {
opts.flags |= GIT_DIFF_INCLUDE_IGNORED; opts.flags |= GIT_DIFF_INCLUDE_IGNORED |
GIT_DIFF_RECURSE_IGNORED_DIRS;
data.include_ignored = true; data.include_ignored = true;
} }
...@@ -447,10 +448,11 @@ static int ensure_there_are_changes_to_stash( ...@@ -447,10 +448,11 @@ static int ensure_there_are_changes_to_stash(
if (include_untracked_files) if (include_untracked_files)
opts.flags |= GIT_STATUS_OPT_INCLUDE_UNTRACKED | opts.flags |= GIT_STATUS_OPT_INCLUDE_UNTRACKED |
GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS; GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS;
if (include_ignored_files) if (include_ignored_files)
opts.flags |= GIT_STATUS_OPT_INCLUDE_IGNORED; opts.flags |= GIT_STATUS_OPT_INCLUDE_IGNORED |
GIT_STATUS_OPT_RECURSE_IGNORED_DIRS;
error = git_status_foreach_ext(repo, &opts, is_dirty_cb, NULL); error = git_status_foreach_ext(repo, &opts, is_dirty_cb, NULL);
......
...@@ -368,6 +368,23 @@ void test_stash_save__including_untracked_without_any_untracked_file_creates_an_ ...@@ -368,6 +368,23 @@ void test_stash_save__including_untracked_without_any_untracked_file_creates_an_
assert_object_oid("stash^3^{tree}", EMPTY_TREE, GIT_OBJ_TREE); assert_object_oid("stash^3^{tree}", EMPTY_TREE, GIT_OBJ_TREE);
} }
void test_stash_save__ignored_directory(void)
{
cl_git_pass(mkdir("stash/ignored_directory", 0777));
cl_git_pass(mkdir("stash/ignored_directory/sub", 0777));
cl_git_mkfile("stash/ignored_directory/sub/some_file", "stuff");
assert_status(repo, "ignored_directory/sub/some_file", GIT_STATUS_WT_NEW);
cl_git_pass(git_ignore_add_rule(repo, "ignored_directory/"));
assert_status(repo, "ignored_directory/sub/some_file", GIT_STATUS_IGNORED);
cl_git_pass(git_stash_save(&stash_tip_oid, repo, signature, NULL, GIT_STASH_INCLUDE_UNTRACKED | GIT_STASH_INCLUDE_IGNORED));
cl_assert(!git_path_exists("stash/ignored_directory/sub/some_file"));
cl_assert(!git_path_exists("stash/ignored_directory/sub"));
cl_assert(!git_path_exists("stash/ignored_directory"));
}
void test_stash_save__skip_submodules(void) void test_stash_save__skip_submodules(void)
{ {
git_repository *untracked_repo; git_repository *untracked_repo;
......
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