@@ -41,6 +41,11 @@ type RefGrouper interface {
4141 Groups () []RefGroup
4242}
4343
44+ type refSeen struct {
45+ git.Reference
46+ groups []RefGroupSymbol
47+ }
48+
4449func ScanRepositoryUsingGraph (
4550 repo * git.Repository , rg RefGrouper , nameStyle NameStyle , progress bool ,
4651) (HistorySize , error ) {
@@ -73,7 +78,7 @@ func ScanRepositoryUsingGraph(
7378 }()
7479
7580 errChan := make (chan error , 1 )
76- var refs []git. Reference
81+ var refsSeen []refSeen
7782 // Feed the references that we want into the stdin of the object
7883 // iterator:
7984 go func () {
@@ -91,11 +96,20 @@ func ScanRepositoryUsingGraph(
9196 break
9297 }
9398
94- walk , _ := rg .Categorize (ref .Refname )
99+ walk , groups := rg .Categorize (ref .Refname )
100+
101+ refsSeen = append (
102+ refsSeen ,
103+ refSeen {
104+ Reference : ref ,
105+ groups : groups ,
106+ },
107+ )
108+
95109 if ! walk {
96110 continue
97111 }
98- refs = append ( refs , ref )
112+
99113 _ , err = bufin .WriteString (ref .OID .String ())
100114 if err != nil {
101115 errChan <- err
@@ -356,9 +370,9 @@ func ScanRepositoryUsingGraph(
356370 }
357371
358372 progressMeter .Start ("Processing references: %d" )
359- for _ , ref := range refs {
373+ for _ , refSeen := range refsSeen {
360374 progressMeter .Inc ()
361- graph .RegisterReference (ref )
375+ graph .RegisterReference (refSeen . Reference )
362376 }
363377 progressMeter .Done ()
364378
0 commit comments