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

Re: [PATCH 2/2] contrib/git-resurrect.sh: use hash-agnostic OID pattern

From
Jeff King <peff@peff.net>
Date
Oct 8, 2020, 16:13 UTC
Message-ID
<20201008161345.GD2823778@coredump.intra.peff.net>
In-Reply-To
<6fad1fc7fdad98c3dda1ec334a10a6a9e311fef8.1602139448.git.liu.denton@gmail.com>
On Wed, Oct 07, 2020 at 11:44:40PM -0700, Denton Liu wrote:
Show 11 quoted lines
> diff --git a/contrib/git-resurrect.sh b/contrib/git-resurrect.sh
> index 57a77c03f9..d843df3afd 100755
> --- a/contrib/git-resurrect.sh
> +++ b/contrib/git-resurrect.sh
> @@ -37,19 +37,18 @@ search_reflog_merges () {
>  	)
>  }
>  
> -_x40="[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]"
> -_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
> +oid_pattern=$(git hash-object --stdin </dev/null | sed -e 's/./[0-9a-f]/g')
This looks correct, although...
Show 13 quoted lines
>  search_merges () {
>  	git rev-list --all --grep="Merge branch '$1'" \
>  		--pretty=tformat:"%P %s" |
> -	sed -ne "/^$_x40 \($_x40\) Merge .*/ {s//\1/p;$early_exit}"
> +	sed -ne "/^$oid_pattern \($oid_pattern\) Merge .*/ {s//\1/p;$early_exit}"
>  }
>  
>  search_merge_targets () {
>  	git rev-list --all --grep="Merge branch '[^']*' into $branch\$" \
>  		--pretty=tformat:"%H %s" --all |
> -	sed -ne "/^\($_x40\) Merge .*/ {s//\1/p;$early_exit} "
> +	sed -ne "/^\($oid_pattern\) Merge .*/ {s//\1/p;$early_exit} "
>  }

in both cases we are matching output we asked for, so we really matching [0-9a-f]\+ would be correct and sufficient. That's a little simpler. I don't feel too strongly either way, though.

  Side note: It's a shame that there is no way to convince rev-list not
  to print the "commit ..." header, which is really what we're avoiding
  here. We probably should have suppressed it with user-formats when
  they were introduced, but it's too late to make that change. I wonder
  if it would be worth adding a command-line option, though. I've often
  had to hack around this when parsing rev-list output (and sometimes
  even resort to using git-log if it's a one-off).
-Peff
Previous: Denton LiuNext: Junio C Hamano
Message 6 of 11 in “contrib/git-resurrect.sh: make it hash-agnostic”
  1. 0/2 contrib/git-resurrect.sh: make it hash-agnosticDenton Liu, Oct 8, 2020
  2. 1/2 contrib/git-resurrect.sh: indent with tabsDenton Liu, Oct 8, 2020
  3. Junio C HamanoOct 8, 2020
  4. Junio C HamanoOct 8, 2020
  5. 2/2 contrib/git-resurrect.sh: use hash-agnostic OID patternDenton Liu, Oct 8, 2020
  6. Jeff KingOct 8, 2020
  7. Junio C HamanoOct 8, 2020
  8. Jeff KingOct 8, 2020
  9. brian m. carlsonOct 8, 2020
  10. Andreas SchwabOct 9, 2020
  11. Jeff KingOct 9, 2020

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.