mirror of
https://git.proxmox.com/git/libgit2
synced 2025-07-05 20:35:12 +00:00
Minor fixes
Only apply LEADING_DIR pattern munging to patterns in ignore and attribute files, not to pathspecs used to select files to operate on. Also, allow internal macro definitions to be evaluated before loading all external ones (important so that external ones can make use of internal `binary` definition).
This commit is contained in:
parent
916fcbd617
commit
ac16bd0a94
@ -294,7 +294,7 @@ int git_attr_add_macro(
|
||||
git_attr_rule *macro = NULL;
|
||||
git_pool *pool;
|
||||
|
||||
if ((error = attr_setup(repo)) < 0)
|
||||
if ((error = git_attr_cache__init(repo)) < 0)
|
||||
return error;
|
||||
|
||||
macro = git__calloc(1, sizeof(git_attr_rule));
|
||||
|
@ -545,7 +545,8 @@ int git_attr_fnmatch__parse(
|
||||
if (--slash_count <= 0)
|
||||
spec->flags = spec->flags & ~GIT_ATTR_FNMATCH_FULLPATH;
|
||||
}
|
||||
if (spec->length >= 2 &&
|
||||
if ((spec->flags & GIT_ATTR_FNMATCH_NOLEADINGDIR) == 0 &&
|
||||
spec->length >= 2 &&
|
||||
pattern[spec->length - 1] == '*' &&
|
||||
pattern[spec->length - 2] == '/') {
|
||||
spec->length -= 2;
|
||||
|
@ -31,10 +31,11 @@
|
||||
#define GIT_ATTR_FNMATCH_ALLOWNEG (1U << 9)
|
||||
#define GIT_ATTR_FNMATCH_ALLOWMACRO (1U << 10)
|
||||
#define GIT_ATTR_FNMATCH_LEADINGDIR (1U << 11)
|
||||
#define GIT_ATTR_FNMATCH_NOLEADINGDIR (1U << 12)
|
||||
|
||||
#define GIT_ATTR_FNMATCH__INCOMING \
|
||||
(GIT_ATTR_FNMATCH_ALLOWSPACE | \
|
||||
GIT_ATTR_FNMATCH_ALLOWNEG | GIT_ATTR_FNMATCH_ALLOWMACRO)
|
||||
(GIT_ATTR_FNMATCH_ALLOWSPACE | GIT_ATTR_FNMATCH_ALLOWNEG | \
|
||||
GIT_ATTR_FNMATCH_ALLOWMACRO | GIT_ATTR_FNMATCH_NOLEADINGDIR)
|
||||
|
||||
typedef enum {
|
||||
GIT_ATTR_FILE__IN_MEMORY = 0,
|
||||
|
@ -83,7 +83,8 @@ int git_pathspec__vinit(
|
||||
if (!match)
|
||||
return -1;
|
||||
|
||||
match->flags = GIT_ATTR_FNMATCH_ALLOWSPACE | GIT_ATTR_FNMATCH_ALLOWNEG;
|
||||
match->flags = GIT_ATTR_FNMATCH_ALLOWSPACE |
|
||||
GIT_ATTR_FNMATCH_ALLOWNEG | GIT_ATTR_FNMATCH_NOLEADINGDIR;
|
||||
|
||||
ret = git_attr_fnmatch__parse(match, strpool, NULL, &pattern);
|
||||
if (ret == GIT_ENOTFOUND) {
|
||||
|
Loading…
Reference in New Issue
Block a user