summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Belfer <arrbee@arrbee.com>2012-03-23 11:03:01 -0700
committerRussell Belfer <arrbee@arrbee.com>2012-03-23 11:03:01 -0700
commitc8838ee92d85b3f027f8cabd87b98b682778cdbf (patch)
treea86e275fc20572afdfe16977b575a73efda8e95a
parent4b136a94d948e62634633092c9d1052c4b074e6c (diff)
downloadlibgit2-c8838ee92d85b3f027f8cabd87b98b682778cdbf.tar.gz
Restore default status recursion behavior
This gives `git_status_foreach()` back its old behavior of emulating the "--untracked=all" behavior of git. You can get any of the various --untracked options by passing flags to `git_status_foreach_ext()` but the basic version will keep the behavior it has always had.
-rw-r--r--src/status.c3
-rw-r--r--tests-clar/status/worktree.c9
-rw-r--r--tests/t18-status.c8
3 files changed, 15 insertions, 5 deletions
diff --git a/src/status.c b/src/status.c
index a0716e949..bec75294f 100644
--- a/src/status.c
+++ b/src/status.c
@@ -192,7 +192,8 @@ int git_status_foreach(
opts.show = GIT_STATUS_SHOW_INDEX_AND_WORKDIR;
opts.flags = GIT_STATUS_OPT_INCLUDE_IGNORED |
- GIT_STATUS_OPT_INCLUDE_UNTRACKED;
+ GIT_STATUS_OPT_INCLUDE_UNTRACKED |
+ GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS;
return git_status_foreach_ext(repo, &opts, callback, payload);
}
diff --git a/tests-clar/status/worktree.c b/tests-clar/status/worktree.c
index dbc2feebd..7a0494ec9 100644
--- a/tests-clar/status/worktree.c
+++ b/tests-clar/status/worktree.c
@@ -143,11 +143,12 @@ void test_status_worktree__purged_worktree(void)
cl_assert(counts.wrong_sorted_path == 0);
}
-/* this test is equivalent to t18-status.c:statuscb3 */
+/* this test is similar to t18-status.c:statuscb3 */
void test_status_worktree__swap_subdir_and_file(void)
{
struct status_entry_counts counts;
git_repository *repo = cl_git_sandbox_init("status");
+ git_status_options opts;
/* first alter the contents of the worktree */
cl_git_pass(p_rename("status/current_file", "status/swap"));
@@ -164,8 +165,12 @@ void test_status_worktree__swap_subdir_and_file(void)
counts.expected_paths = entry_paths3;
counts.expected_statuses = entry_statuses3;
+ memset(&opts, 0, sizeof(opts));
+ opts.flags = GIT_STATUS_OPT_INCLUDE_UNTRACKED |
+ GIT_STATUS_OPT_INCLUDE_IGNORED;
+
cl_git_pass(
- git_status_foreach(repo, cb_status__normal, &counts)
+ git_status_foreach_ext(repo, &opts, cb_status__normal, &counts)
);
cl_assert(counts.entry_count == counts.expected_entry_count);
diff --git a/tests/t18-status.c b/tests/t18-status.c
index 8abff9872..bfd6906c1 100644
--- a/tests/t18-status.c
+++ b/tests/t18-status.c
@@ -261,7 +261,9 @@ static const char *entry_paths3[] = {
"42-is-not-prime.sigh",
"README.md",
"current_file",
- "current_file/",
+ "current_file/current_file",
+ "current_file/modified_file",
+ "current_file/new_file",
"file_deleted",
"ignored_file",
"modified_file",
@@ -286,6 +288,8 @@ static const unsigned int entry_statuses3[] = {
GIT_STATUS_WT_NEW,
GIT_STATUS_WT_DELETED,
GIT_STATUS_WT_NEW,
+ GIT_STATUS_WT_NEW,
+ GIT_STATUS_WT_NEW,
GIT_STATUS_WT_DELETED,
GIT_STATUS_IGNORED,
GIT_STATUS_WT_MODIFIED,
@@ -304,7 +308,7 @@ static const unsigned int entry_statuses3[] = {
GIT_STATUS_WT_DELETED,
};
-#define ENTRY_COUNT3 21
+#define ENTRY_COUNT3 23
BEGIN_TEST(statuscb3, "test retrieving status for a worktree where a file and a subdir have been renamed and some files have been added")
git_repository *repo;