diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-03-01 23:01:03 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-01 23:01:03 +0800 |
commit | cfdc62e7fa4acb562b67eaa790fe2b6049ee8acb (patch) | |
tree | f1f1b56e853126ab9069f5316c6a44d640cf9bc8 /cmd/hook.go | |
parent | 9cb08a3cf5b3e67402edb2a10ff63df2258bc731 (diff) | |
download | gitea-cfdc62e7fa4acb562b67eaa790fe2b6049ee8acb.tar.gz gitea-cfdc62e7fa4acb562b67eaa790fe2b6049ee8acb.zip |
Comment force push detect to fix bug #1073 (#1077)
* umcomment force push detect to fix bug #1073
* fix #1086
* handle global config set and fix #1086
Diffstat (limited to 'cmd/hook.go')
-rw-r--r-- | cmd/hook.go | 59 |
1 files changed, 41 insertions, 18 deletions
diff --git a/cmd/hook.go b/cmd/hook.go index 8f7f8c3c47..d120f21b20 100644 --- a/cmd/hook.go +++ b/cmd/hook.go @@ -69,6 +69,12 @@ func runHookPreReceive(c *cli.Context) error { return nil } + if c.IsSet("config") { + setting.CustomConf = c.String("config") + } else if c.GlobalIsSet("config") { + setting.CustomConf = c.GlobalString("config") + } + if err := setup("hooks/pre-receive.log"); err != nil { fail("Hook pre-receive init failed", fmt.Sprintf("setup: %v", err)) } @@ -76,9 +82,9 @@ func runHookPreReceive(c *cli.Context) error { // the environment setted on serv command repoID, _ := strconv.ParseInt(os.Getenv(models.ProtectedBranchRepoID), 10, 64) isWiki := (os.Getenv(models.EnvRepoIsWiki) == "true") - username := os.Getenv(models.EnvRepoUsername) - reponame := os.Getenv(models.EnvRepoName) - repoPath := models.RepoPath(username, reponame) + //username := os.Getenv(models.EnvRepoUsername) + //reponame := os.Getenv(models.EnvRepoName) + //repoPath := models.RepoPath(username, reponame) buf := bytes.NewBuffer(nil) scanner := bufio.NewScanner(os.Stdin) @@ -96,10 +102,22 @@ func runHookPreReceive(c *cli.Context) error { continue } - oldCommitID := string(fields[0]) + //oldCommitID := string(fields[0]) newCommitID := string(fields[1]) refFullName := string(fields[2]) + // FIXME: when we add feature to protected branch to deny force push, then uncomment below + /*var isForce bool + // detect force push + if git.EmptySHA != oldCommitID { + output, err := git.NewCommand("rev-list", oldCommitID, "^"+newCommitID).RunInDir(repoPath) + if err != nil { + fail("Internal error", "Fail to detect force push: %v", err) + } else if len(output) > 0 { + isForce = true + } + }*/ + branchName := strings.TrimPrefix(refFullName, git.BranchPrefix) protectBranch, err := models.GetProtectedBranchBy(repoID, branchName) if err != nil { @@ -107,20 +125,13 @@ func runHookPreReceive(c *cli.Context) error { } if protectBranch != nil { - fail(fmt.Sprintf("protected branch %s can not be pushed to", branchName), "") - } - - // check and deletion - if newCommitID == git.EmptySHA { - fail(fmt.Sprintf("Branch '%s' is protected from deletion", branchName), "") - } - - // Check force push - output, err := git.NewCommand("rev-list", oldCommitID, "^"+newCommitID).RunInDir(repoPath) - if err != nil { - fail("Internal error", "Fail to detect force push: %v", err) - } else if len(output) > 0 { - fail(fmt.Sprintf("Branch '%s' is protected from force push", branchName), "") + // check and deletion + if newCommitID == git.EmptySHA { + fail(fmt.Sprintf("branch %s is protected from deletion", branchName), "") + } else { + fail(fmt.Sprintf("protected branch %s can not be pushed to", branchName), "") + //fail(fmt.Sprintf("branch %s is protected from force push", branchName), "") + } } } @@ -132,6 +143,12 @@ func runHookUpdate(c *cli.Context) error { return nil } + if c.IsSet("config") { + setting.CustomConf = c.String("config") + } else if c.GlobalIsSet("config") { + setting.CustomConf = c.GlobalString("config") + } + if err := setup("hooks/update.log"); err != nil { fail("Hook update init failed", fmt.Sprintf("setup: %v", err)) } @@ -144,6 +161,12 @@ func runHookPostReceive(c *cli.Context) error { return nil } + if c.IsSet("config") { + setting.CustomConf = c.String("config") + } else if c.GlobalIsSet("config") { + setting.CustomConf = c.GlobalString("config") + } + if err := setup("hooks/post-receive.log"); err != nil { fail("Hook post-receive init failed", fmt.Sprintf("setup: %v", err)) } |