github.com/dolthub/dolt/go@v0.40.5-0.20240520175717-68db7794bea6/libraries/doltcore/ref/branchname.go (about) 1 // Copyright 2019 Dolthub, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package ref 16 17 import ( 18 "regexp" 19 "strings" 20 21 "github.com/dolthub/dolt/go/store/datas" 22 ) 23 24 // InvalidBranchNameRegex is a list of patterns forbidden in a branch name. 25 // For additional constraints on ref names, see datas.ValidateDatasetId 26 var InvalidBranchNameRegex = regexp.MustCompile(strings.Join([]string{ 27 // An exact name of "", "HEAD" or "-" 28 `\A\z`, `\AHEAD\z`, `\A-\z`, 29 // A name that looks exactly like a commit id 30 `\A[0-9a-v]{32}\z`, 31 // Any empty component; that is, starting or ending with "/" or any appearance of "//" 32 `\/\/`, `\A\/`, `\/\z`, 33 }, "|")) 34 35 func IsValidBranchName(s string) bool { 36 if InvalidBranchNameRegex.MatchString(s) { 37 return false 38 } 39 40 if err := datas.ValidateDatasetId(s); err != nil { 41 return false 42 } 43 44 return true 45 }