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

Re: Interaction between pre-commit hook and git commit <pathspec>

From
KHKristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Date
Nov 3, 2026, 20:13 UTC
Message-ID
<de4f4f35-500f-4d82-acfd-ca601444f2d2@app.fastmail.com>
In-Reply-To
<CY8PR17MB6236D16AD8CD80720FF1342DAE692@CY8PR17MB6236.namprd17.prod.outlook.com>
On Tue, Nov 3, 2026, at 20:58, Kevin Lyles wrote:
Show 33 quoted lines
> Hello, folks,
>
> The documentation for the pathspec option of the commit command claims:
> "The contents of these files are also staged for the next commit on top
> of what have been staged before."
> However, that appears to only be true if the pre-commit hook doesn't
> modify the index contents.
>
> Here's an example pre-commit script:
>     #!/bin/sh
>    
>     git diff --staged --name-only | while read -r file
>     do
>       {
>         git cat-file blob :"$file"
>         echo '# Extra text'
>       } |
>         {
>           echo -n "100644 blob "
>           echo -n $(git hash-object -w -t blob --path "$file" --stdin)
>           echo -e "\t$file"
>         } |
>           git update-index --index-info
>       echo '# Extra text' >> "$file"
>     done
>
> This always appends "# Extra text" to the end of any staged files, in
> both the index and the worktree. It serves to illustrate the issue,
> without getting into the weeds of what my pre-commit hook is doing.
> Suffice to say that my hook is (sometimes) modifying files in both the
> index (to make sure the updated contents are committed) and the
> worktree (to reduce spurious diffs when file contents are changed).
>[snip]

Reading githooks documentation for pre-commit. To me it reads like the use case is validation/checking, not any mutation. This doesn't sound like a reasonable use case.

Previous: Kevin LylesNext: Junio C Hamano
Message 2 of 4 in “Interaction between pre-commit hook and git commit <pathspec>”
  1. Kevin LylesNov 3, 2026
  2. Kristoffer HaugsbakkNov 3, 2026
  3. Junio C HamanoNov 3, 2026
  4. Chris TorekNov 3, 2026

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.