summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorGiteabot <teabot@gitea.io>2024-01-16 15:33:33 +0800
committerGitHub <noreply@github.com>2024-01-16 07:33:33 +0000
commit4746291b0863eaf9c629c944bd48295ca2f69d2f (patch)
tree8f0631c2b2f958e0185a1e14ad8da3615049bb7d /modules
parent022552d5b6adc792d3cd16df7de6e52cb7b41a72 (diff)
downloadgitea-4746291b0863eaf9c629c944bd48295ca2f69d2f.tar.gz
gitea-4746291b0863eaf9c629c944bd48295ca2f69d2f.zip
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 <xiaolunwen@gmail.com>
Diffstat (limited to 'modules')
-rw-r--r--modules/git/foreachref/format_test.go4
-rw-r--r--modules/git/repo_tag.go6
-rw-r--r--modules/git/repo_tag_test.go18
3 files changed, 15 insertions, 13 deletions
diff --git a/modules/git/foreachref/format_test.go b/modules/git/foreachref/format_test.go
index 392a95a4e6..8ff239323c 100644
--- a/modules/git/foreachref/format_test.go
+++ b/modules/git/foreachref/format_test.go
@@ -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",
},
}
diff --git a/modules/git/repo_tag.go b/modules/git/repo_tag.go
index ae877f0211..b138d0a620 100644
--- a/modules/git/repo_tag.go
+++ b/modules/git/repo_tag.go
@@ -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"])
diff --git a/modules/git/repo_tag_test.go b/modules/git/repo_tag_test.go
index fb6a7cdd1a..11a1c543f7 100644
--- a/modules/git/repo_tag_test.go
+++ b/modules/git/repo_tag_test.go
@@ -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