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

[PATCH v2 0/3] sample hooks: become hash agnostic

From
Denton Liu <liu.denton@gmail.com>
Date
Sep 23, 2020, 09:38 UTC
Message-ID
<cover.1600853895.git.liu.denton@gmail.com>
In-Reply-To
<cover.1600427894.git.liu.denton@gmail.com>

There are currently two hooks that have hardcoded 40 zeros as the null OID and, thus, are not hash-agnostic. Rewrite these to get the zero OID using

	git hash-object --stdin </dev/null | tr '[0-9a-f]' '0'
so that the zero OID is hash-agnostic.

This was initially done by introducing `git rev-parse --null-oid` to get the zero OID but that seems like overkill. From a cursory search of Github, the only instances of the zero OID being used come from clones of the git.git repository (tests and sample hooks). Since we don't want to introduce an option that no one will use, don't go this route and just do the easiest thing.

If in the future, someone decides that `git rev-parse --zero-oid` is useful, they can also adjust these hooks accordingly.

Changes since v1:
* Don't implement `git rev-parse --null-oid`
Denton Liu (3):
  hooks--pre-push.sample: modernize script
  hooks--pre-push.sample: use hash-agnostic zero OID
  hooks--update.sample: use hash-agnostic zero OID
 templates/hooks--pre-push.sample | 18 +++++++++---------
 templates/hooks--update.sample   |  2 +-
 2 files changed, 10 insertions(+), 10 deletions(-)
Range-diff against v1:
1:  ed1ade7328 < -:  ---------- hooks--pre-push.sample: prefer $() for command substitution
2:  004f2e4c92 < -:  ---------- builtin/rev-parse: learn --null-oid
3:  9d6c2951ab < -:  ---------- hooks--pre-push.sample: use hash-agnostic null OID
-:  ---------- > 1:  95dd0b19ba hooks--pre-push.sample: modernize script
-:  ---------- > 2:  afb460d9fd hooks--pre-push.sample: use hash-agnostic zero OID
4:  42d2829889 ! 3:  784135549f hooks--update.sample: use hash-agnostic null OID
    @@ Metadata
     Author: Denton Liu <liu.denton@gmail.com>
     
      ## Commit message ##
    -    hooks--update.sample: use hash-agnostic null OID
    +    hooks--update.sample: use hash-agnostic zero OID
     
    -    The update sample hook has the null OID hardcoded as 40 zeros. However,
    +    The update sample hook has the zero OID hardcoded as 40 zeros. However,
         with the introduction of SHA-256 support, this assumption no longer
         holds true. Replace the hardcoded $z40 with a call to
    -    `git rev-parse --null-oid` so the sample hook becomes hash-agnostic.
    +
    +            git hash-object --stdin </dev/null | tr '[0-9a-f]' '0'
    +
    +    so the sample hook becomes hash-agnostic.
     
      ## templates/hooks--update.sample ##
     @@ templates/hooks--update.sample: esac
    @@ templates/hooks--update.sample: esac
      # --- Check types
      # if $newrev is 0000...0000, it's a commit to delete a ref.
     -zero="0000000000000000000000000000000000000000"
    -+zero="$(git rev-list --null-oid)"
    ++zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
      if [ "$newrev" = "$zero" ]; then
      	newrev_type=delete
      else
-- 
2.28.0.760.g8d73e04208
Previous: brian m. carlsonNext: Denton Liu
Message 19 of 23 in “sample hooks: become hash agnostic”
  1. 0/4 sample hooks: become hash agnosticDenton Liu, Sep 18, 2020
  2. 2/4 builtin/rev-parse: learn --null-oidDenton Liu, Sep 18, 2020
  3. Taylor BlauSep 18, 2020
  4. Taylor BlauSep 18, 2020
  5. Junio C HamanoSep 18, 2020
  6. Taylor BlauSep 18, 2020
  7. brian m. carlsonSep 18, 2020
  8. Chris TorekSep 20, 2020
  9. brian m. carlsonSep 20, 2020
  10. Taylor BlauSep 20, 2020
  11. Andreas SchwabSep 20, 2020
  12. 1/4 hooks--pre-push.sample: prefer $() for command substitutionDenton Liu, Sep 18, 2020
  13. Eric SunshineSep 18, 2020
  14. 3/4 hooks--pre-push.sample: use hash-agnostic null OIDDenton Liu, Sep 18, 2020
  15. Eric SunshineSep 18, 2020
  16. 4/4 hooks--update.sample: use hash-agnostic null OIDDenton Liu, Sep 18, 2020
  17. Eric SunshineSep 18, 2020
  18. brian m. carlsonSep 18, 2020
  19. 0/3 sample hooks: become hash agnosticDenton Liu, Sep 23, 2020
  20. 1/3 hooks--pre-push.sample: modernize scriptDenton Liu, Sep 23, 2020
  21. 3/3 hooks--update.sample: use hash-agnostic zero OIDDenton Liu, Sep 23, 2020
  22. 2/3 hooks--pre-push.sample: use hash-agnostic zero OIDDenton Liu, Sep 23, 2020
  23. Junio C HamanoSep 23, 2020

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.