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:
parent
78a951432d
commit
5ab2a2dabd
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
2
cache.h
2
cache.h
|
@ -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 *);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue