File tree Expand file tree Collapse file tree 4 files changed +35
-4
lines changed
codeql-action-initial.git
codeql-action-modified.git Expand file tree Collapse file tree 4 files changed +35
-4
lines changed Original file line number Diff line number Diff line change 9
9
"net/http"
10
10
"os"
11
11
"regexp"
12
+ "strings"
12
13
13
14
log "github.com/sirupsen/logrus"
14
15
@@ -90,6 +91,35 @@ func (pullService *pullService) pullGit(fresh bool) error {
90
91
}
91
92
}
92
93
94
+ remote , err := localRepository .Remote (git .DefaultRemoteName )
95
+ if err != nil {
96
+ return errors .Wrap (err , "Error getting remote." )
97
+ }
98
+ remoteReferences , err := remote .List (& git.ListOptions {Auth : credentials })
99
+ if err != nil {
100
+ return errors .Wrap (err , "Error listing remote references." )
101
+ }
102
+ localReferences , err := localRepository .References ()
103
+ if err != nil {
104
+ return errors .Wrap (err , "Error listing local references." )
105
+ }
106
+ localReferences .ForEach (func (localReference * plumbing.Reference ) error {
107
+ if ! strings .HasPrefix (localReference .Name ().String (), "refs/" ) {
108
+ return nil
109
+ }
110
+ for _ , remoteReference := range remoteReferences {
111
+ remoteReferenceName := strings .TrimPrefix (remoteReference .Name ().String (), "refs/" )
112
+ if cachedirectory .CacheReferencePrefix + remoteReferenceName == localReference .Name ().String () {
113
+ return nil
114
+ }
115
+ }
116
+ err := localRepository .Storer .RemoveReference (localReference .Name ())
117
+ if err != nil {
118
+ return errors .Wrap (err , "Error pruning reference." )
119
+ }
120
+ return nil
121
+ })
122
+
93
123
err = localRepository .FetchContext (pullService .ctx , & git.FetchOptions {
94
124
RemoteName : git .DefaultRemoteName ,
95
125
RefSpecs : []config.RefSpec {
Original file line number Diff line number Diff line change @@ -94,6 +94,7 @@ func TestPullGitFresh(t *testing.T) {
94
94
// It is expected that we still pull these even though they don't match the expected pattern. We just ignore them later on.
95
95
"bd82b85707bc13904e3526517677039d4da4a9bb refs/remotes/origin/heads/very-ignored-branch" ,
96
96
"bd82b85707bc13904e3526517677039d4da4a9bb refs/remotes/origin/tags/an-ignored-tag-too" ,
97
+ "26936381e619a01122ea33993e3cebc474496805 refs/remotes/origin/heads/a-ref-that-will-need-pruning" ,
97
98
})
98
99
}
99
100
@@ -125,11 +126,9 @@ func TestPullGitNotFreshWithChanges(t *testing.T) {
125
126
"b9f01aa2c50f49898d4c7845a66be8824499fe9d refs/remotes/origin/heads/main" ,
126
127
"26936381e619a01122ea33993e3cebc474496805 refs/remotes/origin/heads/v1" ,
127
128
"33d42021633d74bcd0bf9c95e3d3159131a5faa7 refs/remotes/origin/heads/v3" , // v3 was force-pushed, and should have been force-pulled too.
128
- "26936381e619a01122ea33993e3cebc474496805 refs/remotes/origin/tags/v2" ,
129
129
"42d077b4730d1ba413f7bb7e0fa7c98653fb0c78 refs/remotes/origin/heads/v4" , // v4 is a new branch.
130
- // We deleted these, but we don't currently do any pruning.
131
- "bd82b85707bc13904e3526517677039d4da4a9bb refs/remotes/origin/heads/very-ignored-branch" ,
132
130
"bd82b85707bc13904e3526517677039d4da4a9bb refs/remotes/origin/tags/an-ignored-tag-too" ,
131
+ "26936381e619a01122ea33993e3cebc474496805 refs/remotes/origin/heads/a-ref-that-will-need-pruning/because-it-now-has-this-extra-bit" ,
133
132
})
134
133
}
135
134
Original file line number Diff line number Diff line change 1
1
# pack-refs with: peeled fully-peeled sorted
2
+ 26936381e619a01122ea33993e3cebc474496805 refs/heads/a-ref-that-will-need-pruning
2
3
b9f01aa2c50f49898d4c7845a66be8824499fe9d refs/heads/main
3
4
26936381e619a01122ea33993e3cebc474496805 refs/heads/v1
4
5
e529a54fad10a936308b2220e05f7f00757f8e7c refs/heads/v3
Original file line number Diff line number Diff line change 1
1
# pack-refs with: peeled fully-peeled sorted
2
+ 26936381e619a01122ea33993e3cebc474496805 refs/heads/a-ref-that-will-need-pruning/because-it-now-has-this-extra-bit
2
3
b9f01aa2c50f49898d4c7845a66be8824499fe9d refs/heads/main
3
4
26936381e619a01122ea33993e3cebc474496805 refs/heads/v1
4
5
33d42021633d74bcd0bf9c95e3d3159131a5faa7 refs/heads/v3
5
6
42d077b4730d1ba413f7bb7e0fa7c98653fb0c78 refs/heads/v4
6
- 26936381e619a01122ea33993e3cebc474496805 refs/tags/v2
7
+ bd82b85707bc13904e3526517677039d4da4a9bb refs/tags/an-ignored-tag-too
You can’t perform that action at this time.
0 commit comments