summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/regex.rb23
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