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

Re: [PATCH] cg-log: make -r id:id show the given id instead of nothing

From
Jonas Fonseca <fonseca@diku.dk>
Date
May 29, 2005, 13:07 UTC
Message-ID
<20050529130719.GA16291@diku.dk>
In-Reply-To
<20050529121910.GG1036@pasky.ji.cz>
Petr Baudis <pasky@ucw.cz> wrote Sun, May 29, 2005:
Show 10 quoted lines
> Dear diary, on Fri, May 20, 2005 at 05:04:00PM CEST, I got a letter
> where Jonas Fonseca <fonseca@diku.dk> told me that...
> > If cg-log is passed -r cogito-0.10 -r cogito-0.10 no log entries are
> > shown. This patch make it show the log for the given ID.
> > 
> > Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
> 
> I don't like such a special case a lot. If you just want to make it
> possible to show up just a single revision by cg-log, what about -R or
> something, so that you don't need to write it twice?

I admit it is a bit weird. The reason for this was to make support for specifying revisions with something as fuzzy as dates more usable. Originally I modified commit-id to support it, but I've tried to move the logic to the new cg-Xnormid to just give an idea. It is suppose to add support for

	$ cg-log -r '2005-05-12':'1 day ago'

but for some reason it seems to only work as expected for commits by you. That is it works as expected when I specify the dates for cogito-0.9 and cogito-0.10.

Of course supporting revisions via date specifications can lead to ambiguity problems when the date contains `HH:MM' because the colon can confuse -r option parsing. This means that either a new option needs to be added (-D?) or the rev1:rev2 case has to be handled after all options has been parsed so that `-r date1 -r date2' can be handled correctly.

Index: cg-Xnormid
===================================================================
--- c8e987e5e4608c1144293cd3f852210d70b572cb/cg-Xnormid  (mode:100755)
+++ uncommitted/cg-Xnormid  (mode:100755)
@@ -40,6 +40,14 @@
 	fi
 fi
 
+if [ ${#id} -ne 40 ] || [ ! -f .git/objects/${id:0:2}/${id:2} ]; then
+	reqsecs=$(date --date="$id" +'%s' 2>/dev/null)
+
+	if [ "$reqsecs" ]; then
+		id=$(git-rev-list --min-age=$reqsecs --max-count=1 HEAD)
+	fi
+fi
+
 # If we don't have a 40-char ID by now, it's an error
 if [ ${#id} -ne 40 ] || [ ! -f .git/objects/${id:0:2}/${id:2} ]; then
 	echo "Invalid id: $id" >&2
-- 
Jonas Fonseca
Previous: Petr Baudis
Message 3 of 3 in “cg-log: make -r id:id show the given id instead of nothing”
  1. cg-log: make -r id:id show the given id instead of nothingJonas Fonseca, May 20, 2005
  2. Petr BaudisMay 29, 2005
  3. Jonas FonsecaMay 29, 2005

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.