1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-25 22:56:10 +02:00

[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>
This commit is contained in:
Junio C Hamano 2005-04-16 08:33:23 -07:00 committed by Linus Torvalds
parent fcf712e60e
commit aee461985f
2 changed files with 25 additions and 9 deletions

12
cache.h
View File

@ -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 */

View File

@ -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();