1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-06-03 13:26:29 +02:00

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:
Nguyễn Thái Ngọc Duy 2013-07-14 15:35:49 +07:00 committed by Junio C Hamano
parent 78a951432d
commit 5ab2a2dabd
7 changed files with 19 additions and 17 deletions

View File

@ -262,7 +262,7 @@ static int checkout_paths(const struct checkout_opts *opts,
lock_file = xcalloc(1, sizeof(struct lock_file)); lock_file = xcalloc(1, sizeof(struct lock_file));
newfd = hold_locked_index(lock_file, 1); newfd = hold_locked_index(lock_file, 1);
if (read_cache_preload(opts->pathspec.raw) < 0) if (read_cache_preload(&opts->pathspec) < 0)
return error(_("corrupt index file")); return error(_("corrupt index file"));
if (opts->source_tree) if (opts->source_tree)

View File

@ -294,7 +294,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix,
PATHSPEC_PREFER_FULL, PATHSPEC_PREFER_FULL,
prefix, argv); prefix, argv);
if (read_cache_preload(pathspec.raw) < 0) if (read_cache_preload(&pathspec) < 0)
die(_("index file corrupt")); die(_("index file corrupt"));
if (interactive) { if (interactive) {
@ -1245,7 +1245,7 @@ int cmd_status(int argc, const char **argv, const char *prefix)
PATHSPEC_PREFER_FULL, PATHSPEC_PREFER_FULL,
prefix, argv); prefix, argv);
read_cache_preload(s.pathspec.raw); read_cache_preload(&s.pathspec);
refresh_index(&the_index, REFRESH_QUIET|REFRESH_UNMERGED, s.pathspec.raw, NULL, NULL); refresh_index(&the_index, REFRESH_QUIET|REFRESH_UNMERGED, s.pathspec.raw, NULL, NULL);
fd = hold_locked_index(&index_lock, 0); fd = hold_locked_index(&index_lock, 0);

View File

@ -61,7 +61,7 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
(rev.diffopt.output_format & DIFF_FORMAT_PATCH)) (rev.diffopt.output_format & DIFF_FORMAT_PATCH))
rev.combine_merges = rev.dense_combined_merges = 1; rev.combine_merges = rev.dense_combined_merges = 1;
if (read_cache_preload(rev.diffopt.pathspec.raw) < 0) { if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
perror("read_cache_preload"); perror("read_cache_preload");
return -1; return -1;
} }

View File

@ -43,7 +43,7 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
usage(diff_cache_usage); usage(diff_cache_usage);
if (!cached) { if (!cached) {
setup_work_tree(); setup_work_tree();
if (read_cache_preload(rev.diffopt.pathspec.raw) < 0) { if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
perror("read_cache_preload"); perror("read_cache_preload");
return -1; return -1;
} }

View File

@ -140,7 +140,7 @@ static int builtin_diff_index(struct rev_info *revs,
usage(builtin_diff_usage); usage(builtin_diff_usage);
if (!cached) { if (!cached) {
setup_work_tree(); setup_work_tree();
if (read_cache_preload(revs->diffopt.pathspec.raw) < 0) { if (read_cache_preload(&revs->diffopt.pathspec) < 0) {
perror("read_cache_preload"); perror("read_cache_preload");
return -1; return -1;
} }
@ -242,7 +242,7 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv
revs->combine_merges = revs->dense_combined_merges = 1; revs->combine_merges = revs->dense_combined_merges = 1;
setup_work_tree(); setup_work_tree();
if (read_cache_preload(revs->diffopt.pathspec.raw) < 0) { if (read_cache_preload(&revs->diffopt.pathspec) < 0) {
perror("read_cache_preload"); perror("read_cache_preload");
return -1; return -1;
} }

View File

@ -449,7 +449,7 @@ extern int init_db(const char *template_dir, unsigned int flags);
/* Initialize and use the cache information */ /* Initialize and use the cache information */
extern int read_index(struct index_state *); extern int read_index(struct index_state *);
extern int read_index_preload(struct index_state *, const char **pathspec); extern int read_index_preload(struct index_state *, const struct pathspec *pathspec);
extern int read_index_from(struct index_state *, const char *path); extern int read_index_from(struct index_state *, const char *path);
extern int is_index_unborn(struct index_state *); extern int is_index_unborn(struct index_state *);
extern int read_index_unmerged(struct index_state *); extern int read_index_unmerged(struct index_state *);

View File

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