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

Re: Better way to find commit from tarball?

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Sep 6, 2010, 20:05 UTC
Message-ID
<20100906200508.GA26371@burratino>
In-Reply-To
<AANLkTi=ZnZppPu8tT3-sUG6zZM8YnonPwMG_XZhO03up@mail.gmail.com>
Todd A. Jacobs wrote:
Show 14 quoted lines
>     cd $SOME_WORK_DIR
>     find . -path ./.git -prune -o -print0 | xargs -0 rm
>     tar xvfz $TARBALL
>     for commit in {0..100}; do
>         id="master~${commit}"
>         if git diff --quiet --exit-code "$id"
>         then
>             echo "Matched on commit $id"
>             break
>         fi
>     done
> 
> Someone please tell me there's an easier way to find a matching tree
> when handed a tarball. This works, but seems cumbersome.
If you are lucky and they used "git archive":
	gunzip <$TARBALL | git get-tar-commit-id
Otherwise: maybe something like this[1] will work.
	tar_id=$(
		git init tarball &&
		cd tarball &&
		perl /usr/share/doc/git/contrib/fast-import/import-tars.perl $TARBALL &&
		git rev-parse --verify HEAD:
	) &&
	rm -fr tarball &&
	git rev-list --full-history --format='%h %T' HEAD |
	grep " $tar_id\$"
[1] http://thread.gmane.org/gmane.comp.version-control.git/44750/focus=44849
Previous: Todd A. Jacobs
Message 2 of 2 in “Better way to find commit from tarball?”
  1. Todd A. JacobsSep 6, 2010
  2. Jonathan NiederSep 6, 2010

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.