1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
diff --git a/cmd/ugitd/main.go b/cmd/ugitd/main.go
index 6dfa3d9dfefc302d856bf424042d2e9d6444b1e5..4e330289478424e28bee7d5224f560b06ba919a4 100644
--- a/cmd/ugitd/main.go
+++ b/cmd/ugitd/main.go
@@ -23,9 +23,11 @@ "go.jolheiser.com/ugit/internal/ssh"
)
func main() {
- if len(os.Args) > 1 && os.Args[1] == "pre-receive-hook" {
- preReceive()
- return
+ if len(os.Args) > 1 {
+ if os.Args[1] == "pre-receive-hook" {
+ preReceive()
+ return
+ }
}
args, err := parseArgs(os.Args[1:])
@@ -133,7 +135,19 @@ fp := filepath.Join(repoDir, "hooks")
if err := os.MkdirAll(fp, os.ModePerm); err != nil {
return err
}
- fp = filepath.Join(fp, "pre-receive")
+
+ if err := hookFS(fp, "pre-receive", bin); err != nil {
+ return err
+ }
+ if err := hookFS(fp, "post-receive", ""); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func hookFS(hookPath, hookName, bin string) error {
+ fp := filepath.Join(hookPath, hookName)
if err := os.MkdirAll(fp+".d", os.ModePerm); err != nil {
return err
@@ -144,7 +158,9 @@ if err != nil {
return err
}
fmt.Fprintln(fi, "#!/usr/bin/env bash")
- fmt.Fprintf(fi, "%s pre-receive-hook\n", bin)
+ if bin != "" {
+ fmt.Fprintf(fi, "%s %s-hook\n", bin, hookName)
+ }
fmt.Fprintf(fi, `for hook in %s.d/*; do
test -x "${hook}" && test -f "${hook}" || continue
"${hook}"
|