diff options
| author | 2026-03-07 19:37:20 +0800 | |
|---|---|---|
| committer | 2026-03-07 19:37:20 +0800 | |
| commit | 563a4dfb78aaa97febd0763e9f81a740af0dd666 (patch) | |
| tree | f7ede5d05f1363021fa5b1902e9e569c2b274bf1 /refstore/files/batch_reject.go | |
| parent | refstore: Batch should also be staged (diff) | |
| signature | No signature | |
refstore/files: Implement batching
Diffstat (limited to 'refstore/files/batch_reject.go')
| -rw-r--r-- | refstore/files/batch_reject.go | 35 |
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") +} |
