Skip to content

Conversation

@bk2204
Copy link
Member

@bk2204 bk2204 commented Jan 4, 2023

In some cases, users may use core.hooksPath to locate their hooks in a different location. However, right now, our hook and installation instructions mention only .git/hooks.

We can update the instructions without a problem, but we don't want to hard-code the hook path into the hooks themselves because of things like symlinks and moved repository, plus the fact that we can't update a hook automatically unless it's identical minus some whitespace changes. To avoid spuriously failing to update a hook, let's print the right location with the instructions, and just mention core.hookspath and .git/hooks in the message, leaving it to the user to discover.

While we're at it, fix a small portion of the test which wasn't testing what we thought it was in a preparatory commit. The gory details are mentioned in the commit message.

@bk2204 bk2204 changed the title Core hookspath update Make hooks refer to core.hookspath Jan 4, 2023
bk2204 added 2 commits January 5, 2023 17:08
In some cases, we're echoing the old hook contents, but we're not
echoing it into a file, which means we aren't testing what we think we
are: the old hook contents.  Let's actually test that by echoing the
contents of the script to the hook file name so our test works
correctly.

While we're at it, we need to properly escape the dollar sign in `$@`,
since otherwise it gets substituted before we write the script.
In some cases, users may use `core.hooksPath` to locate their hooks in a
different location.  However, right now, our hook and installation
instructions mention only `.git/hooks`.

We can update the instructions without a problem, but we don't want to
hard-code the hook path into the hooks themselves because of things like
symlinks and moved repository, plus the fact that we can't update a hook
automatically unless it's identical minus some whitespace changes.  To
avoid spuriously failing to update a hook, let's print the right
location with the instructions, and just mention `core.hookspath` and
`.git/hooks` in the message, leaving it to the user to discover.

Note that technically, core.hookspath was not implemented until Git
2.9.0.  However, while we still support older versions of Git, no
presently supported version of Ubuntu or Debian offers a version older
than 2.11, so the risk of practical confusion by mentioning this is low.
Nevertheless, make our tests pass by checking for an old Git explicitly.
@bk2204 bk2204 force-pushed the core-hookspath-update branch from ac24d2a to 86a8d73 Compare January 5, 2023 17:08
@bk2204 bk2204 marked this pull request as ready for review January 5, 2023 21:50
@bk2204 bk2204 requested a review from a team as a code owner January 5, 2023 21:50
Copy link
Member

@chrisd8088 chrisd8088 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great, thank you!

@bk2204 bk2204 merged commit 02ac3de into git-lfs:main Jan 6, 2023
@bk2204 bk2204 deleted the core-hookspath-update branch January 6, 2023 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants