7 #include "sparse-index.h"
9 static void print_cache_entry(struct cache_entry
*ce
)
12 printf("%06o ", ce
->ce_mode
& 0177777);
14 if (S_ISSPARSEDIR(ce
->ce_mode
))
16 else if (S_ISGITLINK(ce
->ce_mode
))
27 static void print_cache(struct index_state
*istate
)
30 for (i
= 0; i
< istate
->cache_nr
; i
++)
31 print_cache_entry(istate
->cache
[i
]);
34 int cmd__read_cache(int argc
, const char **argv
)
36 struct repository
*r
= the_repository
;
38 const char *name
= NULL
;
39 int table
= 0, expand
= 0;
41 initialize_the_repository();
43 for (++argv
, --argc
; *argv
&& starts_with(*argv
, "--"); ++argv
, --argc
) {
44 if (skip_prefix(*argv
, "--print-and-refresh=", &name
))
46 if (!strcmp(*argv
, "--table"))
48 else if (!strcmp(*argv
, "--expand"))
53 cnt
= strtol(argv
[0], NULL
, 0);
54 setup_git_directory();
55 git_config(git_default_config
, NULL
);
57 prepare_repo_settings(r
);
58 r
->settings
.command_requires_full_index
= 0;
60 for (i
= 0; i
< cnt
; i
++) {
64 ensure_full_index(r
->index
);
69 refresh_index(r
->index
, REFRESH_QUIET
,
71 pos
= index_name_pos(r
->index
, name
, strlen(name
));
73 die("%s not in index", name
);
74 printf("%s is%s up to date\n", name
,
75 ce_uptodate(r
->index
->cache
[pos
]) ? "" : " not");
76 write_file(name
, "%d\n", i
);
79 print_cache(r
->index
);
80 discard_index(r
->index
);