Permalink
Browse files

cmd/hook: fix custom hook cannot be executed on Windows (gogs#4255)

This solution still requires the server installed git-bash.
  • Loading branch information...
Unknwon committed Nov 19, 2017
1 parent f48921c commit 9362b9fdfe41788bc600a5bc13f2df10ec2222e6
Showing with 19 additions and 4 deletions.
  1. +19 −4 cmd/hook.go
View
@@ -127,7 +127,7 @@ func runHookPreReceive(c *cli.Context) error {
}
// Check force push
output, err := git.NewCommand("rev-list", oldCommitID, "^"+newCommitID).
output, err := git.NewCommand("rev-list", "--max-count=1", oldCommitID, "^"+newCommitID).
RunInDir(models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME)))
if err != nil {
fail("Internal error", "Fail to detect force push: %v", err)
@@ -141,7 +141,12 @@ func runHookPreReceive(c *cli.Context) error {
return nil
}
hookCmd := exec.Command(customHooksPath)
var hookCmd *exec.Cmd
if setting.IsWindows {
hookCmd = exec.Command("bash.exe", "custom_hooks/pre-receive")
} else {
hookCmd = exec.Command(customHooksPath)
}
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
hookCmd.Stdout = os.Stdout
hookCmd.Stdin = buf
@@ -170,7 +175,12 @@ func runHookUpdate(c *cli.Context) error {
return nil
}
hookCmd := exec.Command(customHooksPath, args...)
var hookCmd *exec.Cmd
if setting.IsWindows {
hookCmd = exec.Command("bash.exe", append([]string{"custom_hooks/update"}, args...)...)
} else {
hookCmd = exec.Command(customHooksPath, args...)
}
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
hookCmd.Stdout = os.Stdout
hookCmd.Stdin = os.Stdin
@@ -250,7 +260,12 @@ func runHookPostReceive(c *cli.Context) error {
return nil
}
hookCmd := exec.Command(customHooksPath)
var hookCmd *exec.Cmd
if setting.IsWindows {
hookCmd = exec.Command("bash.exe", "custom_hooks/post-receive")
} else {
hookCmd = exec.Command(customHooksPath)
}
hookCmd.Dir = models.RepoPath(os.Getenv(http.ENV_REPO_OWNER_NAME), os.Getenv(http.ENV_REPO_NAME))
hookCmd.Stdout = os.Stdout
hookCmd.Stdin = buf

0 comments on commit 9362b9f

Please sign in to comment.