misc: rename install-git-hooks.go to add-git-hooks.go (#20144)

`go run` builds a manifest-less .exe, so Windows applies installer-
detection heuristics and requests admin privileges to programs that
contains "install", "setup", or "update". Rename to dodge that.

Updates #20133

Change-Id: I144d3fcb076d7a02e4a3eb9fd079ee022a035c76

Signed-off-by: Fernando Serboncini <fserb@tailscale.com>
This commit is contained in:
Fernando Serboncini 2026-06-15 12:08:19 -04:00 committed by GitHub
parent 449233dd61
commit 4d9d8cfaa8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 9 additions and 9 deletions

View File

@ -74,7 +74,7 @@ For the body (the rest of the description):
- blank line after the subject (first) line
- the text should be wrapped to ~76 characters (to appease git viewing tools, mainly), unless you really need longer lines (e.g. for ASCII art, tables, or long links)
- there must be a `Fixes` or `Updates` line for all non-cleanup commits linking to a tracking bug. This goes after the body with a blank newline separating the two. A pull request may be referenced rather than a tracking bug (using the same format, e.g. `Updates #12345`), though a bug is generally preferred. [Cleanup commits](#is-it-a-cleanup) can use `Updates #cleanup` instead of an issue.
- `Change-Id` lines should be included in commits. You can configure Git to do this for you by running `./tool/go run misc/install-git-hooks.go` from the root of the repo. This was originally a Gerrit thing and we don't use Gerrit, but it lets tooling track commits as they're cherry-picked between branches. Also, tools like [git-cleanup](https://github.com/bradfitz/gitutil) use it to clean up your old local branches once they're merged upstream.
- `Change-Id` lines should be included in commits. You can configure Git to do this for you by running `./tool/go run misc/add-git-hooks.go` from the root of the repo. This was originally a Gerrit thing and we don't use Gerrit, but it lets tooling track commits as they're cherry-picked between branches. Also, tools like [git-cleanup](https://github.com/bradfitz/gitutil) use it to clean up your old local branches once they're merged upstream.
- we don't use Markdown in commit messages. (Accidental Markdown like bulleted lists or even headings is fine, but not links)
- we require `Signed-off-by` lines in public repos (such as `tailscale/tailscale`). Add them using `git commit --signoff` or `git commit -s` for short. You can use them in private repos but do not have to.
- when moving code between repos, include the repository name, and git hash that it was moved from/to, so it is easier to trace history/blame.

View File

@ -3,7 +3,7 @@
//go:build ignore
// The install-git-hooks program installs git hooks by delegating to
// The add-git-hooks program installs git hooks by delegating to
// githook.Install. See that function's doc for what it does.
package main
@ -16,6 +16,6 @@
func main() {
log.SetFlags(0)
if err := githook.Install(); err != nil {
log.Fatalf("install-git-hooks: %v", err)
log.Fatalf("add-git-hooks: %v", err)
}
}

View File

@ -9,7 +9,7 @@ The shared logic lives in the `githook/` package and is also imported by
From the repo root:
./tool/go run ./misc/install-git-hooks.go
./tool/go run ./misc/add-git-hooks.go
The script auto-updates in the future.

View File

@ -3,7 +3,7 @@
// The git-hook command is Tailscale's git hook binary, built and
// installed under .git/hooks/ts-git-hook-bin by the launcher at
// .git/hooks/ts-git-hook. misc/install-git-hooks.go writes the initial
// .git/hooks/ts-git-hook. misc/add-git-hooks.go writes the initial
// launcher; subsequent HOOK_VERSION bumps trigger self-rebuilds.
//
// # Adding your own hooks

View File

@ -15,7 +15,7 @@
// Install writes the launcher to .git/hooks/ts-git-hook and runs it
// once with "version", bootstrapping the binary build and per-hook
// wrappers. Called from each repo's misc/install-git-hooks.go.
// wrappers. Called from each repo's misc/add-git-hooks.go.
func Install() error {
hookDir, err := findHookDir()
if err != nil {
@ -74,7 +74,7 @@ func WriteHooks(hooks []string) error {
switch {
case want[name] && !mine:
return fmt.Errorf("%s exists and is not a ts-git-hook wrapper; "+
"move your hook to %s.local (it will be chained after the wrapper) or delete it, then re-run: ./tool/go run ./misc/install-git-hooks.go",
"move your hook to %s.local (it will be chained after the wrapper) or delete it, then re-run: ./tool/go run ./misc/add-git-hooks.go",
path, name)
case !want[name] && mine:
// Stale wrapper from a prior version (e.g. a hook we used

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
# ts-git-hook launcher (installed at .git/hooks/ts-git-hook).
#
# Written by misc/install-git-hooks.go from the canonical copy embedded
# Written by misc/add-git-hooks.go from the canonical copy embedded
# in tailscale.com/misc/git_hook/githook. On every invocation it:
#
# 1. Compares the binary's reported version against the shared
@ -41,7 +41,7 @@ HAVE="$("$BINARY" version 2>/dev/null || echo none)"
if [ "$WANT" != "$HAVE" ]; then
echo "git-hook: rebuilding ts-git-hook-bin..." >&2
(cd "$REPO_ROOT" && GOWORK=off "$GO" build -o "$BINARY" ./misc/git_hook) || {
echo "git-hook: rebuild failed, run: ./tool/go run ./misc/install-git-hooks.go" >&2
echo "git-hook: rebuild failed, run: ./tool/go run ./misc/add-git-hooks.go" >&2
exit 1
}
"$BINARY" install