Merge branch 'cb/partial-commit-relative-pathspec'

* cb/partial-commit-relative-pathspec:
  commit: allow partial commits with relative paths
This commit is contained in:
Junio C Hamano
2011-08-11 11:04:28 -07:00
4 changed files with 39 additions and 38 deletions

32
setup.c
View File

@ -264,6 +264,38 @@ const char **get_pathspec(const char *prefix, const char **pathspec)
return pathspec;
}
const char *pathspec_prefix(const char *prefix, const char **pathspec)
{
const char **p, *n, *prev;
unsigned long max;
if (!pathspec)
return prefix ? xmemdupz(prefix, strlen(prefix)) : NULL;
prev = NULL;
max = PATH_MAX;
for (p = pathspec; (n = *p) != NULL; p++) {
int i, len = 0;
for (i = 0; i < max; i++) {
char c = n[i];
if (prev && prev[i] != c)
break;
if (!c || c == '*' || c == '?')
break;
if (c == '/')
len = i+1;
}
prev = n;
if (len < max) {
max = len;
if (!max)
break;
}
}
return max ? xmemdupz(prev, max) : NULL;
}
/*
* Test if it looks like we're at a git directory.
* We want to see: