From 9d08dc994d51298e2d8e75d8ed4ee477312ec53a Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 7 Mar 2026 15:08:14 +0800 Subject: ref/refname: Add refname validation --- ref/refname/options.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 ref/refname/options.go (limited to 'ref/refname/options.go') diff --git a/ref/refname/options.go b/ref/refname/options.go new file mode 100644 index 00000000..5ae81541 --- /dev/null +++ b/ref/refname/options.go @@ -0,0 +1,30 @@ +package refname + +import "fmt" + +// Options controls Git refname validation. +type Options struct { + // AllowOneLevel permits one-component refnames like HEAD. + AllowOneLevel bool + + // RefspecPattern permits one '*' anywhere in the refname. + RefspecPattern bool +} + +// String returns one stable text form of the options. +func (options Options) String() string { + return fmt.Sprintf("allow_onelevel=%t,refspec_pattern=%t", options.AllowOneLevel, options.RefspecPattern) +} + +func (options Options) flags() int { + var flags int + if options.AllowOneLevel { + flags |= refnameAllowOneLevel + } + + if options.RefspecPattern { + flags |= refnameRefspecPattern + } + + return flags +} -- cgit v1.3.1-10-gc9f91