|
1 | 1 | #include "test-tool.h"
|
2 | 2 | #include "cache.h"
|
3 | 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 |
| -} |
33 | 4 |
|
34 | 5 | int cmd__read_cache(int argc, const char **argv)
|
35 | 6 | {
|
36 |
| - struct repository *r = the_repository; |
37 | 7 | int i, cnt = 1;
|
38 | 8 | const char *name = NULL;
|
39 |
| - int table = 0, expand = 0; |
40 | 9 |
|
41 | 10 | initialize_the_repository();
|
42 | 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++; |
50 | 15 | }
|
51 | 16 |
|
52 |
| - if (argc == 1) |
53 |
| - cnt = strtol(argv[0], NULL, 0); |
| 17 | + if (argc == 2) |
| 18 | + cnt = strtol(argv[1], NULL, 0); |
54 | 19 | setup_git_directory();
|
55 | 20 | git_config(git_default_config, NULL);
|
56 | 21 |
|
57 |
| - prepare_repo_settings(r); |
58 |
| - r->settings.command_requires_full_index = 0; |
59 |
| - |
60 | 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(); |
66 | 24 | if (name) {
|
67 | 25 | int pos;
|
68 | 26 |
|
69 |
| - refresh_index(r->index, REFRESH_QUIET, |
| 27 | + refresh_index(&the_index, REFRESH_QUIET, |
70 | 28 | NULL, NULL, NULL);
|
71 |
| - pos = index_name_pos(r->index, name, strlen(name)); |
| 29 | + pos = index_name_pos(&the_index, name, strlen(name)); |
72 | 30 | if (pos < 0)
|
73 | 31 | die("%s not in index", name);
|
74 | 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"); |
76 | 34 | write_file(name, "%d\n", i);
|
77 | 35 | }
|
78 |
| - if (table) |
79 |
| - print_cache(r->index); |
80 |
| - discard_index(r->index); |
| 36 | + discard_cache(); |
81 | 37 | }
|
82 | 38 | return 0;
|
83 | 39 | }
|
0 commit comments