NAME
   Regexp::Pattern::Git - Regexp patterns related to git

VERSION
   This document describes version 0.002 of Regexp::Pattern::Git (from Perl
   distribution Regexp-Pattern-Git), released on 2020-03-26.

SYNOPSIS
    use Regexp::Pattern; # exports re()
    my $re = re("Git::ref");

DESCRIPTION
   Regexp::Pattern is a convention for organizing reusable regex patterns.

PATTERNS
   *   ref

       Valid reference name.

       This single regex pattern enforces the rules defined by the
       git-check-ref-format manpage, reproduced below:

       1. They can include slash / for hierarchical (directory) grouping,
       but no slash-separated component can begin with a dot . or end with
       the sequence .lock.
       2. They must contain at least one /. This enforces the presence of a
       category like heads/, tags/ etc. but the actual names are not
       restricted.
       3. They cannot have two consecutive dots .. anywhere.
       4. They cannot have ASCII control characters (i.e. bytes whose
       values are lower than \040, or \177 DEL), space, tilde ~, caret ^,
       or colon : anywhere.
       5. They cannot have question-mark ?, asterisk *, or open bracket [
       anywhere.
       6. They cannot begin or end with a slash / or contain multiple
       consecutive slashes.
       7. They cannot end with a dot ..
       8. They cannot contain a sequence: @ followed by {.
       9. They cannot be the single character @.
       10. They cannot contain a .

       Examples:

        "foo/bar" =~ re("Git::ref");  # matches

       A slash-separated component begins with dot (rule 1).

        ".foo/bar" =~ re("Git::ref");  # doesn't match

       A slash-separated component begins with dot (rule 1).

        "foo/.bar" =~ re("Git::ref");  # doesn't match

       A slash-separated component ends with ".lock" (rule 1).

        "foo.lock/bar" =~ re("Git::ref");  # doesn't match

        "foo.locker/bar" =~ re("Git::ref");  # matches

       A slash-separated component ends with ".lock" (rule 1).

        "foo/bar.lock" =~ re("Git::ref");  # doesn't match

       A slash-separated component ends with ".lock" (rule 1).

        "foo/bar.lock/baz" =~ re("Git::ref");  # doesn't match

        "foo/bar.locker/baz" =~ re("Git::ref");  # matches

       Does not contain at least one / (rule 2).

        "foo" =~ re("Git::ref");  # doesn't match

       Contains two consecutive dots (rule 3).

        "foo../bar" =~ re("Git::ref");  # doesn't match

       Contains colon (rule 4).

        "foo:/bar" =~ re("Git::ref");  # doesn't match

       Contains question mark (rule 5).

        "foo?/bar" =~ re("Git::ref");  # doesn't match

       Contains open bracket (rule 5).

        "foo[2]/bar" =~ re("Git::ref");  # doesn't match

       Begins with / (rule 6).

        "/foo/bar" =~ re("Git::ref");  # doesn't match

       Ends with / (rule 6).

        "foo/bar/" =~ re("Git::ref");  # doesn't match

       Contains multiple consecutive slashes.

        "foo//bar" =~ re("Git::ref");  # doesn't match

       Ends with . (rule 7).

        "foo/bar." =~ re("Git::ref");  # doesn't match

       Contains sequence @{ (rule 8).

        "foo\@{/bar" =~ re("Git::ref");  # doesn't match

       Contains sequence @{ (rule 8).

        "foo\@{baz}/bar" =~ re("Git::ref");  # doesn't match

       Cannot be single character @ (rule 9).

        "\@" =~ re("Git::ref");  # doesn't match

   *   release_tag

       Common release tag pattern.

       This is not defined by git, but just common convention.

       Examples:

       Does not contain digit.

        "release" =~ re("Git::release_tag");  # doesn't match

        1 =~ re("Git::release_tag");  # matches

        "1.23-456-foobar" =~ re("Git::release_tag");  # matches

        "release-1.23" =~ re("Git::release_tag");  # matches

        "v1.23" =~ re("Git::release_tag");  # matches

        "ver-1.23" =~ re("Git::release_tag");  # matches

HOMEPAGE
   Please visit the project's homepage at
   <https://metacpan.org/release/Regexp-Pattern-Git>.

SOURCE
   Source repository is at
   <https://github.com/perlancar/perl-Regexp-Pattern-Git>.

BUGS
   Please report any bugs or feature requests on the bugtracker website
   <https://rt.cpan.org/Public/Dist/Display.html?Name=Regexp-Pattern-Git>

   When submitting a bug or request, please include a test-file or a patch
   to an existing test-file that illustrates the bug or desired feature.

SEE ALSO
   Regexp::Pattern

   Some utilities related to Regexp::Pattern: App::RegexpPatternUtils,
   rpgrep from App::rpgrep.

AUTHOR
   perlancar <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2020 by [email protected].

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.