@@ -42,11 +42,6 @@ func main() {
42
42
verbose := getopt .BoolLong ("verbose" , 'v' , "verbose mode" )
43
43
getopt .Parse ()
44
44
45
- r , err := git .PlainOpen (* repodir )
46
- if err != nil {
47
- fatalf ("git: %v: %v\n " , repodir , err )
48
- }
49
-
50
45
args := getopt .Args ()
51
46
if len (args ) < 1 {
52
47
usagef ("no command specified." )
@@ -59,16 +54,25 @@ func main() {
59
54
debugf = func (fmt string , args ... interface {}) {}
60
55
}
61
56
62
- c , err := NewCache (* repodir , r , * excludes , * autoexclude , debugf , infof )
63
- if err != nil {
64
- fatalf ("NewCache: %v\n " , err )
57
+ setupOrFatal := func () * Cache {
58
+ r , err := git .PlainOpen (* repodir )
59
+ if err != nil {
60
+ fatalf ("git: %v: %v\n " , * repodir , err )
61
+ }
62
+
63
+ c , err := NewCache (* repodir , r , * excludes , * autoexclude , debugf , infof )
64
+ if err != nil {
65
+ fatalf ("NewCache: %v\n " , err )
66
+ }
67
+ return c
65
68
}
66
69
67
70
switch args [0 ] {
68
71
case "update" :
69
72
if len (args ) != 1 {
70
73
usagef ("command 'update' takes no arguments" )
71
74
}
75
+ c := setupOrFatal ()
72
76
err := c .UpdateBranchRefs ()
73
77
if err != nil {
74
78
fatalf ("%v\n " , err )
@@ -77,6 +81,7 @@ func main() {
77
81
if len (args ) != 2 {
78
82
usagef ("command 'cid' takes exactly 1 argument" )
79
83
}
84
+ c := setupOrFatal ()
80
85
refname := args [1 ]
81
86
trac , err := c .TracByRef (refname )
82
87
if err != nil {
@@ -89,6 +94,7 @@ func main() {
89
94
if len (args ) < 2 {
90
95
usagef ("command 'dump' takes at least 1 argument" )
91
96
}
97
+ c := setupOrFatal ()
92
98
for _ , refname := range args [1 :] {
93
99
_ , err := c .TracByRef (refname )
94
100
if err != nil {
0 commit comments