summaryrefslogtreecommitdiff
path: root/git-svn.perl
diff options
context:
space:
mode:
authorMichael G. Schwern <schwern@pobox.com>2012-07-27 00:26:06 (GMT)
committerEric Wong <normalperson@yhbt.net>2012-07-27 22:36:19 (GMT)
commit3d9be15fc2b8c8198253ae1c4dcaa343b74c3b8d (patch)
tree6f8732038831d7c3dacc0efe4ea837cfc53a34e8 /git-svn.perl
parent10c2aa5928b5309374bb4328f1c2849cb4ae65cc (diff)
downloadgit-3d9be15fc2b8c8198253ae1c4dcaa343b74c3b8d.zip
git-3d9be15fc2b8c8198253ae1c4dcaa343b74c3b8d.tar.gz
git-3d9be15fc2b8c8198253ae1c4dcaa343b74c3b8d.tar.bz2
Extract Git::SVN::GlobSpec from git-svn.
Straight cut & paste. That's the last class. * Make Git::SVN load it on its own, its the only thing that needs it. Signed-off-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-xgit-svn.perl59
1 files changed, 0 insertions, 59 deletions
diff --git a/git-svn.perl b/git-svn.perl
index ca0b6f2..5711c57 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -2039,65 +2039,6 @@ sub gc_directory {
}
}
-
-package Git::SVN::GlobSpec;
-use strict;
-use warnings;
-
-sub new {
- my ($class, $glob, $pattern_ok) = @_;
- my $re = $glob;
- $re =~ s!/+$!!g; # no need for trailing slashes
- my (@left, @right, @patterns);
- my $state = "left";
- my $die_msg = "Only one set of wildcard directories " .
- "(e.g. '*' or '*/*/*') is supported: '$glob'\n";
- for my $part (split(m|/|, $glob)) {
- if ($part =~ /\*/ && $part ne "*") {
- die "Invalid pattern in '$glob': $part\n";
- } elsif ($pattern_ok && $part =~ /[{}]/ &&
- $part !~ /^\{[^{}]+\}/) {
- die "Invalid pattern in '$glob': $part\n";
- }
- if ($part eq "*") {
- die $die_msg if $state eq "right";
- $state = "pattern";
- push(@patterns, "[^/]*");
- } elsif ($pattern_ok && $part =~ /^\{(.*)\}$/) {
- die $die_msg if $state eq "right";
- $state = "pattern";
- my $p = quotemeta($1);
- $p =~ s/\\,/|/g;
- push(@patterns, "(?:$p)");
- } else {
- if ($state eq "left") {
- push(@left, $part);
- } else {
- push(@right, $part);
- $state = "right";
- }
- }
- }
- my $depth = @patterns;
- if ($depth == 0) {
- die "One '*' is needed in glob: '$glob'\n";
- }
- my $left = join('/', @left);
- my $right = join('/', @right);
- $re = join('/', @patterns);
- $re = join('\/',
- grep(length, quotemeta($left), "($re)", quotemeta($right)));
- my $left_re = qr/^\/\Q$left\E(\/|$)/;
- bless { left => $left, right => $right, left_regex => $left_re,
- regex => qr/$re/, glob => $glob, depth => $depth }, $class;
-}
-
-sub full_path {
- my ($self, $path) = @_;
- return (length $self->{left} ? "$self->{left}/" : '') .
- $path . (length $self->{right} ? "/$self->{right}" : '');
-}
-
__END__
Data structures: