diff options
author | Russell Belfer <rb@github.com> | 2014-04-18 10:32:35 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-04-18 10:32:35 -0700 |
commit | 6a0956e504328f6584af971e840c202ecb21b5b6 (patch) | |
tree | 234b3fc25eecccc41a6cafe7c7322eb476b67569 /src/path.c | |
parent | 3c69bebc1c18444e9358c33f56c7cfefea4d1a8f (diff) | |
download | libgit2-6a0956e504328f6584af971e840c202ecb21b5b6.tar.gz |
Pop ignore only if whole relative path matches
When traversing the directory structure, the iterator pushes and
pops ignore files using a vector. Some directories don't have
ignore files, so it uses a path comparison to decide when it is
right to actually pop the last ignore file. This was only
comparing directory suffixes, though, so a subdirectory with the
same name as a parent could result in the parent's .gitignore
being popped off the list ignores too early. This changes the
logic to compare the entire relative path of the ignore file.
Diffstat (limited to 'src/path.c')
-rw-r--r-- | src/path.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/path.c b/src/path.c index 7cad28d45..a990b005f 100644 --- a/src/path.c +++ b/src/path.c @@ -624,7 +624,7 @@ int git_path_find_dir(git_buf *dir, const char *path, const char *base) /* call dirname if this is not a directory */ if (!error) /* && git_path_isdir(dir->ptr) == false) */ - error = git_path_dirname_r(dir, dir->ptr); + error = (git_path_dirname_r(dir, dir->ptr) < 0) ? -1 : 0; if (!error) error = git_path_to_dir(dir); |