@@ -42,11 +42,6 @@ func main() {
4242 verbose := getopt .BoolLong ("verbose" , 'v' , "verbose mode" )
4343 getopt .Parse ()
4444
45- r , err := git .PlainOpen (* repodir )
46- if err != nil {
47- fatalf ("git: %v: %v\n " , repodir , err )
48- }
49-
5045 args := getopt .Args ()
5146 if len (args ) < 1 {
5247 usagef ("no command specified." )
@@ -59,16 +54,25 @@ func main() {
5954 debugf = func (fmt string , args ... interface {}) {}
6055 }
6156
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
6568 }
6669
6770 switch args [0 ] {
6871 case "update" :
6972 if len (args ) != 1 {
7073 usagef ("command 'update' takes no arguments" )
7174 }
75+ c := setupOrFatal ()
7276 err := c .UpdateBranchRefs ()
7377 if err != nil {
7478 fatalf ("%v\n " , err )
@@ -77,6 +81,7 @@ func main() {
7781 if len (args ) != 2 {
7882 usagef ("command 'cid' takes exactly 1 argument" )
7983 }
84+ c := setupOrFatal ()
8085 refname := args [1 ]
8186 trac , err := c .TracByRef (refname )
8287 if err != nil {
@@ -89,6 +94,7 @@ func main() {
8994 if len (args ) < 2 {
9095 usagef ("command 'dump' takes at least 1 argument" )
9196 }
97+ c := setupOrFatal ()
9298 for _ , refname := range args [1 :] {
9399 _ , err := c .TracByRef (refname )
94100 if err != nil {
0 commit comments