diff options
author | Justin Spahr-Summers <justin.spahrsummers@gmail.com> | 2014-04-11 12:03:28 -0700 |
---|---|---|
committer | Justin Spahr-Summers <justin.spahrsummers@gmail.com> | 2014-04-11 12:03:28 -0700 |
commit | 054a7959e372c99be55748f76fe541f1c0a537ca (patch) | |
tree | dd78ed8ab8344d03463ea1edd6e1d80a170724d8 /src/diff.c | |
parent | 8f7bc6461b81499216b73881b07f5476c5085660 (diff) | |
parent | bcc622934a90307390f058c7ef4203f8bbcfe0d6 (diff) | |
download | libgit2-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.c | 12 |
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); + } } } |