git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Make reflog query '@{1219188291}' act as '@{2008/08/19 16:24:51}'

From
Shawn O. Pearce <spearce@spearce.org>
Date
Aug 19, 2008, 23:44 UTC
Message-ID
<20080819234433.GJ24212@spearce.org>

As we support seconds-since-epoch in $GIT_COMMITTER_TIME we should also support it in a reflog @{...} style notation. We can easily tell this apart from @{nth} style notation by looking to see if the value is unreasonably large for an @{nth} style notation.

The value 1112911993 was chosen for the limit as it is the commit timestamp for e83c516331 "Initial revision of "git" ...". Any reflogs in existance should contain timestamps dated later than the date Linus first stored Git into itself, as reflogs came about quite a bit after that.

Additionally a reflog with 1,112,911,993 record entries is also simply not valid. Such a reflog would require at least 87 TB to store just the old and new SHA-1 values. So our randomly chosen upper limit for @{nth} notation is "big enough" that users will not run into it by accident.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 sha1_name.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/sha1_name.c b/sha1_name.c
index 4fb77f8..e25f56a 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -349,7 +349,10 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
 			else
 				nth = -1;
 		}
-		if (0 <= nth)
+		if (1112911993 <= nth) {
+			at_time = nth;
+			nth = -1;
+		} else if (0 <= nth)
 			at_time = 0;
 		else {
 			char *tmp = xstrndup(str + at + 2, reflog_len);
-- 
1.6.0.96.g2fad1.dirty

-- 
Shawn.
Next: Junio C Hamano
Message 1 of 10 in “Make reflog query '@{1219188291}' act as '@{2008/08/19 16:24:51}'”
  1. Make reflog query '@{1219188291}' act as '@{2008/08/19 16:24:51}'Shawn O. Pearce, Aug 19, 2008
  2. Junio C HamanoAug 19, 2008
  3. Shawn O. PearceAug 20, 2008
  4. Alex RiesenAug 20, 2008
  5. Shawn O. PearceAug 20, 2008
  6. Alex RiesenAug 20, 2008
  7. Shawn O. PearceAug 20, 2008
  8. Alex RiesenAug 20, 2008
  9. Junio C HamanoAug 20, 2008
  10. Shawn O. PearceAug 21, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.