summaryrefslogtreecommitdiffstats
path: root/modules/git/repo_commit_gogit.go
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-12-23 13:44:00 +0000
committerGitHub <noreply@github.com>2021-12-23 21:44:00 +0800
commitffc08c1914fbe6a5a5ebe9c8571b790ac6024d71 (patch)
tree78e95e6dbf82d25e0fa9c534cab61fb8d266cc9f /modules/git/repo_commit_gogit.go
parente0cf3d86c44fde99b49f12c7a1386cbf433a0207 (diff)
downloadgitea-ffc08c1914fbe6a5a5ebe9c8571b790ac6024d71.tar.gz
gitea-ffc08c1914fbe6a5a5ebe9c8571b790ac6024d71.zip
Do not read or write git reference files directly (#18079)
Git will and can pack references into packfiles and therefore if you write/read the files directly you will get false results. Instead you should use update-ref and show-ref. To that end I have created three new functions in git/repo_commit.go that will do this correctly. Related #17191 Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'modules/git/repo_commit_gogit.go')
-rw-r--r--modules/git/repo_commit_gogit.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/modules/git/repo_commit_gogit.go b/modules/git/repo_commit_gogit.go
index f00b340d15..39be183f30 100644
--- a/modules/git/repo_commit_gogit.go
+++ b/modules/git/repo_commit_gogit.go
@@ -31,6 +31,16 @@ func (repo *Repository) GetRefCommitID(name string) (string, error) {
return ref.Hash().String(), nil
}
+// SetReference sets the commit ID string of given reference (e.g. branch or tag).
+func (repo *Repository) SetReference(name, commitID string) error {
+ return repo.gogitRepo.Storer.SetReference(plumbing.NewReferenceFromStrings(name, commitID))
+}
+
+// RemoveReference removes the given reference (e.g. branch or tag).
+func (repo *Repository) RemoveReference(name string) error {
+ return repo.gogitRepo.Storer.RemoveReference(plumbing.ReferenceName(name))
+}
+
// ConvertToSHA1 returns a Hash object from a potential ID string
func (repo *Repository) ConvertToSHA1(commitID string) (SHA1, error) {
if len(commitID) == 40 {