diff --git a/build.go b/build.go
index b843465dc..aa5614134 100644
--- a/build.go
+++ b/build.go
@@ -2,7 +2,8 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
-//+build vendor
+//go:build vendor
+// +build vendor
package main
diff --git a/build/generate-bindata.go b/build/generate-bindata.go
index fa1669fcf..efd172f77 100644
--- a/build/generate-bindata.go
+++ b/build/generate-bindata.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build ignore
// +build ignore
package main
diff --git a/build/generate-emoji.go b/build/generate-emoji.go
index c97d865bd..da4e12373 100644
--- a/build/generate-emoji.go
+++ b/build/generate-emoji.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build ignore
// +build ignore
package main
diff --git a/build/generate-gitignores.go b/build/generate-gitignores.go
index 846bb0763..d0b972e80 100644
--- a/build/generate-gitignores.go
+++ b/build/generate-gitignores.go
@@ -1,3 +1,4 @@
+//go:build ignore
// +build ignore
package main
diff --git a/build/generate-licenses.go b/build/generate-licenses.go
index 9dd13adf9..4009a0351 100644
--- a/build/generate-licenses.go
+++ b/build/generate-licenses.go
@@ -1,3 +1,4 @@
+//go:build ignore
// +build ignore
package main
diff --git a/build/gocovmerge.go b/build/gocovmerge.go
index 65d6f2cd6..b38cf5ea3 100644
--- a/build/gocovmerge.go
+++ b/build/gocovmerge.go
@@ -6,6 +6,7 @@
// gocovmerge takes the results from multiple `go test -coverprofile` runs and
// merges them into one profile
+//go:build ignore
// +build ignore
package main
diff --git a/cmd/embedded.go b/cmd/embedded.go
index 528f32402..2aeaba478 100644
--- a/cmd/embedded.go
+++ b/cmd/embedded.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build bindata
// +build bindata
package cmd
diff --git a/cmd/embedded_stub.go b/cmd/embedded_stub.go
index 1f9af7b86..0e9e3e6ec 100644
--- a/cmd/embedded_stub.go
+++ b/cmd/embedded_stub.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !bindata
// +build !bindata
package cmd
diff --git a/modules/auth/pam/pam.go b/modules/auth/pam/pam.go
index f21602c6b..73ecae0c2 100644
--- a/modules/auth/pam/pam.go
+++ b/modules/auth/pam/pam.go
@@ -1,9 +1,10 @@
-// +build pam
-
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build pam
+// +build pam
+
package pam
import (
diff --git a/modules/auth/pam/pam_stub.go b/modules/auth/pam/pam_stub.go
index 02d8da3c5..815ccf2b0 100644
--- a/modules/auth/pam/pam_stub.go
+++ b/modules/auth/pam/pam_stub.go
@@ -1,9 +1,10 @@
-// +build !pam
-
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !pam
+// +build !pam
+
package pam
import (
diff --git a/modules/auth/pam/pam_test.go b/modules/auth/pam/pam_test.go
index fa16ff0fe..d6d78a748 100644
--- a/modules/auth/pam/pam_test.go
+++ b/modules/auth/pam/pam_test.go
@@ -1,3 +1,4 @@
+//go:build pam
// +build pam
// Copyright 2021 The Gitea Authors. All rights reserved.
diff --git a/modules/git/blob_gogit.go b/modules/git/blob_gogit.go
index 7a82eb5c3..ef7a90c3f 100644
--- a/modules/git/blob_gogit.go
+++ b/modules/git/blob_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/blob_nogogit.go b/modules/git/blob_nogogit.go
index 5b42920eb..26815a63f 100644
--- a/modules/git/blob_nogogit.go
+++ b/modules/git/blob_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/command_test.go b/modules/git/command_test.go
index 00801ae31..58d616a03 100644
--- a/modules/git/command_test.go
+++ b/modules/git/command_test.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build race
// +build race
package git
diff --git a/modules/git/commit_convert_gogit.go b/modules/git/commit_convert_gogit.go
index be2b948b3..b328b3c0e 100644
--- a/modules/git/commit_convert_gogit.go
+++ b/modules/git/commit_convert_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/commit_info_gogit.go b/modules/git/commit_info_gogit.go
index a8006dcef..8b82f3f66 100644
--- a/modules/git/commit_info_gogit.go
+++ b/modules/git/commit_info_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/commit_info_nogogit.go b/modules/git/commit_info_nogogit.go
index 060ecba26..f57355d16 100644
--- a/modules/git/commit_info_nogogit.go
+++ b/modules/git/commit_info_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/last_commit_cache_gogit.go b/modules/git/last_commit_cache_gogit.go
index b8e0db46a..fb09af6f2 100644
--- a/modules/git/last_commit_cache_gogit.go
+++ b/modules/git/last_commit_cache_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/last_commit_cache_nogogit.go b/modules/git/last_commit_cache_nogogit.go
index faf6e23fa..f71e7350a 100644
--- a/modules/git/last_commit_cache_nogogit.go
+++ b/modules/git/last_commit_cache_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/notes_gogit.go b/modules/git/notes_gogit.go
index 9da45ca65..84f66d86b 100644
--- a/modules/git/notes_gogit.go
+++ b/modules/git/notes_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/notes_nogogit.go b/modules/git/notes_nogogit.go
index 697f99828..9a54b4810 100644
--- a/modules/git/notes_nogogit.go
+++ b/modules/git/notes_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/parse_gogit.go b/modules/git/parse_gogit.go
index a50ebec3d..c42e32929 100644
--- a/modules/git/parse_gogit.go
+++ b/modules/git/parse_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/parse_gogit_test.go b/modules/git/parse_gogit_test.go
index c6374133c..c27f5172d 100644
--- a/modules/git/parse_gogit_test.go
+++ b/modules/git/parse_gogit_test.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/parse_nogogit.go b/modules/git/parse_nogogit.go
index 667111ec4..dd5554b5d 100644
--- a/modules/git/parse_nogogit.go
+++ b/modules/git/parse_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/parse_nogogit_test.go b/modules/git/parse_nogogit_test.go
index 502c38d4e..5f58237de 100644
--- a/modules/git/parse_nogogit_test.go
+++ b/modules/git/parse_nogogit_test.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/pipeline/lfs.go b/modules/git/pipeline/lfs.go
index d47b7d91e..46a48b710 100644
--- a/modules/git/pipeline/lfs.go
+++ b/modules/git/pipeline/lfs.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package pipeline
diff --git a/modules/git/pipeline/lfs_nogogit.go b/modules/git/pipeline/lfs_nogogit.go
index d3696fcda..a441e37b6 100644
--- a/modules/git/pipeline/lfs_nogogit.go
+++ b/modules/git/pipeline/lfs_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package pipeline
diff --git a/modules/git/repo.go b/modules/git/repo.go
index f2bbbf471..e7d42dacb 100644
--- a/modules/git/repo.go
+++ b/modules/git/repo.go
@@ -13,6 +13,7 @@ import (
"net/url"
"os"
"path"
+ "path/filepath"
"strconv"
"strings"
"time"
@@ -415,3 +416,33 @@ func GetDivergingCommits(repoPath string, baseBranch string, targetBranch string
return DivergeObject{ahead, behind}, nil
}
+
+// CreateBundle create bundle content to the target path
+func (repo *Repository) CreateBundle(ctx context.Context, commit string, out io.Writer) error {
+ tmp, err := os.MkdirTemp(os.TempDir(), "gitea-bundle")
+ if err != nil {
+ return err
+ }
+ defer os.RemoveAll(tmp)
+
+ tmpFile := filepath.Join(tmp, "bundle")
+ args := []string{
+ "bundle",
+ "create",
+ tmpFile,
+ commit,
+ }
+ _, err = NewCommandContext(ctx, args...).RunInDir(repo.Path)
+ if err != nil {
+ return err
+ }
+
+ fi, err := os.Open(tmpFile)
+ if err != nil {
+ return err
+ }
+ defer fi.Close()
+
+ _, err = io.Copy(out, fi)
+ return err
+}
diff --git a/modules/git/repo_archive.go b/modules/git/repo_archive.go
index 07003aa6b..83df082ad 100644
--- a/modules/git/repo_archive.go
+++ b/modules/git/repo_archive.go
@@ -21,6 +21,8 @@ const (
ZIP ArchiveType = iota + 1
// TARGZ tar gz archive type
TARGZ
+ // BUNDLE bundle archive type
+ BUNDLE
)
// String converts an ArchiveType to string
@@ -30,6 +32,8 @@ func (a ArchiveType) String() string {
return "zip"
case TARGZ:
return "tar.gz"
+ case BUNDLE:
+ return "bundle"
}
return "unknown"
}
diff --git a/modules/git/repo_base_gogit.go b/modules/git/repo_base_gogit.go
index 6186824c0..afa5383b1 100644
--- a/modules/git/repo_base_gogit.go
+++ b/modules/git/repo_base_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_base_nogogit.go b/modules/git/repo_base_nogogit.go
index 1675967d1..22c4dfdcb 100644
--- a/modules/git/repo_base_nogogit.go
+++ b/modules/git/repo_base_nogogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/repo_blob_gogit.go b/modules/git/repo_blob_gogit.go
index 485c233ff..b11e9f58f 100644
--- a/modules/git/repo_blob_gogit.go
+++ b/modules/git/repo_blob_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_blob_nogogit.go b/modules/git/repo_blob_nogogit.go
index afb08d29c..775b3835d 100644
--- a/modules/git/repo_blob_nogogit.go
+++ b/modules/git/repo_blob_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/repo_branch_gogit.go b/modules/git/repo_branch_gogit.go
index e8386b2db..6bf14b399 100644
--- a/modules/git/repo_branch_gogit.go
+++ b/modules/git/repo_branch_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_branch_nogogit.go b/modules/git/repo_branch_nogogit.go
index 7d10b8ba0..666ca81c1 100644
--- a/modules/git/repo_branch_nogogit.go
+++ b/modules/git/repo_branch_nogogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/repo_commit_gogit.go b/modules/git/repo_commit_gogit.go
index 2f9b1c420..175b6e644 100644
--- a/modules/git/repo_commit_gogit.go
+++ b/modules/git/repo_commit_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go
index afd5166f1..b7e49a650 100644
--- a/modules/git/repo_commit_nogogit.go
+++ b/modules/git/repo_commit_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/repo_commitgraph_gogit.go b/modules/git/repo_commitgraph_gogit.go
index 677310945..84a2edb66 100644
--- a/modules/git/repo_commitgraph_gogit.go
+++ b/modules/git/repo_commitgraph_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_language_stats_gogit.go b/modules/git/repo_language_stats_gogit.go
index 20a7b061f..0a4cfbbc7 100644
--- a/modules/git/repo_language_stats_gogit.go
+++ b/modules/git/repo_language_stats_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_language_stats_nogogit.go b/modules/git/repo_language_stats_nogogit.go
index 1684f21d1..7425e2dbb 100644
--- a/modules/git/repo_language_stats_nogogit.go
+++ b/modules/git/repo_language_stats_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/repo_ref_gogit.go b/modules/git/repo_ref_gogit.go
index 2e83e6c46..9f0e11366 100644
--- a/modules/git/repo_ref_gogit.go
+++ b/modules/git/repo_ref_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_ref_nogogit.go b/modules/git/repo_ref_nogogit.go
index 540961592..ec0c5ec4c 100644
--- a/modules/git/repo_ref_nogogit.go
+++ b/modules/git/repo_ref_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/repo_tag_gogit.go b/modules/git/repo_tag_gogit.go
index 3ac097c9a..3022fe96f 100644
--- a/modules/git/repo_tag_gogit.go
+++ b/modules/git/repo_tag_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_tag_nogogit.go b/modules/git/repo_tag_nogogit.go
index a9e122aea..0170f0cc7 100644
--- a/modules/git/repo_tag_nogogit.go
+++ b/modules/git/repo_tag_nogogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/repo_tree_gogit.go b/modules/git/repo_tree_gogit.go
index d878f5e7a..2ddffcf79 100644
--- a/modules/git/repo_tree_gogit.go
+++ b/modules/git/repo_tree_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/repo_tree_nogogit.go b/modules/git/repo_tree_nogogit.go
index 967f8aea3..9d4268b13 100644
--- a/modules/git/repo_tree_nogogit.go
+++ b/modules/git/repo_tree_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/sha1_gogit.go b/modules/git/sha1_gogit.go
index 5953af58b..30290f14b 100644
--- a/modules/git/sha1_gogit.go
+++ b/modules/git/sha1_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/sha1_nogogit.go b/modules/git/sha1_nogogit.go
index 09b5baacd..53665fc92 100644
--- a/modules/git/sha1_nogogit.go
+++ b/modules/git/sha1_nogogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/signature_gogit.go b/modules/git/signature_gogit.go
index 804c0074d..903a48133 100644
--- a/modules/git/signature_gogit.go
+++ b/modules/git/signature_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/signature_nogogit.go b/modules/git/signature_nogogit.go
index 753d87b60..c6fe8e6d1 100644
--- a/modules/git/signature_nogogit.go
+++ b/modules/git/signature_nogogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/tree_blob_gogit.go b/modules/git/tree_blob_gogit.go
index 93ebc8a36..a8d619cd1 100644
--- a/modules/git/tree_blob_gogit.go
+++ b/modules/git/tree_blob_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/tree_blob_nogogit.go b/modules/git/tree_blob_nogogit.go
index fdd8d79c8..df23ff01b 100644
--- a/modules/git/tree_blob_nogogit.go
+++ b/modules/git/tree_blob_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/tree_entry_gogit.go b/modules/git/tree_entry_gogit.go
index 219251a77..20e767eea 100644
--- a/modules/git/tree_entry_gogit.go
+++ b/modules/git/tree_entry_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/tree_entry_nogogit.go b/modules/git/tree_entry_nogogit.go
index 41356ceba..288ec4db6 100644
--- a/modules/git/tree_entry_nogogit.go
+++ b/modules/git/tree_entry_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/git/tree_entry_test.go b/modules/git/tree_entry_test.go
index 3382de410..402c34588 100644
--- a/modules/git/tree_entry_test.go
+++ b/modules/git/tree_entry_test.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/tree_gogit.go b/modules/git/tree_gogit.go
index 79132c554..bc0208836 100644
--- a/modules/git/tree_gogit.go
+++ b/modules/git/tree_gogit.go
@@ -3,6 +3,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package git
diff --git a/modules/git/tree_nogogit.go b/modules/git/tree_nogogit.go
index 9661d8fae..3d3fd26ec 100644
--- a/modules/git/tree_nogogit.go
+++ b/modules/git/tree_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package git
diff --git a/modules/graceful/manager_unix.go b/modules/graceful/manager_unix.go
index 20d9b3905..fcbb16a3b 100644
--- a/modules/graceful/manager_unix.go
+++ b/modules/graceful/manager_unix.go
@@ -1,9 +1,10 @@
-// +build !windows
-
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !windows
+// +build !windows
+
package graceful
import (
diff --git a/modules/graceful/manager_windows.go b/modules/graceful/manager_windows.go
index 51f29778b..e5f5541ed 100644
--- a/modules/graceful/manager_windows.go
+++ b/modules/graceful/manager_windows.go
@@ -1,10 +1,11 @@
-// +build windows
-
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
// This code is heavily inspired by the archived gofacebook/gracenet/net.go handler
+//go:build windows
+// +build windows
+
package graceful
import (
diff --git a/modules/graceful/net_unix.go b/modules/graceful/net_unix.go
index 2dc714955..6ffa8150c 100644
--- a/modules/graceful/net_unix.go
+++ b/modules/graceful/net_unix.go
@@ -1,10 +1,11 @@
-// +build !windows
-
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
// This code is heavily inspired by the archived gofacebook/gracenet/net.go handler
+//go:build !windows
+// +build !windows
+
package graceful
import (
diff --git a/modules/graceful/net_windows.go b/modules/graceful/net_windows.go
index 3fc143349..35b7a9d1f 100644
--- a/modules/graceful/net_windows.go
+++ b/modules/graceful/net_windows.go
@@ -1,10 +1,11 @@
-// +build windows
-
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
// This code is heavily inspired by the archived gofacebook/gracenet/net.go handler
+//go:build windows
+// +build windows
+
package graceful
import "net"
diff --git a/modules/graceful/restart_unix.go b/modules/graceful/restart_unix.go
index 9a94e5fa6..392ed60cb 100644
--- a/modules/graceful/restart_unix.go
+++ b/modules/graceful/restart_unix.go
@@ -1,10 +1,11 @@
-// +build !windows
-
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
// This code is heavily inspired by the archived gofacebook/gracenet/net.go handler
+//go:build !windows
+// +build !windows
+
package graceful
import (
diff --git a/modules/lfs/pointer_scanner_gogit.go b/modules/lfs/pointer_scanner_gogit.go
index abd882990..7e8b812f4 100644
--- a/modules/lfs/pointer_scanner_gogit.go
+++ b/modules/lfs/pointer_scanner_gogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gogit
// +build gogit
package lfs
diff --git a/modules/lfs/pointer_scanner_nogogit.go b/modules/lfs/pointer_scanner_nogogit.go
index b5654d5de..d8076b902 100644
--- a/modules/lfs/pointer_scanner_nogogit.go
+++ b/modules/lfs/pointer_scanner_nogogit.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !gogit
// +build !gogit
package lfs
diff --git a/modules/options/dynamic.go b/modules/options/dynamic.go
index ffb89df88..13fa5d6aa 100644
--- a/modules/options/dynamic.go
+++ b/modules/options/dynamic.go
@@ -1,9 +1,10 @@
-// +build !bindata
-
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !bindata
+// +build !bindata
+
package options
import (
diff --git a/modules/options/options_bindata.go b/modules/options/options_bindata.go
index 262bd0de3..64da772c6 100644
--- a/modules/options/options_bindata.go
+++ b/modules/options/options_bindata.go
@@ -2,7 +2,8 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
-//+build bindata
+//go:build bindata
+// +build bindata
package options
diff --git a/modules/options/static.go b/modules/options/static.go
index 5f4ffdda7..49e8445cd 100644
--- a/modules/options/static.go
+++ b/modules/options/static.go
@@ -1,9 +1,10 @@
-// +build bindata
-
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build bindata
+// +build bindata
+
package options
import (
diff --git a/modules/public/dynamic.go b/modules/public/dynamic.go
index 0bfe38bc3..955c01e51 100644
--- a/modules/public/dynamic.go
+++ b/modules/public/dynamic.go
@@ -1,9 +1,10 @@
-// +build !bindata
-
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !bindata
+// +build !bindata
+
package public
import (
diff --git a/modules/public/public_bindata.go b/modules/public/public_bindata.go
index 05648aea8..eb10d9642 100644
--- a/modules/public/public_bindata.go
+++ b/modules/public/public_bindata.go
@@ -2,7 +2,8 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
-//+build bindata
+//go:build bindata
+// +build bindata
package public
diff --git a/modules/public/static.go b/modules/public/static.go
index 827dc2a1e..6994ed650 100644
--- a/modules/public/static.go
+++ b/modules/public/static.go
@@ -1,9 +1,10 @@
-// +build bindata
-
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build bindata
+// +build bindata
+
package public
import (
diff --git a/modules/setting/database_sqlite.go b/modules/setting/database_sqlite.go
index 623326ddc..798292fec 100644
--- a/modules/setting/database_sqlite.go
+++ b/modules/setting/database_sqlite.go
@@ -1,3 +1,4 @@
+//go:build sqlite
// +build sqlite
// Copyright 2014 The Gogs Authors. All rights reserved.
diff --git a/modules/svg/discover_bindata.go b/modules/svg/discover_bindata.go
index 1f7af0c9f..e11951ff7 100644
--- a/modules/svg/discover_bindata.go
+++ b/modules/svg/discover_bindata.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build bindata
// +build bindata
package svg
diff --git a/modules/svg/discover_nobindata.go b/modules/svg/discover_nobindata.go
index d667da2d6..8d857551d 100644
--- a/modules/svg/discover_nobindata.go
+++ b/modules/svg/discover_nobindata.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !bindata
// +build !bindata
package svg
diff --git a/modules/templates/dynamic.go b/modules/templates/dynamic.go
index 160e4e05f..4732fce42 100644
--- a/modules/templates/dynamic.go
+++ b/modules/templates/dynamic.go
@@ -1,9 +1,10 @@
-// +build !bindata
-
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !bindata
+// +build !bindata
+
package templates
import (
diff --git a/modules/templates/static.go b/modules/templates/static.go
index 7f95d77ad..ee20b2af3 100644
--- a/modules/templates/static.go
+++ b/modules/templates/static.go
@@ -1,9 +1,10 @@
-// +build bindata
-
// Copyright 2016 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build bindata
+// +build bindata
+
package templates
import (
diff --git a/modules/templates/templates_bindata.go b/modules/templates/templates_bindata.go
index 5a59286c7..887f9eeba 100644
--- a/modules/templates/templates_bindata.go
+++ b/modules/templates/templates_bindata.go
@@ -2,7 +2,8 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
-//+build bindata
+//go:build bindata
+// +build bindata
package templates
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 3eb382577..e5561b6d7 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -771,6 +771,7 @@ use_template = Use this template
clone_in_vsc = Clone in VS Code
download_zip = Download ZIP
download_tar = Download TAR.GZ
+download_bundle = Download BUNDLE
generate_repo = Generate Repository
generate_from = Generate From
repo_desc = Description
diff --git a/routers/private/manager_unix.go b/routers/private/manager_unix.go
index 60ae9b68e..1738c06a0 100644
--- a/routers/private/manager_unix.go
+++ b/routers/private/manager_unix.go
@@ -1,9 +1,10 @@
-// +build !windows
-
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !windows
+// +build !windows
+
package private
import (
diff --git a/routers/private/manager_windows.go b/routers/private/manager_windows.go
index f6c9b7ec8..a8a477313 100644
--- a/routers/private/manager_windows.go
+++ b/routers/private/manager_windows.go
@@ -1,9 +1,10 @@
-// +build windows
-
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build windows
+// +build windows
+
package private
import (
diff --git a/services/archiver/archiver.go b/services/archiver/archiver.go
index 00c028130..7ae0a94d7 100644
--- a/services/archiver/archiver.go
+++ b/services/archiver/archiver.go
@@ -54,6 +54,9 @@ func NewRequest(repoID int64, repo *git.Repository, uri string) (*ArchiveRequest
case strings.HasSuffix(uri, ".tar.gz"):
ext = ".tar.gz"
r.Type = git.TARGZ
+ case strings.HasSuffix(uri, ".bundle"):
+ ext = ".bundle"
+ r.Type = git.BUNDLE
default:
return nil, fmt.Errorf("Unknown format: %s", uri)
}
@@ -165,13 +168,21 @@ func doArchive(r *ArchiveRequest) (*models.RepoArchiver, error) {
}
}()
- err = gitRepo.CreateArchive(
- graceful.GetManager().ShutdownContext(),
- archiver.Type,
- w,
- setting.Repository.PrefixArchiveFiles,
- archiver.CommitID,
- )
+ if archiver.Type == git.BUNDLE {
+ err = gitRepo.CreateBundle(
+ graceful.GetManager().ShutdownContext(),
+ archiver.CommitID,
+ w,
+ )
+ } else {
+ err = gitRepo.CreateArchive(
+ graceful.GetManager().ShutdownContext(),
+ archiver.Type,
+ w,
+ setting.Repository.PrefixArchiveFiles,
+ archiver.CommitID,
+ )
+ }
_ = w.CloseWithError(err)
done <- err
}(done, w, archiver, gitRepo)
diff --git a/services/auth/placeholder.go b/services/auth/placeholder.go
index 50e306188..d9a0ceae7 100644
--- a/services/auth/placeholder.go
+++ b/services/auth/placeholder.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build !windows
// +build !windows
package auth
diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl
index 5629c7ee1..0c377251f 100644
--- a/templates/repo/home.tmpl
+++ b/templates/repo/home.tmpl
@@ -118,6 +118,7 @@
{{svg "octicon-file-zip"}} {{.i18n.Tr "repo.download_zip"}}
{{svg "octicon-file-zip"}} {{.i18n.Tr "repo.download_tar"}}
+ {{svg "octicon-package"}} {{.i18n.Tr "repo.download_bundle"}}
diff --git a/tools/fuzz.go b/tools/fuzz.go
index ca35ff4f0..2f980b3b8 100644
--- a/tools/fuzz.go
+++ b/tools/fuzz.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
+//go:build gofuzz
// +build gofuzz
package fuzz