diff options
author | zeripath <art27@cantab.net> | 2021-12-23 13:44:00 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-23 21:44:00 +0800 |
commit | ffc08c1914fbe6a5a5ebe9c8571b790ac6024d71 (patch) | |
tree | 78e95e6dbf82d25e0fa9c534cab61fb8d266cc9f /modules/git/repo_commit_nogogit.go | |
parent | e0cf3d86c44fde99b49f12c7a1386cbf433a0207 (diff) | |
download | gitea-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.go | 12 |
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) |