-
Notifications
You must be signed in to change notification settings - Fork 5k
/
gitwrapper.go
55 lines (43 loc) · 1.45 KB
/
gitwrapper.go
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
52
53
54
55
package metrics
import "github.com/argoproj/argo-cd/util/git"
type gitClientWrapper struct {
repo string
client git.Client
metricsServer *MetricsServer
}
func WrapGitClient(repo string, metricsServer *MetricsServer, client git.Client) git.Client {
return &gitClientWrapper{repo: repo, client: client, metricsServer: metricsServer}
}
func (w *gitClientWrapper) Fetch() error {
w.metricsServer.IncGitRequest(w.repo, GitRequestTypeFetch)
return w.client.Fetch()
}
func (w *gitClientWrapper) LsRemote(revision string) (string, error) {
sha, err := w.client.LsRemote(revision)
if sha != revision {
// This is true only if specified revision is a tag, branch or HEAD and client had to use 'ls-remote'
w.metricsServer.IncGitRequest(w.repo, GitRequestTypeLsRemote)
}
return sha, err
}
func (w *gitClientWrapper) LsFiles(path string) ([]string, error) {
return w.client.LsFiles(path)
}
func (w *gitClientWrapper) LsLargeFiles() ([]string, error) {
return w.client.LsLargeFiles()
}
func (w *gitClientWrapper) Checkout(revision string) error {
return w.client.Checkout(revision)
}
func (w *gitClientWrapper) CommitSHA() (string, error) {
return w.client.CommitSHA()
}
func (w *gitClientWrapper) Root() string {
return w.client.Root()
}
func (w *gitClientWrapper) Init() error {
return w.client.Init()
}
func (w *gitClientWrapper) RevisionMetadata(revision string) (*git.RevisionMetadata, error) {
return w.client.RevisionMetadata(revision)
}