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

Re: git checkout exit value and post-commit hooks

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 14, 2017, 06:00 UTC
Message-ID
<xmqqshmgjt2j.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<87y3w8k4ac.fsf@luca>
Andreas Politz <politza@hochschule-trier.de> writes:
> the exit value of a `git checkout' seems to depend on the exit values of
> the hooks it runs. This breaks for example `git bisect', as seen in the
> following example.

I am a bit puzzled why you have "checkout" and "post-commit" on the title, though. Does checkout call a hook for "commit"?

Any script that calls "git checkout" and sees it fail should not blindly continue its usual processing; if "git bisect" notices an error from "git checkout" it internally runs and stops, it is doing the right thing.

A hook script that tries to do something during the main command (e.g. "git checkout") and fails to do what it wanted to do needs a way to tell the main command that it failed, and the way for it to do so is to exit with non-zero status. Upon seeing such an error, the main command needs to relay the error to the end user, as the operation as the whole (i.e. what the main command does, in addition to what the end user wanted to customize by running the hook) failed.

So if your hook tells "git checkout" it failed to do something it wanted to do, it is very sensible for that error to percolate up. If that is not wanted, perhaps you should stop exiting with a failure status from your hook when it did not fail?

Previous: Andreas PolitzNext: Andreas Politz
Message 2 of 3 in “git checkout exit value and post-commit hooks”
  1. Andreas PolitzMar 14, 2017
  2. Junio C HamanoMar 14, 2017
  3. Andreas PolitzMar 14, 2017

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.