зеркало из https://github.com/microsoft/git.git
pickaxe: hoist empty needle check
If we are given an empty pickaxe needle like "git log -S ''", it is impossible for us to find anything (because no matter what the content, the count will always be 0). We currently check this at the lowest level of contains(). Let's hoist the logic much earlier to has_changes(), so that it is simpler to return our answer before loading any blob data. Signed-off-by: Jeff King <peff@peff.net>
This commit is contained in:
Родитель
b1c2f57db3
Коммит
8fa4b09fb1
|
@ -163,8 +163,6 @@ static unsigned int contains(struct diff_filespec *one, struct diff_options *o,
|
||||||
unsigned int cnt;
|
unsigned int cnt;
|
||||||
unsigned long sz;
|
unsigned long sz;
|
||||||
const char *data;
|
const char *data;
|
||||||
if (!o->pickaxe[0])
|
|
||||||
return 0;
|
|
||||||
if (diff_populate_filespec(one, 0))
|
if (diff_populate_filespec(one, 0))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -206,6 +204,9 @@ static unsigned int contains(struct diff_filespec *one, struct diff_options *o,
|
||||||
static int has_changes(struct diff_filepair *p, struct diff_options *o,
|
static int has_changes(struct diff_filepair *p, struct diff_options *o,
|
||||||
regex_t *regexp, kwset_t kws)
|
regex_t *regexp, kwset_t kws)
|
||||||
{
|
{
|
||||||
|
if (!o->pickaxe[0])
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!DIFF_FILE_VALID(p->one)) {
|
if (!DIFF_FILE_VALID(p->one)) {
|
||||||
if (!DIFF_FILE_VALID(p->two))
|
if (!DIFF_FILE_VALID(p->two))
|
||||||
return 0; /* ignore unmerged */
|
return 0; /* ignore unmerged */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче