On 2025-03-31 at 20:19:30, Devste Devste wrote: > device time zone is not UTC0 > > post-commit hook: > if [[ -n "${SKIP_POST_COMMIT+x}" ]] && [[ "$SKIP_POST_COMMIT" -eq 1 ]] > then > exit > fi > > TZ=UTC0 SKIP_POST_COMMIT=1 git commit --amend --reset-author --no-edit > --no-verify --no-post-rewrite --allow-empty --quiet > > --- > > Run: > git commit -m "foo" > git show -s --format="Commit: %h%nAuthor: %an%nAuthor Date: > %ad%nCommitter: %cn%nCommitter Date: %cd%nMessage: %s%n" HEAD > > Expected that both Author Date: and Committer Date: show +0000 as > timezone. Only committer date shows +0000, while author date shows > time zone of device. > > When manually running the post-commit code (TZ=UTC0 SKIP_POST_COMMIT=1 > ...) it correctly resets the author date to +0000 too > > When manually setting the date using --date="$(date +%s) +0000" > instead of --reset-author it also works correctly in post-commit > hook. I can reproduce this, except that I had to use `TZ=America/Toronto` since my system is in UTC. A quick look at the code led me to a guess that ended up correct. The `git commit` code sets `GIT_AUTHOR_NAME`, `GIT_AUTHOR_EMAIL`, and `GIT_AUTHOR_DATE`. The latter contains a timezone identifier. As a consequence, when the hook is invoked, those values are set in the environment, and the subsequent `git commit` in the hook uses them. You can see this by placing something like `env >/tmp/foo` in your hook and then reading the output. I will say that this is definitely not the intended use of the post-commit hook and I am very much not surprised that this doesn't work as you intended. You could certainly fix it by unsetting those environment variables, but I'd encourage you to adopt a different approach, such as by using an alias that sets `TZ=UTC0` to commit. That will be more likely to work in the future and will definitely be less brittle. For instance, your call to `git commit` will still invoke the `prepare-commit-msg` (and possibly `commit-msg`) hook, which might result in unexpected changes to your message or even a failure of the second commit. -- brian m. carlson (they/them) Toronto, Ontario, CA
Attachment:
signature.asc
Description: PGP signature