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

Re: How to "pre-populate" a git message

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Dec 3, 2010, 19:29 UTC
Message-ID
<20101203192950.GA14561@burratino>
In-Reply-To
<AANLkTim=dVxVLL31aEBrjw7OhXpdYOjAO9Sk16gGP3zJ@mail.gmail.com>
(+cc: Jeff and Thomas, pioneers in application of notes)
Hi!
Patrick Doyle wrote:
Show 7 quoted lines
> Once in a while, I would like to run some scripts that will
> automatically generate some files that I keep maintained in my
> repository.  (Yes, I know that I shouldn't have to keep them version
> controlled if I can regenerate them, but it's easier to check out old
> versions of the files than it is to check out old versions of the
> repository, wait 1/2 hour to regenerate the files, and then look at
> them).
Not what you asked, but here's an alternative approach.

The idea is that sometimes you might not want to wait 1/2 hour for each commit and that keeping generated files in this case is more about caching than tracking content.

So, wouldn't it be nice if you could ask to remember these generated files _after_ commiting? It works like this:

An expensive command to generate some files can be run (asynchronously?) by explicit request, commit hook, or cron job. First it would check if the file is already available.

	if git notes --ref=generated/expensive.result show HEAD >/dev/null 2>&1
	then
		# already cached
		exit 0
	elif test $? != 1
	then
		# exit with error message
		exec git notes --ref=generated/expensive.result show HEAD
	fi
	# no note found; let's make one!
	... expensive operation ...
	blob=$(git hash-object -w expensive.result) &&
	git notes --ref=generated/expensive.result add -C "$blob" HEAD ||
		exit

The result could be retrieved on checkout (see the post-checkout hook) or explicitly.

	git notes --ref=generated/expensive.result show HEAD >expensive.result+
	mv expensive.result+ expensive.result

See v1.7.2-rc0~159^2~1 (diff: cache textconv output, 2010-04-01) for a similar (but not identical) example. Unfortunately the notes-cache facility used there is not currently exposed for scripted use.

Sorry for the digression.  To return to your question:
> I also like to review the files before they get committed.
Maybe "git commit -v" or the prepare-commit-msg hook could help?

Thanks for an example. Jonathan

Previous: Patrick DoyleNext: Dirk Süsserott
Message 2 of 3 in “How to "pre-populate" a git message”
  1. Patrick DoyleDec 3, 2010
  2. Jonathan NiederDec 3, 2010
  3. Dirk SüsserottDec 3, 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.