[PATCH] blame: Add --time to produce raw timestamps

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Signed-off-by: Fredrik Kuivinen <freku045@xxxxxxxxxxxxxx>

---

 Documentation/git-blame.txt |    5 ++++-
 blame.c                     |   24 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/Documentation/git-blame.txt b/Documentation/git-blame.txt
index 0a1fa00..bfed945 100644
--- a/Documentation/git-blame.txt
+++ b/Documentation/git-blame.txt
@@ -20,7 +20,10 @@ OPTIONS
 	Use the same output mode as git-annotate (Default: off).
 
 -l, --long::
-	Show long rev (Defaults off).
+	Show long rev (Default: off).
+
+-t, --time::
+	Show raw timestamp (Default: off).
 
 -S, --rev-file <revs-file>::
 	Use revs from revs-file instead of calling git-rev-list.
diff --git a/blame.c b/blame.c
index 88bfec2..afa22b5 100644
--- a/blame.c
+++ b/blame.c
@@ -20,9 +20,11 @@ #include "xdiff-interface.h"
 
 #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"
 	"  -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";
 
 static struct commit **blame_lines;
@@ -680,13 +682,19 @@ static void get_commit_info(struct commi
 	*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 raw_time)
 {
 	static char time_buf[128];
 	time_t t = time;
 	int minutes, tz;
 	struct tm *tm;
 
+	if (raw_time) {
+		sprintf(time_buf, "%lu %s", time, tz_str);
+		return time_buf;
+	}
+
 	tz = atoi(tz_str);
 	minutes = tz < 0 ? -tz : tz;
 	minutes = (minutes / 100)*60 + (minutes % 100);
@@ -740,6 +748,7 @@ int main(int argc, const char **argv)
 	char filename_buf[256];
 	int sha1_len = 8;
 	int compability = 0;
+	int raw_time = 0;
 	int options = 1;
 	struct commit* start_commit;
 
@@ -768,6 +777,10 @@ int main(int argc, const char **argv)
 				  !strcmp(argv[i], "--compability")) {
 				compability = 1;
 				continue;
+			} else if(!strcmp(argv[i], "-t") ||
+				  !strcmp(argv[i], "--time")) {
+				raw_time = 1;
+				continue;
 			} else if(!strcmp(argv[i], "-S")) {
 				if (i + 1 < argc &&
 				    !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);
 		if(compability) {
 			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,
+					   raw_time),
+			       i+1);
 		} else {
 			if (found_rename)
 				printf(" %-*.*s", longest_file, longest_file,
 				       u->pathname);
 			printf(" (%-*.*s %10s %*d) ",
 			       longest_author, longest_author, ci.author,
-			       format_time(ci.author_time, ci.author_tz),
+			       format_time(ci.author_time, ci.author_tz,
+					   raw_time),
 			       max_digits, i+1);
 		}
 
-
: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]