diff options
author | Junio C Hamano <junkio@cox.net> | 2005-04-16 19:33:23 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 19:33:23 +0400 |
commit | aee461985f52857fa04999b2a988986dd8c84aba (patch) | |
tree | b474d669fad6d037c18c0d232aef579a65ae101b | |
parent | fcf712e60e3221a7971cb2ad89e61c565172f524 (diff) |
[PATCH] Add --stage to show-files for new stage dircache.
This adds --stage option to show-files command. It shows
file-mode, SHA1, stage and pathname. Record separator follows
the usual convention of -z option as before.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | cache.h | 12 | ||||
-rw-r--r-- | show-files.c | 22 |
2 files changed, 25 insertions, 9 deletions
@@ -65,8 +65,14 @@ struct cache_entry { #define CE_NAMEMASK (0x0fff) #define CE_STAGEMASK (0x3000) +#define CE_STAGESHIFT 12 -#define create_ce_flags(len, stage) htons((len) | ((stage) << 12)) +#define create_ce_flags(len, stage) htons((len) | ((stage) << CE_STAGESHIFT)) +#define ce_namelen(ce) (CE_NAMEMASK & ntohs((ce)->ce_flags)) +#define ce_size(ce) cache_entry_size(ce_namelen(ce)) +#define ce_stage(ce) ((CE_STAGEMASK & ntohs((ce)->ce_flags)) >> CE_STAGESHIFT) + +#define cache_entry_size(len) ((offsetof(struct cache_entry,name) + (len) + 8) & ~7) const char *sha1_file_directory; struct cache_entry **active_cache; @@ -75,10 +81,6 @@ unsigned int active_nr, active_alloc; #define DB_ENVIRONMENT "SHA1_FILE_DIRECTORY" #define DEFAULT_DB_ENVIRONMENT ".git/objects" -#define cache_entry_size(len) ((offsetof(struct cache_entry,name) + (len) + 8) & ~7) -#define ce_namelen(ce) (CE_NAMEMASK & ntohs((ce)->ce_flags)) -#define ce_size(ce) cache_entry_size(ce_namelen(ce)) - #define alloc_nr(x) (((x)+16)*3/2) /* Initialize and use the cache information */ diff --git a/show-files.c b/show-files.c index c9027cc416..0ecb2bd621 100644 --- a/show-files.c +++ b/show-files.c @@ -14,6 +14,7 @@ static int show_deleted = 0; static int show_cached = 0; static int show_others = 0; static int show_ignored = 0; +static int show_stage = 0; static int line_terminator = '\n'; static const char **dir; @@ -108,10 +109,19 @@ static void show_files(void) for (i = 0; i < nr_dir; i++) printf("%s%c", dir[i], line_terminator); } - if (show_cached) { + if (show_cached | show_stage) { for (i = 0; i < active_nr; i++) { struct cache_entry *ce = active_cache[i]; - printf("%s%c", ce->name, line_terminator); + if (!show_stage) + printf("%s%c", ce->name, line_terminator); + else + printf(/* "%06o %s %d %10d %s%c", */ + "%06o %s %d %s%c", + ntohl(ce->ce_mode), + sha1_to_hex(ce->sha1), + ce_stage(ce), + /* ntohl(ce->ce_size), */ + ce->name, line_terminator); } } if (show_deleted) { @@ -156,12 +166,16 @@ int main(int argc, char **argv) show_ignored = 1; continue; } + if (!strcmp(arg, "--stage")) { + show_stage = 1; + continue; + } - usage("show-files (--[cached|deleted|others|ignored])*"); + usage("show-files [-z] (--[cached|deleted|others|ignored|stage])*"); } /* With no flags, we default to showing the cached files */ - if (!(show_cached | show_deleted | show_others | show_ignored)) + if (!(show_stage | show_deleted | show_others | show_ignored)) show_cached = 1; read_cache(); |