Skip to content

Commit 4746291

Browse files
GiteaBotlunny
andauthored
Use refname:strip-2 instead of refname:short when syncing tags (#28797) (#28811)
Backport #28797 by @lunny Fix #28694 Generally, `refname:short` should be equal to `refname:lstrip=2` except `core.warnAmbiguousRefs is used to select the strict abbreviation mode.` ref: https://git-scm.com/docs/git-for-each-ref#Documentation/git-for-each-ref.txt-refname Co-authored-by: Lunny Xiao <[email protected]>
1 parent 022552d commit 4746291

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

modules/git/foreachref/format_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ func TestFormat_Flag(t *testing.T) {
4949
{
5050
name: "multiple fields",
5151

52-
givenFormat: foreachref.NewFormat("refname:short", "objecttype", "objectname"),
52+
givenFormat: foreachref.NewFormat("refname:lstrip=2", "objecttype", "objectname"),
5353

54-
wantFlag: "refname:short %(refname:short)%00objecttype %(objecttype)%00objectname %(objectname)%00%00",
54+
wantFlag: "refname:lstrip=2 %(refname:lstrip=2)%00objecttype %(objecttype)%00objectname %(objectname)%00%00",
5555
},
5656
}
5757

modules/git/repo_tag.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ func (repo *Repository) GetTagWithID(idStr, name string) (*Tag, error) {
112112

113113
// GetTagInfos returns all tag infos of the repository.
114114
func (repo *Repository) GetTagInfos(page, pageSize int) ([]*Tag, int, error) {
115-
forEachRefFmt := foreachref.NewFormat("objecttype", "refname:short", "object", "objectname", "creator", "contents", "contents:signature")
115+
// Generally, refname:short should be equal to refname:lstrip=2 except core.warnAmbiguousRefs is used to select the strict abbreviation mode.
116+
// https://git-scm.com/docs/git-for-each-ref#Documentation/git-for-each-ref.txt-refname
117+
forEachRefFmt := foreachref.NewFormat("objecttype", "refname:lstrip=2", "object", "objectname", "creator", "contents", "contents:signature")
116118

117119
stdoutReader, stdoutWriter := io.Pipe()
118120
defer stdoutReader.Close()
@@ -162,7 +164,7 @@ func (repo *Repository) GetTagInfos(page, pageSize int) ([]*Tag, int, error) {
162164
func parseTagRef(ref map[string]string) (tag *Tag, err error) {
163165
tag = &Tag{
164166
Type: ref["objecttype"],
165-
Name: ref["refname:short"],
167+
Name: ref["refname:lstrip=2"],
166168
}
167169

168170
tag.ID, err = NewIDFromString(ref["objectname"])

modules/git/repo_tag_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ func TestRepository_parseTagRef(t *testing.T) {
209209
name: "lightweight tag",
210210

211211
givenRef: map[string]string{
212-
"objecttype": "commit",
213-
"refname:short": "v1.9.1",
212+
"objecttype": "commit",
213+
"refname:lstrip=2": "v1.9.1",
214214
// object will be empty for lightweight tags
215215
"object": "",
216216
"objectname": "ab23e4b7f4cd0caafe0174c0e7ef6d651ba72889",
@@ -238,8 +238,8 @@ func TestRepository_parseTagRef(t *testing.T) {
238238
name: "annotated tag",
239239

240240
givenRef: map[string]string{
241-
"objecttype": "tag",
242-
"refname:short": "v0.0.1",
241+
"objecttype": "tag",
242+
"refname:lstrip=2": "v0.0.1",
243243
// object will refer to commit hash for annotated tag
244244
"object": "3325fd8a973321fd59455492976c042dde3fd1ca",
245245
"objectname": "8c68a1f06fc59c655b7e3905b159d761e91c53c9",
@@ -267,11 +267,11 @@ func TestRepository_parseTagRef(t *testing.T) {
267267
name: "annotated tag with signature",
268268

269269
givenRef: map[string]string{
270-
"objecttype": "tag",
271-
"refname:short": "v0.0.1",
272-
"object": "3325fd8a973321fd59455492976c042dde3fd1ca",
273-
"objectname": "8c68a1f06fc59c655b7e3905b159d761e91c53c9",
274-
"creator": "Foo Bar <[email protected]> 1565789218 +0300",
270+
"objecttype": "tag",
271+
"refname:lstrip=2": "v0.0.1",
272+
"object": "3325fd8a973321fd59455492976c042dde3fd1ca",
273+
"objectname": "8c68a1f06fc59c655b7e3905b159d761e91c53c9",
274+
"creator": "Foo Bar <[email protected]> 1565789218 +0300",
275275
"contents": `Add changelog of v1.9.1 (#7859)
276276
277277
* add changelog of v1.9.1

0 commit comments

Comments
 (0)