1
#include "test-tool.h"
2
#include "cache.h"
3
#include "config.h"
4
-#include "blob.h"
5
-#include "commit.h"
6
-#include "tree.h"
7
-#include "sparse-index.h"
8
-
9
-static void print_cache_entry(struct cache_entry *ce)
10
-{
11
- const char *type;
12
- printf("%06o ", ce->ce_mode & 0177777);
13
-
14
- if (S_ISSPARSEDIR(ce->ce_mode))
15
- type = tree_type;
16
- else if (S_ISGITLINK(ce->ce_mode))
17
- type = commit_type;
18
- else
19
- type = blob_type;
20
-
21
- printf("%s %s\t%s\n",
22
- type,
23
- oid_to_hex(&ce->oid),
24
- ce->name);
25
-}
26
-
27
-static void print_cache(struct index_state *istate)
28
-{
29
- int i;
30
- for (i = 0; i < istate->cache_nr; i++)
31
- print_cache_entry(istate->cache[i]);
32
-}
4
5
int cmd__read_cache(int argc, const char **argv)
6
{
36
- struct repository *r = the_repository;
7
int i, cnt = 1;
8
const char *name = NULL;
39
- int table = 0, expand = 0;
9
10
initialize_the_repository();
11
43
- for (++argv, --argc; *argv && starts_with(*argv, "--"); ++argv, --argc) {
44
- if (skip_prefix(*argv, "--print-and-refresh=", &name))
45
- continue;
46
- if (!strcmp(*argv, "--table"))
47
- table = 1;
48
- else if (!strcmp(*argv, "--expand"))
49
- expand = 1;
12
+ if (argc > 1 && skip_prefix(argv[1], "--print-and-refresh=", &name)) {
13
+ argc--;
14
+ argv++;
15
}
16
52
- if (argc == 1)
53
- cnt = strtol(argv[0], NULL, 0);
17
+ if (argc == 2)
18
+ cnt = strtol(argv[1], NULL, 0);
19
setup_git_directory();
20
git_config(git_default_config, NULL);
21
57
- prepare_repo_settings(r);
58
- r->settings.command_requires_full_index = 0;
59
-
22
for (i = 0; i < cnt; i++) {
61
- repo_read_index(r);
62
-
63
- if (expand)
64
- ensure_full_index(r->index);
65
-
23
+ read_cache();
24
if (name) {
25
int pos;
26
69
- refresh_index(r->index, REFRESH_QUIET,
27
+ refresh_index(&the_index, REFRESH_QUIET,
28
NULL, NULL, NULL);
71
- pos = index_name_pos(r->index, name, strlen(name));
29
+ pos = index_name_pos(&the_index, name, strlen(name));
30
if (pos < 0)
31
die("%s not in index", name);
32
printf("%s is%s up to date\n", name,
75
- ce_uptodate(r->index->cache[pos]) ? "" : " not");
33
+ ce_uptodate(the_index.cache[pos]) ? "" : " not");
34
write_file(name, "%d\n", i);
35
}
78
- if (table)
79
- print_cache(r->index);
80
- discard_index(r->index);
36
+ discard_cache();
37
}
38
return 0;
39
}