diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/regex.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/gitlab/regex.rb b/lib/gitlab/regex.rb index b4be46d3b42..55aa240a9f9 100644 --- a/lib/gitlab/regex.rb +++ b/lib/gitlab/regex.rb @@ -18,6 +18,29 @@ module Gitlab default_regex end + def git_reference_regex + # Valid git ref regex, see: + # https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html + + %r{ + (?! + # doesn't begins with + \/| # (rule #6) + # doesn't contain + .*(?: + [\/.]\.| # (rule #1,3) + \/\/| # (rule #6) + @\{| # (rule #8) + \\ # (rule #9) + ) + ) + [^\000-\040\177~^:?*\[]+ # (rule #4-5) + # doesn't end with + (?<!\.lock) # (rule #1) + (?<![\/.]) # (rule #6-7) + }x + end + protected def default_regex |