aboutsummaryrefslogtreecommitdiffstats
path: root/modules/git/repo_commit_nogogit.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_nogogit.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_nogogit.go')
-rw-r--r--modules/git/repo_commit_nogogit.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go
index c8cd7ec882..4c1670742c 100644
--- a/modules/git/repo_commit_nogogit.go
+++ b/modules/git/repo_commit_nogogit.go
@@ -49,6 +49,18 @@ func (repo *Repository) GetRefCommitID(name string) (string, error) {
return string(shaBs), nil
}
+// SetReference sets the commit ID string of given reference (e.g. branch or tag).
+func (repo *Repository) SetReference(name, commitID string) error {
+ _, err := NewCommandContext(repo.Ctx, "update-ref", name, commitID).RunInDir(repo.Path)
+ return err
+}
+
+// RemoveReference removes the given reference (e.g. branch or tag).
+func (repo *Repository) RemoveReference(name string) error {
+ _, err := NewCommandContext(repo.Ctx, "update-ref", "--no-deref", "-d", name).RunInDir(repo.Path)
+ return err
+}
+
// IsCommitExist returns true if given commit exists in current repository.
func (repo *Repository) IsCommitExist(name string) bool {
_, err := NewCommandContext(repo.Ctx, "cat-file", "-e", name).RunInDir(repo.Path)