From def84840dbce6d725618e1aeab4ca1f665600087 Mon Sep 17 00:00:00 2001 From: zeripath Date: Wed, 14 Aug 2019 10:25:05 +0100 Subject: [PATCH] Attempt to fix hook problem (#7854) --- cmd/hook.go | 1 + modules/private/hook.go | 4 +++- routers/private/hook.go | 19 ++++++++++++++----- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/cmd/hook.go b/cmd/hook.go index ca876f02a..f5b7962aa 100644 --- a/cmd/hook.go +++ b/cmd/hook.go @@ -96,6 +96,7 @@ func runHookPreReceive(c *cli.Context) error { UserID: userID, GitAlternativeObjectDirectories: os.Getenv(private.GitAlternativeObjectDirectories), GitObjectDirectory: os.Getenv(private.GitObjectDirectory), + GitQuarantinePath: os.Getenv(private.GitQuarantinePath), ProtectedBranchID: prID, }) switch statusCode { diff --git a/modules/private/hook.go b/modules/private/hook.go index caa381955..67496b513 100644 --- a/modules/private/hook.go +++ b/modules/private/hook.go @@ -29,12 +29,13 @@ type HookOptions struct { UserName string GitObjectDirectory string GitAlternativeObjectDirectories string + GitQuarantinePath string ProtectedBranchID int64 } // HookPreReceive check whether the provided commits are allowed func HookPreReceive(ownerName, repoName string, opts HookOptions) (int, string) { - reqURL := setting.LocalURL + fmt.Sprintf("api/internal/hook/pre-receive/%s/%s?old=%s&new=%s&ref=%s&userID=%d&gitObjectDirectory=%s&gitAlternativeObjectDirectories=%s&prID=%d", + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/hook/pre-receive/%s/%s?old=%s&new=%s&ref=%s&userID=%d&gitObjectDirectory=%s&gitAlternativeObjectDirectories=%s&gitQuarantinePath=%s&prID=%d", url.PathEscape(ownerName), url.PathEscape(repoName), url.QueryEscape(opts.OldCommitID), @@ -43,6 +44,7 @@ func HookPreReceive(ownerName, repoName string, opts HookOptions) (int, string) opts.UserID, url.QueryEscape(opts.GitObjectDirectory), url.QueryEscape(opts.GitAlternativeObjectDirectories), + url.QueryEscape(opts.GitQuarantinePath), opts.ProtectedBranchID, ) diff --git a/routers/private/hook.go b/routers/private/hook.go index 1071c57bc..ee77a0032 100644 --- a/routers/private/hook.go +++ b/routers/private/hook.go @@ -31,6 +31,7 @@ func HookPreReceive(ctx *macaron.Context) { userID := ctx.QueryInt64("userID") gitObjectDirectory := ctx.QueryTrim("gitObjectDirectory") gitAlternativeObjectDirectories := ctx.QueryTrim("gitAlternativeObjectDirectories") + gitQuarantinePath := ctx.QueryTrim("gitQuarantinePath") prID := ctx.QueryInt64("prID") branchName := strings.TrimPrefix(refFullName, git.BranchPrefix) @@ -63,11 +64,19 @@ func HookPreReceive(ctx *macaron.Context) { // detect force push if git.EmptySHA != oldCommitID { - env := append(os.Environ(), - private.GitAlternativeObjectDirectories+"="+gitAlternativeObjectDirectories, - private.GitObjectDirectory+"="+gitObjectDirectory, - private.GitQuarantinePath+"="+gitObjectDirectory, - ) + env := os.Environ() + if gitAlternativeObjectDirectories != "" { + env = append(env, + private.GitAlternativeObjectDirectories+"="+gitAlternativeObjectDirectories) + } + if gitObjectDirectory != "" { + env = append(env, + private.GitObjectDirectory+"="+gitObjectDirectory) + } + if gitQuarantinePath != "" { + env = append(env, + private.GitQuarantinePath+"="+gitQuarantinePath) + } output, err := git.NewCommand("rev-list", "--max-count=1", oldCommitID, "^"+newCommitID).RunInDirWithEnv(repo.RepoPath(), env) if err != nil {