aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/batch_reject.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-07 19:37:20 +0800
committerGravatar Runxi Yu2026-03-07 19:37:20 +0800
commit563a4dfb78aaa97febd0763e9f81a740af0dd666 (patch)
treef7ede5d05f1363021fa5b1902e9e569c2b274bf1 /refstore/files/batch_reject.go
parentrefstore: Batch should also be staged (diff)
signatureNo signature
refstore/files: Implement batching
Diffstat (limited to 'refstore/files/batch_reject.go')
-rw-r--r--refstore/files/batch_reject.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/refstore/files/batch_reject.go b/refstore/files/batch_reject.go
new file mode 100644
index 00000000..27715c2d
--- /dev/null
+++ b/refstore/files/batch_reject.go
@@ -0,0 +1,35 @@
+package files
+
+import (
+ "errors"
+ "strings"
+
+ "codeberg.org/lindenii/furgit/objectid"
+ "codeberg.org/lindenii/furgit/ref/refname"
+ "codeberg.org/lindenii/furgit/refstore"
+)
+
+func isBatchRejected(err error) bool {
+ var nameErr *refname.NameError
+
+ if errors.As(err, &nameErr) {
+ return true
+ }
+
+ if errors.Is(err, objectid.ErrInvalidAlgorithm) || errors.Is(err, refstore.ErrReferenceNotFound) {
+ return true
+ }
+
+ msg := err.Error()
+
+ return strings.Contains(msg, "empty reference name") ||
+ strings.Contains(msg, "empty symbolic target") ||
+ strings.Contains(msg, "empty symbolic old target") ||
+ strings.Contains(msg, "already exists") ||
+ strings.Contains(msg, "is missing") ||
+ strings.Contains(msg, "is not detached") ||
+ strings.Contains(msg, "is not symbolic") ||
+ strings.Contains(msg, "expected") ||
+ strings.Contains(msg, "reference name conflict") ||
+ strings.Contains(msg, "non-empty directory blocks reference")
+}