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 <xiaolunwen@gmail.com>tags/v1.21.4
@@ -49,9 +49,9 @@ func TestFormat_Flag(t *testing.T) { | |||
{ | |||
name: "multiple fields", | |||
givenFormat: foreachref.NewFormat("refname:short", "objecttype", "objectname"), | |||
givenFormat: foreachref.NewFormat("refname:lstrip=2", "objecttype", "objectname"), | |||
wantFlag: "refname:short %(refname:short)%00objecttype %(objecttype)%00objectname %(objectname)%00%00", | |||
wantFlag: "refname:lstrip=2 %(refname:lstrip=2)%00objecttype %(objecttype)%00objectname %(objectname)%00%00", | |||
}, | |||
} | |||
@@ -112,7 +112,9 @@ func (repo *Repository) GetTagWithID(idStr, name string) (*Tag, error) { | |||
// GetTagInfos returns all tag infos of the repository. | |||
func (repo *Repository) GetTagInfos(page, pageSize int) ([]*Tag, int, error) { | |||
forEachRefFmt := foreachref.NewFormat("objecttype", "refname:short", "object", "objectname", "creator", "contents", "contents:signature") | |||
// Generally, refname:short should be equal to refname:lstrip=2 except core.warnAmbiguousRefs is used to select the strict abbreviation mode. | |||
// https://git-scm.com/docs/git-for-each-ref#Documentation/git-for-each-ref.txt-refname | |||
forEachRefFmt := foreachref.NewFormat("objecttype", "refname:lstrip=2", "object", "objectname", "creator", "contents", "contents:signature") | |||
stdoutReader, stdoutWriter := io.Pipe() | |||
defer stdoutReader.Close() | |||
@@ -162,7 +164,7 @@ func (repo *Repository) GetTagInfos(page, pageSize int) ([]*Tag, int, error) { | |||
func parseTagRef(ref map[string]string) (tag *Tag, err error) { | |||
tag = &Tag{ | |||
Type: ref["objecttype"], | |||
Name: ref["refname:short"], | |||
Name: ref["refname:lstrip=2"], | |||
} | |||
tag.ID, err = NewIDFromString(ref["objectname"]) |
@@ -209,8 +209,8 @@ func TestRepository_parseTagRef(t *testing.T) { | |||
name: "lightweight tag", | |||
givenRef: map[string]string{ | |||
"objecttype": "commit", | |||
"refname:short": "v1.9.1", | |||
"objecttype": "commit", | |||
"refname:lstrip=2": "v1.9.1", | |||
// object will be empty for lightweight tags | |||
"object": "", | |||
"objectname": "ab23e4b7f4cd0caafe0174c0e7ef6d651ba72889", | |||
@@ -238,8 +238,8 @@ func TestRepository_parseTagRef(t *testing.T) { | |||
name: "annotated tag", | |||
givenRef: map[string]string{ | |||
"objecttype": "tag", | |||
"refname:short": "v0.0.1", | |||
"objecttype": "tag", | |||
"refname:lstrip=2": "v0.0.1", | |||
// object will refer to commit hash for annotated tag | |||
"object": "3325fd8a973321fd59455492976c042dde3fd1ca", | |||
"objectname": "8c68a1f06fc59c655b7e3905b159d761e91c53c9", | |||
@@ -267,11 +267,11 @@ func TestRepository_parseTagRef(t *testing.T) { | |||
name: "annotated tag with signature", | |||
givenRef: map[string]string{ | |||
"objecttype": "tag", | |||
"refname:short": "v0.0.1", | |||
"object": "3325fd8a973321fd59455492976c042dde3fd1ca", | |||
"objectname": "8c68a1f06fc59c655b7e3905b159d761e91c53c9", | |||
"creator": "Foo Bar <foo@bar.com> 1565789218 +0300", | |||
"objecttype": "tag", | |||
"refname:lstrip=2": "v0.0.1", | |||
"object": "3325fd8a973321fd59455492976c042dde3fd1ca", | |||
"objectname": "8c68a1f06fc59c655b7e3905b159d761e91c53c9", | |||
"creator": "Foo Bar <foo@bar.com> 1565789218 +0300", | |||
"contents": `Add changelog of v1.9.1 (#7859) | |||
* add changelog of v1.9.1 |