shithub: furgit

Download patch

ref: 54baeb0ec3778b63a8088d0f5ef4ac9aa90d077d
parent: ae879b8cf5a87199802a33d6b15c76afafa8002b
author: Runxi Yu <me@runxiyu.org>
date: Sat Feb 21 06:25:41 EST 2026

testgit: Add ref-related functions

--- /dev/null
+++ b/internal/testgit/repo_refs.go
@@ -1,0 +1,38 @@
+package testgit
+
+import (
+	"strings"
+	"testing"
+
+	"codeberg.org/lindenii/furgit/objectid"
+)
+
+// UpdateRef updates a ref to point at id.
+func (testRepo *TestRepo) UpdateRef(tb testing.TB, name string, id objectid.ObjectID) {
+	tb.Helper()
+	testRepo.Run(tb, "update-ref", name, id.String())
+}
+
+// SymbolicRef sets a symbolic reference target.
+func (testRepo *TestRepo) SymbolicRef(tb testing.TB, name, target string) {
+	tb.Helper()
+	testRepo.Run(tb, "symbolic-ref", name, target)
+}
+
+// PackRefs runs git pack-refs with args.
+func (testRepo *TestRepo) PackRefs(tb testing.TB, args ...string) {
+	tb.Helper()
+	cmd := append([]string{"pack-refs"}, args...)
+	testRepo.Run(tb, cmd...)
+}
+
+// ShowRef returns lines from git show-ref output.
+func (testRepo *TestRepo) ShowRef(tb testing.TB, args ...string) []string {
+	tb.Helper()
+	cmd := append([]string{"show-ref"}, args...)
+	out := testRepo.Run(tb, cmd...)
+	if strings.TrimSpace(out) == "" {
+		return nil
+	}
+	return strings.Split(strings.TrimSpace(out), "\n")
+}
--