convert read_cache_preload() to take struct pathspec
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
78a951432d
commit
5ab2a2dabd
@ -5,7 +5,8 @@
|
||||
#include "pathspec.h"
|
||||
|
||||
#ifdef NO_PTHREADS
|
||||
static void preload_index(struct index_state *index, const char **pathspec)
|
||||
static void preload_index(struct index_state *index,
|
||||
const struct pathspec *pathspec)
|
||||
{
|
||||
; /* nothing */
|
||||
}
|
||||
@ -25,7 +26,7 @@ static void preload_index(struct index_state *index, const char **pathspec)
|
||||
struct thread_data {
|
||||
pthread_t pthread;
|
||||
struct index_state *index;
|
||||
const char **pathspec;
|
||||
struct pathspec pathspec;
|
||||
int offset, nr;
|
||||
};
|
||||
|
||||
@ -36,9 +37,7 @@ static void *preload_thread(void *_data)
|
||||
struct index_state *index = p->index;
|
||||
struct cache_entry **cep = index->cache + p->offset;
|
||||
struct cache_def cache;
|
||||
struct pathspec pathspec;
|
||||
|
||||
init_pathspec(&pathspec, p->pathspec);
|
||||
memset(&cache, 0, sizeof(cache));
|
||||
nr = p->nr;
|
||||
if (nr + p->offset > index->cache_nr)
|
||||
@ -54,7 +53,7 @@ static void *preload_thread(void *_data)
|
||||
continue;
|
||||
if (ce_uptodate(ce))
|
||||
continue;
|
||||
if (!ce_path_match(ce, &pathspec))
|
||||
if (!ce_path_match(ce, &p->pathspec))
|
||||
continue;
|
||||
if (threaded_has_symlink_leading_path(&cache, ce->name, ce_namelen(ce)))
|
||||
continue;
|
||||
@ -64,11 +63,11 @@ static void *preload_thread(void *_data)
|
||||
continue;
|
||||
ce_mark_uptodate(ce);
|
||||
} while (--nr > 0);
|
||||
free_pathspec(&pathspec);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void preload_index(struct index_state *index, const char **pathspec)
|
||||
static void preload_index(struct index_state *index,
|
||||
const struct pathspec *pathspec)
|
||||
{
|
||||
int threads, i, work, offset;
|
||||
struct thread_data data[MAX_PARALLEL];
|
||||
@ -83,10 +82,12 @@ static void preload_index(struct index_state *index, const char **pathspec)
|
||||
threads = MAX_PARALLEL;
|
||||
offset = 0;
|
||||
work = DIV_ROUND_UP(index->cache_nr, threads);
|
||||
memset(&data, 0, sizeof(data));
|
||||
for (i = 0; i < threads; i++) {
|
||||
struct thread_data *p = data+i;
|
||||
p->index = index;
|
||||
p->pathspec = pathspec;
|
||||
if (pathspec)
|
||||
copy_pathspec(&p->pathspec, pathspec);
|
||||
p->offset = offset;
|
||||
p->nr = work;
|
||||
offset += work;
|
||||
@ -101,7 +102,8 @@ static void preload_index(struct index_state *index, const char **pathspec)
|
||||
}
|
||||
#endif
|
||||
|
||||
int read_index_preload(struct index_state *index, const char **pathspec)
|
||||
int read_index_preload(struct index_state *index,
|
||||
const struct pathspec *pathspec)
|
||||
{
|
||||
int retval = read_index(index);
|
||||
|
||||
|
Reference in New Issue
Block a user