mirror of
https://github.com/tailscale/tailscale.git
synced 2026-05-05 20:26:47 +02:00
Move HOOK_VERSION into the githook package and export it as githook.HookVersion, so tailscale/corp can reference it via the shared-code bump instead of having to bump HOOK_VERSION by hand. New launcher.sh composes the wanted version from 2 sources: the shared HOOK_VERSION and an optional repo local version, misc/git_hook/HOOK_VERSION, for repo-specific config bumps. Updates tailscale/corp#40381 Change-Id: I7cf16889ba53cb564cc2df7dfd7588748f542c55 Signed-off-by: Fernando Serboncini <fserb@tailscale.com>
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
// Copyright (c) Tailscale Inc & contributors
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
// 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
|
|
// launcher; subsequent HOOK_VERSION bumps trigger self-rebuilds.
|
|
//
|
|
// # Adding your own hooks
|
|
//
|
|
// To add your own hook alongside one we already hook, create an executable
|
|
// file .git/hooks/<hook-name>.local (e.g. pre-commit.local). It runs after
|
|
// the built-in hook succeeds.
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"tailscale.com/misc/git_hook/githook"
|
|
)
|
|
|
|
var pushRemotes = []string{
|
|
"git@github.com:tailscale/tailscale",
|
|
"git@github.com:tailscale/tailscale.git",
|
|
"https://github.com/tailscale/tailscale",
|
|
"https://github.com/tailscale/tailscale.git",
|
|
}
|
|
|
|
// hooks are the hook names this binary handles. Used by install to
|
|
// write per-hook wrappers; must stay in sync with the dispatcher below.
|
|
var hooks = []string{"pre-commit", "commit-msg", "pre-push"}
|
|
|
|
func main() {
|
|
log.SetFlags(0)
|
|
if len(os.Args) < 2 {
|
|
return
|
|
}
|
|
cmd, args := os.Args[1], os.Args[2:]
|
|
|
|
var err error
|
|
switch cmd {
|
|
case "version":
|
|
fmt.Print(strings.TrimSpace(githook.HookVersion) + ":0")
|
|
case "install":
|
|
err = githook.WriteHooks(hooks)
|
|
case "pre-commit":
|
|
err = githook.CheckForbiddenMarkers()
|
|
case "commit-msg":
|
|
err = githook.AddChangeID(args)
|
|
case "pre-push":
|
|
err = githook.CheckGoModReplaces(args, pushRemotes, nil)
|
|
}
|
|
if err != nil {
|
|
log.Fatalf("git-hook: %v: %v", cmd, err)
|
|
}
|
|
if err := githook.RunLocalHook(cmd, args); err != nil {
|
|
log.Fatalf("git-hook: %v", err)
|
|
}
|
|
}
|