From 563a4dfb78aaa97febd0763e9f81a740af0dd666 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 7 Mar 2026 19:37:20 +0800 Subject: refstore/files: Implement batching --- refstore/files/batch_reject.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 refstore/files/batch_reject.go (limited to 'refstore/files/batch_reject.go') 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") +} -- cgit v1.3.1-10-gc9f91