mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Attempt to fix hook problem (#7856)
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user