Diff
1diff --git a/internal/config/config.go b/internal/config/config.go
2index 972fe1e4cc2efadea699d971c0bcb96df04828d2..10c9ed3607f220c601d8f585c5df1aeff94733d2 100644
3--- a/internal/config/config.go
4+++ b/internal/config/config.go
5@@ -2,6 +2,7 @@ package config
6
7 import (
8 "bytes"
9+ "log"
10 "strings"
11 "sync"
12 "text/template"
13@@ -130,6 +131,10 @@ func (cfg *Config) Reload() error {
14 }
15 for _, r := range cfg.Source.AllRepos() {
16 name := r.Name()
17+ err = r.UpdateServerInfo()
18+ if err != nil {
19+ log.Printf("error updating server info for %s: %s", name, err)
20+ }
21 pat := "README*"
22 rp := ""
23 for _, rr := range cfg.Repos {
24@@ -186,7 +191,7 @@ func (cfg *Config) createDefaultConfigRepo(yaml string) error {
25 if err != nil {
26 return err
27 }
28- r, err := rs.GetRepo(cn)
29+ _, err = rs.GetRepo(cn)
30 if err == git.ErrMissingRepo {
31 cr, err := rs.InitRepo(cn, true)
32 if err != nil {
33@@ -234,12 +239,6 @@ func (cfg *Config) createDefaultConfigRepo(yaml string) error {
34 if err != nil {
35 return err
36 }
37- cmd := exec.Command("git", "update-server-info")
38- cmd.Dir = filepath.Join(rs.Path, cn)
39- err = cmd.Run()
40- if err != nil {
41- return err
42- }
43 } else if err != nil {
44 return err
45 }
46diff --git a/internal/config/git.go b/internal/config/git.go
47index e7f39248e5e64e9cec126e44865db02a250eb07c..9e6c8954018e2d889b1ce961fc3f854e6e73cb94 100644
48--- a/internal/config/git.go
49+++ b/internal/config/git.go
50@@ -18,6 +18,15 @@ func (cfg *Config) Push(repo string, pk ssh.PublicKey) {
51 if cfg.Cfg.Callbacks != nil {
52 cfg.Cfg.Callbacks.Push(repo)
53 }
54+ r, err := cfg.Source.GetRepo(repo)
55+ if err != nil {
56+ log.Printf("error getting repo after push: %s", err)
57+ return
58+ }
59+ err = r.UpdateServerInfo()
60+ if err != nil {
61+ log.Printf("error updating server info after push: %s", err)
62+ }
63 }()
64 }
65
66diff --git a/internal/git/git.go b/internal/git/git.go
67index 5008477728b9e31f3d636212ca7879bc782910e4..1762d57d7dec95520b44d1871c4c611c7dd56173 100644
68--- a/internal/git/git.go
69+++ b/internal/git/git.go
70@@ -5,6 +5,7 @@ import (
71 "errors"
72 "log"
73 "os"
74+ "os/exec"
75 "path/filepath"
76 "sort"
77 "sync"
78@@ -385,3 +386,9 @@ func (r *Repo) LatestTree(path string) (*object.Tree, error) {
79 return r.Tree(r.head, path)
80 }
81
82+// UpdateServerInfo updates the server info for the repository.
83+func (r *Repo) UpdateServerInfo() error {
84+ cmd := exec.Command("git", "update-server-info")
85+ cmd.Dir = r.path
86+ return cmd.Run()
87+}