...
1
2
3
4 package git
5
6 import (
7 "sigs.k8s.io/kustomize/kyaml/filesys"
8 )
9
10
11 type Cloner func(repoSpec *RepoSpec) error
12
13
14
15
16 func ClonerUsingGitExec(repoSpec *RepoSpec) error {
17 r, err := newCmdRunner(repoSpec.Timeout)
18 if err != nil {
19 return err
20 }
21 repoSpec.Dir = r.dir
22 if err = r.run("init"); err != nil {
23 return err
24 }
25
26 if err = r.run("remote", "add", "origin", repoSpec.CloneSpec()); err != nil {
27 return err
28 }
29 ref := "HEAD"
30 if repoSpec.Ref != "" {
31 ref = repoSpec.Ref
32 }
33
34
35 if err = r.run("fetch", "--depth=1", repoSpec.CloneSpec(), ref); err != nil {
36 return err
37 }
38 if err = r.run("checkout", "FETCH_HEAD"); err != nil {
39 return err
40 }
41 if repoSpec.Submodules {
42 return r.run("submodule", "update", "--init", "--recursive")
43 }
44 return nil
45 }
46
47
48
49
50
51 func DoNothingCloner(dir filesys.ConfirmedDir) Cloner {
52 return func(rs *RepoSpec) error {
53 rs.Dir = dir
54 return nil
55 }
56 }
57
View as plain text