blame: Add --time to produce raw timestamps

fix the usage string and clean up the docs while we are at it

Signed-off-by: Fredrik Kuivinen <freku045@student.liu.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Fredrik Kuivinen 2006-06-13 08:08:31 +02:00 committed by Junio C Hamano
parent d8498500ba
commit b19ee24b22
2 changed files with 24 additions and 5 deletions

View File

@ -20,7 +20,10 @@ OPTIONS
Use the same output mode as git-annotate (Default: off). Use the same output mode as git-annotate (Default: off).
-l, --long:: -l, --long::
Show long rev (Defaults off). Show long rev (Default: off).
-t, --time::
Show raw timestamp (Default: off).
-S, --rev-file <revs-file>:: -S, --rev-file <revs-file>::
Use revs from revs-file instead of calling git-rev-list. Use revs from revs-file instead of calling git-rev-list.

24
blame.c
View File

@ -20,9 +20,11 @@
#define DEBUG 0 #define DEBUG 0
static const char blame_usage[] = "[-c] [-l] [--] file [commit]\n" static const char blame_usage[] = "[-c] [-l] [-t] [-S <revs-file>] [--] file [commit]\n"
" -c, --compability Use the same output mode as git-annotate (Default: off)\n" " -c, --compability Use the same output mode as git-annotate (Default: off)\n"
" -l, --long Show long commit SHA1 (Default: off)\n" " -l, --long Show long commit SHA1 (Default: off)\n"
" -t, --time Show raw timestamp (Default: off)\n"
" -S, --revs-file Use revisions from revs-file instead of calling git-rev-list\n"
" -h, --help This message"; " -h, --help This message";
static struct commit **blame_lines; static struct commit **blame_lines;
@ -680,13 +682,19 @@ static void get_commit_info(struct commit* commit, struct commit_info* ret)
*tmp = 0; *tmp = 0;
} }
static const char* format_time(unsigned long time, const char* tz_str) static const char* format_time(unsigned long time, const char* tz_str,
int show_raw_time)
{ {
static char time_buf[128]; static char time_buf[128];
time_t t = time; time_t t = time;
int minutes, tz; int minutes, tz;
struct tm *tm; struct tm *tm;
if (show_raw_time) {
sprintf(time_buf, "%lu %s", time, tz_str);
return time_buf;
}
tz = atoi(tz_str); tz = atoi(tz_str);
minutes = tz < 0 ? -tz : tz; minutes = tz < 0 ? -tz : tz;
minutes = (minutes / 100)*60 + (minutes % 100); minutes = (minutes / 100)*60 + (minutes % 100);
@ -740,6 +748,7 @@ int main(int argc, const char **argv)
char filename_buf[256]; char filename_buf[256];
int sha1_len = 8; int sha1_len = 8;
int compability = 0; int compability = 0;
int show_raw_time = 0;
int options = 1; int options = 1;
struct commit* start_commit; struct commit* start_commit;
@ -768,6 +777,10 @@ int main(int argc, const char **argv)
!strcmp(argv[i], "--compability")) { !strcmp(argv[i], "--compability")) {
compability = 1; compability = 1;
continue; continue;
} else if(!strcmp(argv[i], "-t") ||
!strcmp(argv[i], "--time")) {
show_raw_time = 1;
continue;
} else if(!strcmp(argv[i], "-S")) { } else if(!strcmp(argv[i], "-S")) {
if (i + 1 < argc && if (i + 1 < argc &&
!read_ancestry(argv[i + 1], &sha1_p)) { !read_ancestry(argv[i + 1], &sha1_p)) {
@ -873,14 +886,17 @@ int main(int argc, const char **argv)
fwrite(sha1_to_hex(c->object.sha1), sha1_len, 1, stdout); fwrite(sha1_to_hex(c->object.sha1), sha1_len, 1, stdout);
if(compability) { if(compability) {
printf("\t(%10s\t%10s\t%d)", ci.author, printf("\t(%10s\t%10s\t%d)", ci.author,
format_time(ci.author_time, ci.author_tz), i+1); format_time(ci.author_time, ci.author_tz,
show_raw_time),
i+1);
} else { } else {
if (found_rename) if (found_rename)
printf(" %-*.*s", longest_file, longest_file, printf(" %-*.*s", longest_file, longest_file,
u->pathname); u->pathname);
printf(" (%-*.*s %10s %*d) ", printf(" (%-*.*s %10s %*d) ",
longest_author, longest_author, ci.author, longest_author, longest_author, ci.author,
format_time(ci.author_time, ci.author_tz), format_time(ci.author_time, ci.author_tz,
show_raw_time),
max_digits, i+1); max_digits, i+1);
} }