diff --git a/cmd/hook.go b/cmd/hook.go index ca876f02a3156..f5b7962aabd42 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 caa38195559f5..67496b5132aae 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 1071c57bc0753..ee77a003212fc 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 {