summaryrefslogtreecommitdiff
path: root/src/diff.c
diff options
context:
space:
mode:
authorJustin Spahr-Summers <justin.spahrsummers@gmail.com>2014-04-11 12:03:28 -0700
committerJustin Spahr-Summers <justin.spahrsummers@gmail.com>2014-04-11 12:03:28 -0700
commit054a7959e372c99be55748f76fe541f1c0a537ca (patch)
treedd78ed8ab8344d03463ea1edd6e1d80a170724d8 /src/diff.c
parent8f7bc6461b81499216b73881b07f5476c5085660 (diff)
parentbcc622934a90307390f058c7ef4203f8bbcfe0d6 (diff)
downloadlibgit2-jss/fix-ignore-pop.tar.gz
Merge remote-tracking branch 'origin/development' into jss/fix-ignore-popjss/fix-ignore-pop
Diffstat (limited to 'src/diff.c')
-rw-r--r--src/diff.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/diff.c b/src/diff.c
index 484273f4a..e62f45c22 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -876,7 +876,7 @@ static int handle_unmatched_new_item(
DIFF_FLAG_IS_SET(diff, GIT_DIFF_RECURSE_IGNORED_DIRS));
/* do not advance into directories that contain a .git file */
- if (recurse_into_dir) {
+ if (recurse_into_dir && !contains_oitem) {
git_buf *full = NULL;
if (git_iterator_current_workdir_path(&full, info->new_iter) < 0)
return -1;
@@ -969,6 +969,16 @@ static int handle_unmatched_new_item(
if (git_submodule_lookup(NULL, info->repo, nitem->path) != 0) {
giterr_clear();
delta_type = GIT_DELTA_IGNORED;
+
+ /* if this contains a tracked item, treat as normal TREE */
+ if (contains_oitem) {
+ error = git_iterator_advance_into(&info->nitem, info->new_iter);
+ if (error != GIT_ENOTFOUND)
+ return error;
+
+ giterr_clear();
+ return git_iterator_advance(&info->nitem, info->new_iter);
+ }
}
}