From 09567524700e631b1a9b371ebbc577c3b2108091 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Thu, 20 Mar 2025 18:04:36 +0300 Subject: [PATCH] fix(hooks): log invalid hook input instead of returning error to the client This change logs invalid hook input instead of returning an error to the client in git hooks. This is done to prevent the client from receiving an error message when the hook input is invalid. --- cmd/soft/hook/hook.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cmd/soft/hook/hook.go b/cmd/soft/hook/hook.go index b12938af10e66b8741347d3f9e69a3908e7e3daa..e9b3f1f5c1ff6c3ebf40cbf3f5d5160c53ed8953 100644 --- a/cmd/soft/hook/hook.go +++ b/cmd/soft/hook/hook.go @@ -65,6 +65,8 @@ var ( // This is set in the server before invoking git-receive-pack/git-upload-pack repoName := os.Getenv("SOFT_SERVE_REPO_NAME") + logger := log.FromContext(ctx).With("repo", repoName) + stdin := cmd.InOrStdin() stdout := cmd.OutOrStdout() stderr := cmd.ErrOrStderr() @@ -83,7 +85,8 @@ var ( buf.WriteByte('\n') fields := strings.Fields(scanner.Text()) if len(fields) != 3 { - return fmt.Errorf("invalid hook input: %s", scanner.Text()) + logger.Error(fmt.Sprintf("invalid %s hook input", cmdName), "input", scanner.Text()) + continue } opts = append(opts, hooks.HookArg{ OldSha: fields[0], @@ -100,7 +103,8 @@ var ( } case hooks.UpdateHook: if len(args) != 3 { - return fmt.Errorf("invalid update hook input: %s", args) + logger.Error("invalid update hook input", "input", args) + break } hks.Update(ctx, stdout, stderr, repoName, hooks.HookArg{ @@ -116,7 +120,7 @@ var ( if stat, err := os.Stat(customHookPath); err == nil && !stat.IsDir() && stat.Mode()&0o111 != 0 { // If the custom hook is executable, run it if err := runCommand(ctx, &buf, stdout, stderr, customHookPath, args...); err != nil { - return fmt.Errorf("failed to run custom hook: %w", err) + logger.Error("failed to run custom hook", "err", err) } }