summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wendler <polynomial-c@gentoo.org>2014-02-04 09:36:35 +0000
committerLars Wendler <polynomial-c@gentoo.org>2014-02-04 09:36:35 +0000
commit9867a815c369b9340f152f9cba39573bd70d8bad (patch)
tree90325e8627796371185659592da2d501a7837b8c /dev-vcs
parentFix underlinking and respect CC (diff)
downloadgentoo-2-9867a815c369b9340f152f9cba39573bd70d8bad.tar.gz
gentoo-2-9867a815c369b9340f152f9cba39573bd70d8bad.tar.bz2
gentoo-2-9867a815c369b9340f152f9cba39573bd70d8bad.zip
Added rewritten init script which no longer contains "need net" (bug #490446). Added epatch_user (bug #497292). Added www-servers/nginx to the list of server who work with git-instaweb (bug #491862). Removed reference to no longer needed patch in remaining ebuilds. Removed old files and ebuilds
(Portage version: 2.2.8-r1/cvs/Linux x86_64, signed Manifest commit with key 0x981CA6FC)
Diffstat (limited to 'dev-vcs')
-rw-r--r--dev-vcs/git/ChangeLog11
-rw-r--r--dev-vcs/git/files/git-1.7.12-git-svn-backport.patch1288
-rw-r--r--dev-vcs/git/files/git-daemon-r1.initd13
-rw-r--r--dev-vcs/git/git-1.8.1.5-r1.ebuild6
-rw-r--r--dev-vcs/git/git-1.8.1.5.ebuild8
-rw-r--r--dev-vcs/git/git-1.8.2.1.ebuild8
-rw-r--r--dev-vcs/git/git-1.8.4.5.ebuild13
-rw-r--r--dev-vcs/git/git-1.8.5.2.ebuild642
-rw-r--r--dev-vcs/git/git-1.8.5.3.ebuild11
-rw-r--r--dev-vcs/git/git-9999.ebuild11
10 files changed, 50 insertions, 1961 deletions
diff --git a/dev-vcs/git/ChangeLog b/dev-vcs/git/ChangeLog
index dbeb1c4bf98d..8d8a99806ef4 100644
--- a/dev-vcs/git/ChangeLog
+++ b/dev-vcs/git/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for dev-vcs/git
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/ChangeLog,v 1.241 2014/01/18 09:26:02 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/ChangeLog,v 1.242 2014/02/04 09:36:35 polynomial-c Exp $
+
+ 04 Feb 2014; Lars Wendler <polynomial-c@gentoo.org> git-1.8.1.5.ebuild,
+ git-1.8.1.5-r1.ebuild, git-1.8.2.1.ebuild, git-1.8.4.5.ebuild,
+ -git-1.8.5.2.ebuild, git-1.8.5.3.ebuild, git-9999.ebuild,
+ -files/git-1.7.12-git-svn-backport.patch, +files/git-daemon-r1.initd:
+ Added rewritten init script which no longer contains "need net" (bug
+ #490446). Added epatch_user (bug #497292). Added www-servers/nginx to the
+ list of server who work with git-instaweb (bug #491862). Removed reference to
+ no longer needed patch in remaining ebuilds. Removed old files and ebuilds.
18 Jan 2014; Mike Frysinger <vapier@gentoo.org> git-1.8.1.5-r1.ebuild,
git-1.8.3.2-r1.ebuild:
diff --git a/dev-vcs/git/files/git-1.7.12-git-svn-backport.patch b/dev-vcs/git/files/git-1.7.12-git-svn-backport.patch
deleted file mode 100644
index 0a254ece8704..000000000000
--- a/dev-vcs/git/files/git-1.7.12-git-svn-backport.patch
+++ /dev/null
@@ -1,1288 +0,0 @@
-commit 0dfcf2dacd4be3f0c647a987b78def5136429165
-Merge: 889d358 5eaa1fd
-Author: Junio C Hamano <gitster@pobox.com>
-Date: Tue Aug 21 15:27:57 2012 -0700
-
- Merge branch 'ms/git-svn-1.7' into jch
-
- A series by Michael Schwern via Eric to update git-svn to revamp the
- way URLs are internally passed around, to make it work with SVN 1.7.
-
- Will merge to 'next' after pinging Eric to double check and then to 'master'.
-
- * ms/git-svn-1.7:
- git-svn: remove ad-hoc canonicalizations
- git-svn: canonicalize newly-minted URLs
- git-svn: introduce add_path_to_url function
- git-svn: canonicalize earlier
- git-svn: replace URL escapes with canonicalization
- git-svn: attempt to mimic SVN 1.7 URL canonicalization
- t9107: fix typo
- t9118: workaround inconsistency between SVN versions
- Git::SVN{,::Ra}: canonicalize earlier
- git-svn: path canonicalization uses SVN API
- Git::SVN::Utils: remove irrelevant comment
- git-svn: add join_paths() to safely concatenate paths
- git-svn: factor out _collapse_dotdot function
- git-svn: use SVN 1.7 to canonicalize when possible
- git-svn: move canonicalization to Git::SVN::Utils
- use Git::SVN{,::RA}->url accessor globally
- use Git::SVN->path accessor globally
- Git::SVN::Ra: use accessor for URLs
- Git::SVN: use accessor for URLs internally
- Git::SVN: use accessors internally for path
-
-diff --git a/git-svn.perl b/git-svn.perl
-index 828b8f0..0d77ffb 100755
---- a/git-svn.perl
-+++ b/git-svn.perl
-@@ -29,7 +29,16 @@ use Git::SVN::Prompt;
- use Git::SVN::Log;
- use Git::SVN::Migration;
-
--use Git::SVN::Utils qw(fatal can_compress);
-+use Git::SVN::Utils qw(
-+ fatal
-+ can_compress
-+ canonicalize_path
-+ canonicalize_url
-+ join_paths
-+ add_path_to_url
-+ join_paths
-+);
-+
- use Git qw(
- git_cmd_try
- command
-@@ -1231,7 +1240,7 @@ sub cmd_show_ignore {
- my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
- $gs ||= Git::SVN->new;
- my $r = (defined $_revision ? $_revision : $gs->ra->get_latest_revnum);
-- $gs->prop_walk($gs->{path}, $r, sub {
-+ $gs->prop_walk($gs->path, $r, sub {
- my ($gs, $path, $props) = @_;
- print STDOUT "\n# $path\n";
- my $s = $props->{'svn:ignore'} or return;
-@@ -1247,7 +1256,7 @@ sub cmd_show_externals {
- my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
- $gs ||= Git::SVN->new;
- my $r = (defined $_revision ? $_revision : $gs->ra->get_latest_revnum);
-- $gs->prop_walk($gs->{path}, $r, sub {
-+ $gs->prop_walk($gs->path, $r, sub {
- my ($gs, $path, $props) = @_;
- print STDOUT "\n# $path\n";
- my $s = $props->{'svn:externals'} or return;
-@@ -1262,7 +1271,7 @@ sub cmd_create_ignore {
- my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
- $gs ||= Git::SVN->new;
- my $r = (defined $_revision ? $_revision : $gs->ra->get_latest_revnum);
-- $gs->prop_walk($gs->{path}, $r, sub {
-+ $gs->prop_walk($gs->path, $r, sub {
- my ($gs, $path, $props) = @_;
- # $path is of the form /path/to/dir/
- $path = '.' . $path;
-@@ -1292,31 +1301,6 @@ sub cmd_mkdirs {
- $gs->mkemptydirs($_revision);
- }
-
--sub canonicalize_path {
-- my ($path) = @_;
-- my $dot_slash_added = 0;
-- if (substr($path, 0, 1) ne "/") {
-- $path = "./" . $path;
-- $dot_slash_added = 1;
-- }
-- # File::Spec->canonpath doesn't collapse x/../y into y (for a
-- # good reason), so let's do this manually.
-- $path =~ s#/+#/#g;
-- $path =~ s#/\.(?:/|$)#/#g;
-- $path =~ s#/[^/]+/\.\.##g;
-- $path =~ s#/$##g;
-- $path =~ s#^\./## if $dot_slash_added;
-- $path =~ s#^/##;
-- $path =~ s#^\.$##;
-- return $path;
--}
--
--sub canonicalize_url {
-- my ($url) = @_;
-- $url =~ s#^([^:]+://[^/]*/)(.*)$#$1 . canonicalize_path($2)#e;
-- return $url;
--}
--
- # get_svnprops(PATH)
- # ------------------
- # Helper for cmd_propget and cmd_proplist below.
-@@ -1330,7 +1314,7 @@ sub get_svnprops {
- $path = $cmd_dir_prefix . $path;
- fatal("No such file or directory: $path") unless -e $path;
- my $is_dir = -d $path ? 1 : 0;
-- $path = $gs->{path} . '/' . $path;
-+ $path = join_paths($gs->{path}, $path);
-
- # canonicalize the path (otherwise libsvn will abort or fail to
- # find the file)
-@@ -1431,8 +1415,8 @@ sub cmd_commit_diff {
- fatal("Needed URL or usable git-svn --id in ",
- "the command-line\n", $usage);
- }
-- $url = $gs->{url};
-- $svn_path = $gs->{path};
-+ $url = $gs->url;
-+ $svn_path = $gs->path;
- }
- unless (defined $_revision) {
- fatal("-r|--revision is a required argument\n", $usage);
-@@ -1466,24 +1450,6 @@ sub cmd_commit_diff {
- }
- }
-
--sub escape_uri_only {
-- my ($uri) = @_;
-- my @tmp;
-- foreach (split m{/}, $uri) {
-- s/([^~\w.%+-]|%(?![a-fA-F0-9]{2}))/sprintf("%%%02X",ord($1))/eg;
-- push @tmp, $_;
-- }
-- join('/', @tmp);
--}
--
--sub escape_url {
-- my ($url) = @_;
-- if ($url =~ m#^([^:]+)://([^/]*)(.*)$#) {
-- my ($scheme, $domain, $uri) = ($1, $2, escape_uri_only($3));
-- $url = "$scheme://$domain$uri";
-- }
-- $url;
--}
-
- sub cmd_info {
- my $path = canonicalize_path(defined($_[0]) ? $_[0] : ".");
-@@ -1508,21 +1474,21 @@ sub cmd_info {
- # canonicalize_path() will return "" to make libsvn 1.5.x happy,
- $path = "." if $path eq "";
-
-- my $full_url = $url . ($fullpath eq "" ? "" : "/$fullpath");
-+ my $full_url = canonicalize_url( add_path_to_url( $url, $fullpath ) );
-
- if ($_url) {
-- print escape_url($full_url), "\n";
-+ print "$full_url\n";
- return;
- }
-
- my $result = "Path: $path\n";
- $result .= "Name: " . basename($path) . "\n" if $file_type ne "dir";
-- $result .= "URL: " . escape_url($full_url) . "\n";
-+ $result .= "URL: $full_url\n";
-
- eval {
- my $repos_root = $gs->repos_root;
- Git::SVN::remove_username($repos_root);
-- $result .= "Repository Root: " . escape_url($repos_root) . "\n";
-+ $result .= "Repository Root: " . canonicalize_url($repos_root) . "\n";
- };
- if ($@) {
- $result .= "Repository Root: (offline)\n";
-@@ -1669,7 +1635,9 @@ sub post_fetch_checkout {
-
- sub complete_svn_url {
- my ($url, $path) = @_;
-- $path =~ s#/+$##;
-+ $path = canonicalize_path($path);
-+
-+ # If the path is not a URL...
- if ($path !~ m#^[a-z\+]+://#) {
- if (!defined $url || $url !~ m#^[a-z\+]+://#) {
- fatal("E: '$path' is not a complete URL ",
-@@ -1686,7 +1654,7 @@ sub complete_url_ls_init {
- print STDERR "W: $switch not specified\n";
- return;
- }
-- $repo_path =~ s#/+$##;
-+ $repo_path = canonicalize_path($repo_path);
- if ($repo_path =~ m#^[a-z\+]+://#) {
- $ra = Git::SVN::Ra->new($repo_path);
- $repo_path = '';
-@@ -1697,18 +1665,18 @@ sub complete_url_ls_init {
- "and a separate URL is not specified");
- }
- }
-- my $url = $ra->{url};
-+ my $url = $ra->url;
- my $gs = Git::SVN->init($url, undef, undef, undef, 1);
- my $k = "svn-remote.$gs->{repo_id}.url";
- my $orig_url = eval { command_oneline(qw/config --get/, $k) };
-- if ($orig_url && ($orig_url ne $gs->{url})) {
-+ if ($orig_url && ($orig_url ne $gs->url)) {
- die "$k already set: $orig_url\n",
-- "wanted to set to: $gs->{url}\n";
-+ "wanted to set to: $gs->url\n";
- }
-- command_oneline('config', $k, $gs->{url}) unless $orig_url;
-- my $remote_path = "$gs->{path}/$repo_path";
-+ command_oneline('config', $k, $gs->url) unless $orig_url;
-+
-+ my $remote_path = join_paths( $gs->path, $repo_path );
- $remote_path =~ s{%([0-9A-F]{2})}{chr hex($1)}ieg;
-- $remote_path =~ s#/+#/#g;
- $remote_path =~ s#^/##g;
- $remote_path .= "/*" if $remote_path !~ /\*/;
- my ($n) = ($switch =~ /^--(\w+)/);
-diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
-index 8478d0c..acb2539 100644
---- a/perl/Git/SVN.pm
-+++ b/perl/Git/SVN.pm
-@@ -23,7 +23,14 @@ use Git qw(
- command_output_pipe
- command_close_pipe
- );
--use Git::SVN::Utils qw(fatal can_compress);
-+use Git::SVN::Utils qw(
-+ fatal
-+ can_compress
-+ join_paths
-+ canonicalize_path
-+ canonicalize_url
-+ add_path_to_url
-+);
-
- my $can_use_yaml;
- BEGIN {
-@@ -195,9 +202,9 @@ sub read_all_remotes {
- } elsif (m!^(.+)\.usesvmprops=\s*(.*)\s*$!) {
- $r->{$1}->{svm} = {};
- } elsif (m!^(.+)\.url=\s*(.*)\s*$!) {
-- $r->{$1}->{url} = $2;
-+ $r->{$1}->{url} = canonicalize_url($2);
- } elsif (m!^(.+)\.pushurl=\s*(.*)\s*$!) {
-- $r->{$1}->{pushurl} = $2;
-+ $r->{$1}->{pushurl} = canonicalize_url($2);
- } elsif (m!^(.+)\.ignore-refs=\s*(.*)\s*$!) {
- $r->{$1}->{ignore_refs_regex} = $2;
- } elsif (m!^(.+)\.(branches|tags)=$svn_refspec$!) {
-@@ -290,7 +297,7 @@ sub find_existing_remote {
-
- sub init_remote_config {
- my ($self, $url, $no_write) = @_;
-- $url =~ s!/+$!!; # strip trailing slash
-+ $url = canonicalize_url($url);
- my $r = read_all_remotes();
- my $existing = find_existing_remote($url, $r);
- if ($existing) {
-@@ -314,12 +321,10 @@ sub init_remote_config {
- print STDERR "Using higher level of URL: ",
- "$url => $min_url\n";
- }
-- my $old_path = $self->{path};
-- $self->{path} = $url;
-- $self->{path} =~ s!^\Q$min_url\E(/|$)!!;
-- if (length $old_path) {
-- $self->{path} .= "/$old_path";
-- }
-+ my $old_path = $self->path;
-+ $url =~ s!^\Q$min_url\E(/|$)!!;
-+ $url = join_paths($url, $old_path);
-+ $self->path($url);
- $url = $min_url;
- }
- }
-@@ -343,18 +348,22 @@ sub init_remote_config {
- unless ($no_write) {
- command_noisy('config',
- "svn-remote.$self->{repo_id}.url", $url);
-- $self->{path} =~ s{^/}{};
-- $self->{path} =~ s{%([0-9A-F]{2})}{chr hex($1)}ieg;
-+ my $path = $self->path;
-+ $path =~ s{^/}{};
-+ $path =~ s{%([0-9A-F]{2})}{chr hex($1)}ieg;
-+ $self->path($path);
- command_noisy('config', '--add',
- "svn-remote.$self->{repo_id}.fetch",
-- "$self->{path}:".$self->refname);
-+ $self->path.":".$self->refname);
- }
-- $self->{url} = $url;
-+ $self->url($url);
- }
-
- sub find_by_url { # repos_root and, path are optional
- my ($class, $full_url, $repos_root, $path) = @_;
-
-+ $full_url = canonicalize_url($full_url);
-+
- return undef unless defined $full_url;
- remove_username($full_url);
- remove_username($repos_root) if defined $repos_root;
-@@ -393,6 +402,11 @@ sub find_by_url { # repos_root and, path are optional
- }
- $p =~ s#^\Q$z\E(?:/|$)#$prefix# or next;
- }
-+
-+ # remote fetch paths are not URI escaped. Decode ours
-+ # so they match
-+ $p = uri_decode($p);
-+
- foreach my $f (keys %$fetch) {
- next if $f ne $p;
- return Git::SVN->new($fetch->{$f}, $repo_id, $f);
-@@ -435,20 +449,25 @@ sub new {
- }
- }
- my $self = _new($class, $repo_id, $ref_id, $path);
-- if (!defined $self->{path} || !length $self->{path}) {
-+ if (!defined $self->path || !length $self->path) {
- my $fetch = command_oneline('config', '--get',
- "svn-remote.$repo_id.fetch",
- ":$ref_id\$") or
- die "Failed to read \"svn-remote.$repo_id.fetch\" ",
- "\":$ref_id\$\" in config\n";
-- ($self->{path}, undef) = split(/\s*:\s*/, $fetch);
-+ my($path) = split(/\s*:\s*/, $fetch);
-+ $self->path($path);
- }
-- $self->{path} =~ s{/+}{/}g;
-- $self->{path} =~ s{\A/}{};
-- $self->{path} =~ s{/\z}{};
-- $self->{url} = command_oneline('config', '--get',
-- "svn-remote.$repo_id.url") or
-+ {
-+ my $path = $self->path;
-+ $path =~ s{\A/}{};
-+ $path =~ s{/\z}{};
-+ $self->path($path);
-+ }
-+ my $url = command_oneline('config', '--get',
-+ "svn-remote.$repo_id.url") or
- die "Failed to read \"svn-remote.$repo_id.url\" in config\n";
-+ $self->url($url);
- $self->{pushurl} = eval { command_oneline('config', '--get',
- "svn-remote.$repo_id.pushurl") };
- $self->rebuild;
-@@ -552,8 +571,7 @@ sub _set_svm_vars {
- # username is of no interest
- $src =~ s{(^[a-z\+]*://)[^/@]*@}{$1};
-
-- my $replace = $ra->{url};
-- $replace .= "/$path" if length $path;
-+ my $replace = add_path_to_url($ra->url, $path);
-
- my $section = "svn-remote.$self->{repo_id}";
- tmp_config("$section.svm-source", $src);
-@@ -567,20 +585,21 @@ sub _set_svm_vars {
- }
-
- my $r = $ra->get_latest_revnum;
-- my $path = $self->{path};
-+ my $path = $self->path;
- my %tried;
- while (length $path) {
-- unless ($tried{"$self->{url}/$path"}) {
-+ my $try = add_path_to_url($self->url, $path);
-+ unless ($tried{$try}) {
- return $ra if $self->read_svm_props($ra, $path, $r);
-- $tried{"$self->{url}/$path"} = 1;
-+ $tried{$try} = 1;
- }
- $path =~ s#/?[^/]+$##;
- }
- die "Path: '$path' should be ''\n" if $path ne '';
- return $ra if $self->read_svm_props($ra, $path, $r);
-- $tried{"$self->{url}/$path"} = 1;
-+ $tried{ add_path_to_url($self->url, $path) } = 1;
-
-- if ($ra->{repos_root} eq $self->{url}) {
-+ if ($ra->{repos_root} eq $self->url) {
- die @err, (map { " $_\n" } keys %tried), "\n";
- }
-
-@@ -590,20 +609,21 @@ sub _set_svm_vars {
- $path = $ra->{svn_path};
- $ra = Git::SVN::Ra->new($ra->{repos_root});
- while (length $path) {
-- unless ($tried{"$ra->{url}/$path"}) {
-+ my $try = add_path_to_url($ra->url, $path);
-+ unless ($tried{$try}) {
- $ok = $self->read_svm_props($ra, $path, $r);
- last if $ok;
-- $tried{"$ra->{url}/$path"} = 1;
-+ $tried{$try} = 1;
- }
- $path =~ s#/?[^/]+$##;
- }
- die "Path: '$path' should be ''\n" if $path ne '';
- $ok ||= $self->read_svm_props($ra, $path, $r);
-- $tried{"$ra->{url}/$path"} = 1;
-+ $tried{ add_path_to_url($ra->url, $path) } = 1;
- if (!$ok) {
- die @err, (map { " $_\n" } keys %tried), "\n";
- }
-- Git::SVN::Ra->new($self->{url});
-+ Git::SVN::Ra->new($self->url);
- }
-
- sub svnsync {
-@@ -670,7 +690,7 @@ sub ra_uuid {
- if (!$@ && $uuid && $uuid =~ /^([a-f\d\-]{30,})$/i) {
- $self->{ra_uuid} = $uuid;
- } else {
-- die "ra_uuid called without URL\n" unless $self->{url};
-+ die "ra_uuid called without URL\n" unless $self->url;
- $self->{ra_uuid} = $self->ra->get_uuid;
- tmp_config('--add', $key, $self->{ra_uuid});
- }
-@@ -694,7 +714,7 @@ sub repos_root {
-
- sub ra {
- my ($self) = shift;
-- my $ra = Git::SVN::Ra->new($self->{url});
-+ my $ra = Git::SVN::Ra->new($self->url);
- $self->_set_repos_root($ra->{repos_root});
- if ($self->use_svm_props && !$self->{svm}) {
- if ($self->no_metadata) {
-@@ -728,7 +748,7 @@ sub prop_walk {
- $path =~ s#^/*#/#g;
- my $p = $path;
- # Strip the irrelevant part of the path.
-- $p =~ s#^/+\Q$self->{path}\E(/|$)#/#;
-+ $p =~ s#^/+\Q@{[$self->path]}\E(/|$)#/#;
- # Ensure the path is terminated by a `/'.
- $p =~ s#/*$#/#;
-
-@@ -749,7 +769,7 @@ sub prop_walk {
-
- foreach (sort keys %$dirent) {
- next if $dirent->{$_}->{kind} != $SVN::Node::dir;
-- $self->prop_walk($self->{path} . $p . $_, $rev, $sub);
-+ $self->prop_walk($self->path . $p . $_, $rev, $sub);
- }
- }
-
-@@ -919,20 +939,19 @@ sub rewrite_uuid {
-
- sub metadata_url {
- my ($self) = @_;
-- ($self->rewrite_root || $self->{url}) .
-- (length $self->{path} ? '/' . $self->{path} : '');
-+ my $url = $self->rewrite_root || $self->url;
-+ return canonicalize_url( add_path_to_url( $url, $self->path ) );
- }
-
- sub full_url {
- my ($self) = @_;
-- $self->{url} . (length $self->{path} ? '/' . $self->{path} : '');
-+ return canonicalize_url( add_path_to_url( $self->url, $self->path ) );
- }
-
- sub full_pushurl {
- my ($self) = @_;
- if ($self->{pushurl}) {
-- return $self->{pushurl} . (length $self->{path} ? '/' .
-- $self->{path} : '');
-+ return canonicalize_url( add_path_to_url( $self->{pushurl}, $self->path ) );
- } else {
- return $self->full_url;
- }
-@@ -1048,20 +1067,20 @@ sub do_git_commit {
-
- sub match_paths {
- my ($self, $paths, $r) = @_;
-- return 1 if $self->{path} eq '';
-- if (my $path = $paths->{"/$self->{path}"}) {
-+ return 1 if $self->path eq '';
-+ if (my $path = $paths->{"/".$self->path}) {
- return ($path->{action} eq 'D') ? 0 : 1;
- }
-- $self->{path_regex} ||= qr/^\/\Q$self->{path}\E\//;
-+ $self->{path_regex} ||= qr{^/\Q@{[$self->path]}\E/};
- if (grep /$self->{path_regex}/, keys %$paths) {
- return 1;
- }
- my $c = '';
-- foreach (split m#/#, $self->{path}) {
-+ foreach (split m#/#, $self->path) {
- $c .= "/$_";
- next unless ($paths->{$c} &&
- ($paths->{$c}->{action} =~ /^[AR]$/));
-- if ($self->ra->check_path($self->{path}, $r) ==
-+ if ($self->ra->check_path($self->path, $r) ==
- $SVN::Node::dir) {
- return 1;
- }
-@@ -1075,14 +1094,14 @@ sub find_parent_branch {
- unless (defined $paths) {
- my $err_handler = $SVN::Error::handler;
- $SVN::Error::handler = \&Git::SVN::Ra::skip_unknown_revs;
-- $self->ra->get_log([$self->{path}], $rev, $rev, 0, 1, 1,
-+ $self->ra->get_log([$self->path], $rev, $rev, 0, 1, 1,
- sub { $paths = $_[0] });
- $SVN::Error::handler = $err_handler;
- }
- return undef unless defined $paths;
-
- # look for a parent from another branch:
-- my @b_path_components = split m#/#, $self->{path};
-+ my @b_path_components = split m#/#, $self->path;
- my @a_path_components;
- my $i;
- while (@b_path_components) {
-@@ -1099,8 +1118,8 @@ sub find_parent_branch {
- }
- my $r = $i->{copyfrom_rev};
- my $repos_root = $self->ra->{repos_root};
-- my $url = $self->ra->{url};
-- my $new_url = $url . $branch_from;
-+ my $url = $self->ra->url;
-+ my $new_url = canonicalize_url( add_path_to_url( $url, $branch_from ) );
- print STDERR "Found possible branch point: ",
- "$new_url => ", $self->full_url, ", $r\n"
- unless $::_q > 1;
-@@ -1114,7 +1133,7 @@ sub find_parent_branch {
- ($base, $head) = parse_revision_argument(0, $r);
- } else {
- if ($r0 < $r) {
-- $gs->ra->get_log([$gs->{path}], $r0 + 1, $r, 1,
-+ $gs->ra->get_log([$gs->path], $r0 + 1, $r, 1,
- 0, 1, sub { $base = $_[1] - 1 });
- }
- }
-@@ -1136,7 +1155,7 @@ sub find_parent_branch {
- # at the moment), so we can't rely on it
- $self->{last_rev} = $r0;
- $self->{last_commit} = $parent;
-- $ed = Git::SVN::Fetcher->new($self, $gs->{path});
-+ $ed = Git::SVN::Fetcher->new($self, $gs->path);
- $gs->ra->gs_do_switch($r0, $rev, $gs,
- $self->full_url, $ed)
- or die "SVN connection failed somewhere...\n";
-@@ -1235,7 +1254,7 @@ sub mkemptydirs {
- close $fh;
- }
-
-- my $strip = qr/\A\Q$self->{path}\E(?:\/|$)/;
-+ my $strip = qr/\A\Q@{[$self->path]}\E(?:\/|$)/;
- foreach my $d (sort keys %empty_dirs) {
- $d = uri_decode($d);
- $d =~ s/$strip//;
-@@ -1429,12 +1448,11 @@ sub find_extra_svk_parents {
- for my $ticket ( @tickets ) {
- my ($uuid, $path, $rev) = split /:/, $ticket;
- if ( $uuid eq $self->ra_uuid ) {
-- my $url = $self->{url};
-- my $repos_root = $url;
-+ my $repos_root = $self->url;
- my $branch_from = $path;
- $branch_from =~ s{^/}{};
-- my $gs = $self->other_gs($repos_root."/".$branch_from,
-- $url,
-+ my $gs = $self->other_gs(add_path_to_url( $repos_root, $branch_from ),
-+ $repos_root,
- $branch_from,
- $rev,
- $self->{ref_id});
-@@ -1693,7 +1711,7 @@ sub find_extra_svn_parents {
- # are now marked as merge, we can add the tip as a parent.
- my @merges = split "\n", $mergeinfo;
- my @merge_tips;
-- my $url = $self->{url};
-+ my $url = $self->url;
- my $uuid = $self->ra_uuid;
- my %ranges;
- for my $merge ( @merges ) {
-@@ -1875,8 +1893,9 @@ sub make_log_entry {
- $email ||= "$author\@$uuid";
- $commit_email ||= "$author\@$uuid";
- } elsif ($self->use_svnsync_props) {
-- my $full_url = $self->svnsync->{url};
-- $full_url .= "/$self->{path}" if length $self->{path};
-+ my $full_url = canonicalize_url(
-+ add_path_to_url( $self->svnsync->{url}, $self->path )
-+ );
- remove_username($full_url);
- my $uuid = $self->svnsync->{uuid};
- $log_entry{metadata} = "$full_url\@$rev $uuid";
-@@ -1923,7 +1942,7 @@ sub set_tree {
- tree_b => $tree,
- editor_cb => sub {
- $self->set_tree_cb($log_entry, $tree, @_) },
-- svn_path => $self->{path} );
-+ svn_path => $self->path );
- if (!Git::SVN::Editor->new(\%ed_opts)->apply_diff) {
- print "No changes\nr$self->{last_rev} = $tree\n";
- }
-@@ -2299,10 +2318,39 @@ sub _new {
-
- $_[3] = $path = '' unless (defined $path);
- mkpath([$dir]);
-- bless {
-+ my $obj = bless {
- ref_id => $ref_id, dir => $dir, index => "$dir/index",
-- path => $path, config => "$ENV{GIT_DIR}/svn/config",
-+ config => "$ENV{GIT_DIR}/svn/config",
- map_root => "$dir/.rev_map", repo_id => $repo_id }, $class;
-+
-+ # Ensure it gets canonicalized
-+ $obj->path($path);
-+
-+ return $obj;
-+}
-+
-+sub path {
-+ my $self = shift;
-+
-+ if (@_) {
-+ my $path = shift;
-+ $self->{path} = canonicalize_path($path);
-+ return;
-+ }
-+
-+ return $self->{path};
-+}
-+
-+sub url {
-+ my $self = shift;
-+
-+ if (@_) {
-+ my $url = shift;
-+ $self->{url} = canonicalize_url($url);
-+ return;
-+ }
-+
-+ return $self->{url};
- }
-
- # for read-only access of old .rev_db formats
-diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm
-index 76fae9b..046a7a2 100644
---- a/perl/Git/SVN/Fetcher.pm
-+++ b/perl/Git/SVN/Fetcher.pm
-@@ -83,7 +83,7 @@ sub _mark_empty_symlinks {
- chomp(my $empty_blob = `git hash-object -t blob --stdin < /dev/null`);
- my ($ls, $ctx) = command_output_pipe(qw/ls-tree -r -z/, $cmt);
- local $/ = "\0";
-- my $pfx = defined($switch_path) ? $switch_path : $git_svn->{path};
-+ my $pfx = defined($switch_path) ? $switch_path : $git_svn->path;
- $pfx .= '/' if length($pfx);
- while (<$ls>) {
- chomp;
-diff --git a/perl/Git/SVN/Migration.pm b/perl/Git/SVN/Migration.pm
-index 75d7429..30daf35 100644
---- a/perl/Git/SVN/Migration.pm
-+++ b/perl/Git/SVN/Migration.pm
-@@ -177,14 +177,14 @@ sub minimize_connections {
- my $ra = Git::SVN::Ra->new($url);
-
- # skip existing cases where we already connect to the root
-- if (($ra->{url} eq $ra->{repos_root}) ||
-+ if (($ra->url eq $ra->{repos_root}) ||
- ($ra->{repos_root} eq $repo_id)) {
-- $root_repos->{$ra->{url}} = $repo_id;
-+ $root_repos->{$ra->url} = $repo_id;
- next;
- }
-
- my $root_ra = Git::SVN::Ra->new($ra->{repos_root});
-- my $root_path = $ra->{url};
-+ my $root_path = $ra->url;
- $root_path =~ s#^\Q$ra->{repos_root}\E(/|$)##;
- foreach my $path (keys %$fetch) {
- my $ref_id = $fetch->{$path};
-diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
-index 23ff43e..90ec30b 100644
---- a/perl/Git/SVN/Ra.pm
-+++ b/perl/Git/SVN/Ra.pm
-@@ -3,6 +3,12 @@ use vars qw/@ISA $config_dir $_ignore_refs_regex $_log_window_size/;
- use strict;
- use warnings;
- use SVN::Client;
-+use Git::SVN::Utils qw(
-+ canonicalize_url
-+ canonicalize_path
-+ add_path_to_url
-+);
-+
- use SVN::Ra;
- BEGIN {
- @ISA = qw(SVN::Ra);
-@@ -62,29 +68,11 @@ sub _auth_providers () {
- \@rv;
- }
-
--sub escape_uri_only {
-- my ($uri) = @_;
-- my @tmp;
-- foreach (split m{/}, $uri) {
-- s/([^~\w.%+-]|%(?![a-fA-F0-9]{2}))/sprintf("%%%02X",ord($1))/eg;
-- push @tmp, $_;
-- }
-- join('/', @tmp);
--}
--
--sub escape_url {
-- my ($url) = @_;
-- if ($url =~ m#^(https?)://([^/]+)(.*)$#) {
-- my ($scheme, $domain, $uri) = ($1, $2, escape_uri_only($3));
-- $url = "$scheme://$domain$uri";
-- }
-- $url;
--}
-
- sub new {
- my ($class, $url) = @_;
-- $url =~ s!/+$!!;
-- return $RA if ($RA && $RA->{url} eq $url);
-+ $url = canonicalize_url($url);
-+ return $RA if ($RA && $RA->url eq $url);
-
- ::_req_svn();
-
-@@ -115,17 +103,34 @@ sub new {
- $Git::SVN::Prompt::_no_auth_cache = 1;
- }
- } # no warnings 'once'
-- my $self = SVN::Ra->new(url => escape_url($url), auth => $baton,
-+
-+ my $self = SVN::Ra->new(url => $url, auth => $baton,
- config => $config,
- pool => SVN::Pool->new,
- auth_provider_callbacks => $callbacks);
-- $self->{url} = $url;
-+ $RA = bless $self, $class;
-+
-+ # Make sure its canonicalized
-+ $self->url($url);
- $self->{svn_path} = $url;
- $self->{repos_root} = $self->get_repos_root;
- $self->{svn_path} =~ s#^\Q$self->{repos_root}\E(/|$)##;
- $self->{cache} = { check_path => { r => 0, data => {} },
- get_dir => { r => 0, data => {} } };
-- $RA = bless $self, $class;
-+
-+ return $RA;
-+}
-+
-+sub url {
-+ my $self = shift;
-+
-+ if (@_) {
-+ my $url = shift;
-+ $self->{url} = canonicalize_url($url);
-+ return;
-+ }
-+
-+ return $self->{url};
- }
-
- sub check_path {
-@@ -195,6 +200,7 @@ sub get_log {
- qw/copyfrom_path copyfrom_rev action/;
- if ($s{'copyfrom_path'}) {
- $s{'copyfrom_path'} =~ s/$prefix_regex//;
-+ $s{'copyfrom_path'} = canonicalize_path($s{'copyfrom_path'});
- }
- $_[0]{$p} = \%s;
- }
-@@ -246,7 +252,7 @@ sub get_commit_editor {
- sub gs_do_update {
- my ($self, $rev_a, $rev_b, $gs, $editor) = @_;
- my $new = ($rev_a == $rev_b);
-- my $path = $gs->{path};
-+ my $path = $gs->path;
-
- if ($new && -e $gs->{index}) {
- unlink $gs->{index} or die
-@@ -282,30 +288,33 @@ sub gs_do_update {
- # svn_ra_reparent didn't work before 1.4)
- sub gs_do_switch {
- my ($self, $rev_a, $rev_b, $gs, $url_b, $editor) = @_;
-- my $path = $gs->{path};
-+ my $path = $gs->path;
- my $pool = SVN::Pool->new;
-
-- my $full_url = $self->{url};
-- my $old_url = $full_url;
-- $full_url .= '/' . $path if length $path;
-+ my $old_url = $self->url;
-+ my $full_url = add_path_to_url( $self->url, $path );
- my ($ra, $reparented);
-
- if ($old_url =~ m#^svn(\+ssh)?://# ||
- ($full_url =~ m#^https?://# &&
-- escape_url($full_url) ne $full_url)) {
-+ canonicalize_url($full_url) ne $full_url)) {
- $_[0] = undef;
- $self = undef;
- $RA = undef;
- $ra = Git::SVN::Ra->new($full_url);
- $ra_invalid = 1;
- } elsif ($old_url ne $full_url) {
-- SVN::_Ra::svn_ra_reparent($self->{session}, $full_url, $pool);
-- $self->{url} = $full_url;
-+ SVN::_Ra::svn_ra_reparent(
-+ $self->{session},
-+ canonicalize_url($full_url),
-+ $pool
-+ );
-+ $self->url($full_url);
- $reparented = 1;
- }
-
- $ra ||= $self;
-- $url_b = escape_url($url_b);
-+ $url_b = canonicalize_url($url_b);
- my $reporter = $ra->do_switch($rev_b, '', 1, $url_b, $editor, $pool);
- my @lock = (::compare_svn_version('1.2.0') >= 0) ? (undef) : ();
- $reporter->set_path('', $rev_a, 0, @lock, $pool);
-@@ -313,7 +322,7 @@ sub gs_do_switch {
-
- if ($reparented) {
- SVN::_Ra::svn_ra_reparent($self->{session}, $old_url, $pool);
-- $self->{url} = $old_url;
-+ $self->url($old_url);
- }
-
- $pool->clear;
-@@ -326,7 +335,7 @@ sub longest_common_path {
- my $common_max = scalar @$gsv;
-
- foreach my $gs (@$gsv) {
-- my @tmp = split m#/#, $gs->{path};
-+ my @tmp = split m#/#, $gs->path;
- my $p = '';
- foreach (@tmp) {
- $p .= length($p) ? "/$_" : $_;
-@@ -362,7 +371,7 @@ sub gs_fetch_loop_common {
- my $inc = $_log_window_size;
- my ($min, $max) = ($base, $head < $base + $inc ? $head : $base + $inc);
- my $longest_path = longest_common_path($gsv, $globs);
-- my $ra_url = $self->{url};
-+ my $ra_url = $self->url;
- my $find_trailing_edge;
- while (1) {
- my %revs;
-@@ -508,7 +517,7 @@ sub match_globs {
- ($self->check_path($p, $r) !=
- $SVN::Node::dir));
- next unless $p =~ /$g->{path}->{regex}/;
-- $exists->{$p} = Git::SVN->init($self->{url}, $p, undef,
-+ $exists->{$p} = Git::SVN->init($self->url, $p, undef,
- $g->{ref}->full_path($de), 1);
- }
- }
-@@ -532,7 +541,7 @@ sub match_globs {
- next if ($self->check_path($pathname, $r) !=
- $SVN::Node::dir);
- $exists->{$pathname} = Git::SVN->init(
-- $self->{url}, $pathname, undef,
-+ $self->url, $pathname, undef,
- $g->{ref}->full_path($p), 1);
- }
- my $c = '';
-@@ -548,19 +557,20 @@ sub match_globs {
-
- sub minimize_url {
- my ($self) = @_;
-- return $self->{url} if ($self->{url} eq $self->{repos_root});
-+ return $self->url if ($self->url eq $self->{repos_root});
- my $url = $self->{repos_root};
- my @components = split(m!/!, $self->{svn_path});
- my $c = '';
- do {
-- $url .= "/$c" if length $c;
-+ $url = add_path_to_url($url, $c);
- eval {
- my $ra = (ref $self)->new($url);
- my $latest = $ra->get_latest_revnum;
- $ra->get_log("", $latest, 0, 1, 0, 1, sub {});
- };
- } while ($@ && ($c = shift @components));
-- $url;
-+
-+ return canonicalize_url($url);
- }
-
- sub can_do_switch {
-@@ -568,7 +578,7 @@ sub can_do_switch {
- unless (defined $can_do_switch) {
- my $pool = SVN::Pool->new;
- my $rep = eval {
-- $self->do_switch(1, '', 0, $self->{url},
-+ $self->do_switch(1, '', 0, $self->url,
- SVN::Delta::Editor->new, $pool);
- };
- if ($@) {
-diff --git a/perl/Git/SVN/Utils.pm b/perl/Git/SVN/Utils.pm
-index 496006b..4bb4dde 100644
---- a/perl/Git/SVN/Utils.pm
-+++ b/perl/Git/SVN/Utils.pm
-@@ -3,9 +3,18 @@ package Git::SVN::Utils;
- use strict;
- use warnings;
-
-+use SVN::Core;
-+
- use base qw(Exporter);
-
--our @EXPORT_OK = qw(fatal can_compress);
-+our @EXPORT_OK = qw(
-+ fatal
-+ can_compress
-+ canonicalize_path
-+ canonicalize_url
-+ join_paths
-+ add_path_to_url
-+);
-
-
- =head1 NAME
-@@ -56,4 +65,169 @@ sub can_compress {
- }
-
-
-+=head3 canonicalize_path
-+
-+ my $canoncalized_path = canonicalize_path($path);
-+
-+Converts $path into a canonical form which is safe to pass to the SVN
-+API as a file path.
-+
-+=cut
-+
-+# Turn foo/../bar into bar
-+sub _collapse_dotdot {
-+ my $path = shift;
-+
-+ 1 while $path =~ s{/[^/]+/+\.\.}{};
-+ 1 while $path =~ s{[^/]+/+\.\./}{};
-+ 1 while $path =~ s{[^/]+/+\.\.}{};
-+
-+ return $path;
-+}
-+
-+
-+sub canonicalize_path {
-+ my $path = shift;
-+ my $rv;
-+
-+ # The 1.7 way to do it
-+ if ( defined &SVN::_Core::svn_dirent_canonicalize ) {
-+ $path = _collapse_dotdot($path);
-+ $rv = SVN::_Core::svn_dirent_canonicalize($path);
-+ }
-+ # The 1.6 way to do it
-+ # This can return undef on subversion-perl-1.4.2-2.el5 (CentOS 5.2)
-+ elsif ( defined &SVN::_Core::svn_path_canonicalize ) {
-+ $path = _collapse_dotdot($path);
-+ $rv = SVN::_Core::svn_path_canonicalize($path);
-+ }
-+
-+ return $rv if defined $rv;
-+
-+ # No SVN API canonicalization is available, or the SVN API
-+ # didn't return a successful result, do it ourselves
-+ return _canonicalize_path_ourselves($path);
-+}
-+
-+
-+sub _canonicalize_path_ourselves {
-+ my ($path) = @_;
-+ my $dot_slash_added = 0;
-+ if (substr($path, 0, 1) ne "/") {
-+ $path = "./" . $path;
-+ $dot_slash_added = 1;
-+ }
-+ $path =~ s#/+#/#g;
-+ $path =~ s#/\.(?:/|$)#/#g;
-+ $path = _collapse_dotdot($path);
-+ $path =~ s#/$##g;
-+ $path =~ s#^\./## if $dot_slash_added;
-+ $path =~ s#^/##;
-+ $path =~ s#^\.$##;
-+ return $path;
-+}
-+
-+
-+=head3 canonicalize_url
-+
-+ my $canonicalized_url = canonicalize_url($url);
-+
-+Converts $url into a canonical form which is safe to pass to the SVN
-+API as a URL.
-+
-+=cut
-+
-+sub canonicalize_url {
-+ my $url = shift;
-+
-+ # The 1.7 way to do it
-+ if ( defined &SVN::_Core::svn_uri_canonicalize ) {
-+ return SVN::_Core::svn_uri_canonicalize($url);
-+ }
-+ # There wasn't a 1.6 way to do it, so we do it ourself.
-+ else {
-+ return _canonicalize_url_ourselves($url);
-+ }
-+}
-+
-+
-+sub _canonicalize_url_path {
-+ my ($uri_path) = @_;
-+
-+ my @parts;
-+ foreach my $part (split m{/+}, $uri_path) {
-+ $part =~ s/([^~\w.%+-]|%(?![a-fA-F0-9]{2}))/sprintf("%%%02X",ord($1))/eg;
-+ push @parts, $part;
-+ }
-+
-+ return join('/', @parts);
-+}
-+
-+sub _canonicalize_url_ourselves {
-+ my ($url) = @_;
-+ if ($url =~ m#^([^:]+)://([^/]*)(.*)$#) {
-+ my ($scheme, $domain, $uri) = ($1, $2, _canonicalize_url_path(canonicalize_path($3)));
-+ $url = "$scheme://$domain$uri";
-+ }
-+ $url;
-+}
-+
-+
-+=head3 join_paths
-+
-+ my $new_path = join_paths(@paths);
-+
-+Appends @paths together into a single path. Any empty paths are ignored.
-+
-+=cut
-+
-+sub join_paths {
-+ my @paths = @_;
-+
-+ @paths = grep { defined $_ && length $_ } @paths;
-+
-+ return '' unless @paths;
-+ return $paths[0] if @paths == 1;
-+
-+ my $new_path = shift @paths;
-+ $new_path =~ s{/+$}{};
-+
-+ my $last_path = pop @paths;
-+ $last_path =~ s{^/+}{};
-+
-+ for my $path (@paths) {
-+ $path =~ s{^/+}{};
-+ $path =~ s{/+$}{};
-+ $new_path .= "/$path";
-+ }
-+
-+ return $new_path .= "/$last_path";
-+}
-+
-+
-+=head3 add_path_to_url
-+
-+ my $new_url = add_path_to_url($url, $path);
-+
-+Appends $path onto the $url. If $path is empty, $url is returned unchanged.
-+
-+=cut
-+
-+sub add_path_to_url {
-+ my($url, $path) = @_;
-+
-+ return $url if !defined $path or !length $path;
-+
-+ # Strip trailing and leading slashes so we don't
-+ # wind up with http://x.com///path
-+ $url =~ s{/+$}{};
-+ $path =~ s{^/+}{};
-+
-+ # If a path has a % in it, URI escape it so it's not
-+ # mistaken for a URI escape later.
-+ $path =~ s{%}{%25}g;
-+
-+ return join '/', $url, $path;
-+}
-+
- 1;
-diff --git a/t/Git-SVN/Utils/add_path_to_url.t b/t/Git-SVN/Utils/add_path_to_url.t
-new file mode 100644
-index 0000000..bfbd878
---- /dev/null
-+++ b/t/Git-SVN/Utils/add_path_to_url.t
-@@ -0,0 +1,27 @@
-+#!/usr/bin/env perl
-+
-+use strict;
-+use warnings;
-+
-+use Test::More 'no_plan';
-+
-+use Git::SVN::Utils qw(
-+ add_path_to_url
-+);
-+
-+# A reference cannot be a hash key, so we use an array.
-+my @tests = (
-+ ["http://x.com", "bar"] => 'http://x.com/bar',
-+ ["http://x.com", ""] => 'http://x.com',
-+ ["http://x.com/foo/", undef] => 'http://x.com/foo/',
-+ ["http://x.com/foo/", "/bar/baz/"] => 'http://x.com/foo/bar/baz/',
-+ ["http://x.com", 'per%cent'] => 'http://x.com/per%25cent',
-+);
-+
-+while(@tests) {
-+ my($have, $want) = splice @tests, 0, 2;
-+
-+ my $args = join ", ", map { qq['$_'] } map { defined($_) ? $_ : 'undef' } @$have;
-+ my $name = "add_path_to_url($args) eq $want";
-+ is add_path_to_url(@$have), $want, $name;
-+}
-diff --git a/t/Git-SVN/Utils/canonicalize_url.t b/t/Git-SVN/Utils/canonicalize_url.t
-new file mode 100644
-index 0000000..05795ab
---- /dev/null
-+++ b/t/Git-SVN/Utils/canonicalize_url.t
-@@ -0,0 +1,26 @@
-+#!/usr/bin/env perl
-+
-+# Test our own home rolled URL canonicalizer. Test the private one
-+# directly because we can't predict what the SVN API is doing to do.
-+
-+use strict;
-+use warnings;
-+
-+use Test::More 'no_plan';
-+
-+use Git::SVN::Utils;
-+my $canonicalize_url = \&Git::SVN::Utils::_canonicalize_url_ourselves;
-+
-+my %tests = (
-+ "http://x.com" => "http://x.com",
-+ "http://x.com/" => "http://x.com",
-+ "http://x.com/foo/bar" => "http://x.com/foo/bar",
-+ "http://x.com//foo//bar//" => "http://x.com/foo/bar",
-+ "http://x.com/ /%/" => "http://x.com/%20%20/%25",
-+);
-+
-+for my $arg (keys %tests) {
-+ my $want = $tests{$arg};
-+
-+ is $canonicalize_url->($arg), $want, "canonicalize_url('$arg') => $want";
-+}
-diff --git a/t/Git-SVN/Utils/collapse_dotdot.t b/t/Git-SVN/Utils/collapse_dotdot.t
-new file mode 100644
-index 0000000..1da1cce
---- /dev/null
-+++ b/t/Git-SVN/Utils/collapse_dotdot.t
-@@ -0,0 +1,23 @@
-+#!/usr/bin/env perl
-+
-+use strict;
-+use warnings;
-+
-+use Test::More 'no_plan';
-+
-+use Git::SVN::Utils;
-+my $collapse_dotdot = \&Git::SVN::Utils::_collapse_dotdot;
-+
-+my %tests = (
-+ "foo/bar/baz" => "foo/bar/baz",
-+ ".." => "..",
-+ "foo/.." => "",
-+ "/foo/bar/../../baz" => "/baz",
-+ "deeply/.././deeply/nested" => "./deeply/nested",
-+);
-+
-+for my $arg (keys %tests) {
-+ my $want = $tests{$arg};
-+
-+ is $collapse_dotdot->($arg), $want, "_collapse_dotdot('$arg') => $want";
-+}
-diff --git a/t/Git-SVN/Utils/join_paths.t b/t/Git-SVN/Utils/join_paths.t
-new file mode 100644
-index 0000000..d4488e7
---- /dev/null
-+++ b/t/Git-SVN/Utils/join_paths.t
-@@ -0,0 +1,32 @@
-+#!/usr/bin/env perl
-+
-+use strict;
-+use warnings;
-+
-+use Test::More 'no_plan';
-+
-+use Git::SVN::Utils qw(
-+ join_paths
-+);
-+
-+# A reference cannot be a hash key, so we use an array.
-+my @tests = (
-+ [] => '',
-+ ["/x.com", "bar"] => '/x.com/bar',
-+ ["x.com", ""] => 'x.com',
-+ ["/x.com/foo/", undef, "bar"] => '/x.com/foo/bar',
-+ ["x.com/foo/", "/bar/baz/"] => 'x.com/foo/bar/baz/',
-+ ["foo", "bar"] => 'foo/bar',
-+ ["/foo/bar", "baz", "/biff"] => '/foo/bar/baz/biff',
-+ ["", undef, "."] => '.',
-+ [] => '',
-+
-+);
-+
-+while(@tests) {
-+ my($have, $want) = splice @tests, 0, 2;
-+
-+ my $args = join ", ", map { qq['$_'] } map { defined($_) ? $_ : 'undef' } @$have;
-+ my $name = "join_paths($args) eq '$want'";
-+ is join_paths(@$have), $want, $name;
-+}
-diff --git a/t/t9107-git-svn-migrate.sh b/t/t9107-git-svn-migrate.sh
-index 289fc31..ee73013 100755
---- a/t/t9107-git-svn-migrate.sh
-+++ b/t/t9107-git-svn-migrate.sh
-@@ -27,15 +27,17 @@ test_expect_success 'setup old-looking metadata' '
- head=`git rev-parse --verify refs/heads/git-svn-HEAD^0`
- test_expect_success 'git-svn-HEAD is a real HEAD' "test -n '$head'"
-
-+svnrepo_escaped=`echo $svnrepo | sed 's/ /%20/'`
-+
- test_expect_success 'initialize old-style (v0) git svn layout' '
- mkdir -p "$GIT_DIR"/git-svn/info "$GIT_DIR"/svn/info &&
- echo "$svnrepo" > "$GIT_DIR"/git-svn/info/url &&
- echo "$svnrepo" > "$GIT_DIR"/svn/info/url &&
- git svn migrate &&
-- ! test -d "$GIT_DIR"/git svn &&
-+ ! test -d "$GIT_DIR"/git-svn &&
- git rev-parse --verify refs/${remotes_git_svn}^0 &&
- git rev-parse --verify refs/remotes/svn^0 &&
-- test "$(git config --get svn-remote.svn.url)" = "$svnrepo" &&
-+ test "$(git config --get svn-remote.svn.url)" = "$svnrepo_escaped" &&
- test `git config --get svn-remote.svn.fetch` = \
- ":refs/${remotes_git_svn}"
- '
-diff --git a/t/t9118-git-svn-funky-branch-names.sh b/t/t9118-git-svn-funky-branch-names.sh
-index 63fc982..193d3ca 100755
---- a/t/t9118-git-svn-funky-branch-names.sh
-+++ b/t/t9118-git-svn-funky-branch-names.sh
-@@ -32,6 +32,11 @@ test_expect_success 'setup svnrepo' '
- start_httpd
- '
-
-+# SVN 1.7 will truncate "not-a%40{0]" to just "not-a".
-+# Look at what SVN wound up naming the branch and use that.
-+# Be sure to escape the @ if it shows up.
-+non_reflog=`svn_cmd ls "$svnrepo/pr ject/branches" | grep not-a | sed 's/\///' | sed 's/@/%40/'`
-+
- test_expect_success 'test clone with funky branch names' '
- git svn clone -s "$svnrepo/pr ject" project &&
- (
-@@ -42,7 +47,7 @@ test_expect_success 'test clone with funky branch names' '
- git rev-parse "refs/remotes/%2Eleading_dot" &&
- git rev-parse "refs/remotes/trailing_dot%2E" &&
- git rev-parse "refs/remotes/trailing_dotlock%2Elock" &&
-- git rev-parse "refs/remotes/not-a%40{0}reflog"
-+ git rev-parse "refs/remotes/$non_reflog"
- )
- '
-
diff --git a/dev-vcs/git/files/git-daemon-r1.initd b/dev-vcs/git/files/git-daemon-r1.initd
new file mode 100644
index 000000000000..2bc4af71b324
--- /dev/null
+++ b/dev-vcs/git/files/git-daemon-r1.initd
@@ -0,0 +1,13 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/files/git-daemon-r1.initd,v 1.1 2014/02/04 09:36:35 polynomial-c Exp $
+
+pidfile="/run/git-daemon.pid"
+command="/usr/bin/git"
+command_args="daemon --pid-file=${pidfile} --user=${GIT_USER} --group=${GIT_GROUP} ${GITDAEMON_OPTS}"
+start_stop_daemon_args="-b -p ${pidfile}"
+
+depend() {
+ use logger
+}
diff --git a/dev-vcs/git/git-1.8.1.5-r1.ebuild b/dev-vcs/git/git-1.8.1.5-r1.ebuild
index 9fcbdfb23ef2..e0daa292378e 100644
--- a/dev-vcs/git/git-1.8.1.5-r1.ebuild
+++ b/dev-vcs/git/git-1.8.1.5-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.1.5-r1.ebuild,v 1.8 2014/01/18 09:26:02 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.1.5-r1.ebuild,v 1.9 2014/02/04 09:36:35 polynomial-c Exp $
EAPI=4
@@ -211,10 +211,6 @@ src_unpack() {
}
src_prepare() {
- # bug #418431 - stated for upstream 1.7.13. Developed by Michael Schwern,
- # funded as a bounty by the Gentoo Foundation. Merged upstream in 1.8.0.
- #epatch "${FILESDIR}"/git-1.7.12-git-svn-backport.patch
-
# bug #350330 - automagic CVS when we don't want it is bad.
epatch "${FILESDIR}"/git-1.7.12-optional-cvs.patch
diff --git a/dev-vcs/git/git-1.8.1.5.ebuild b/dev-vcs/git/git-1.8.1.5.ebuild
index d2c9592092fd..ec16c64c4f7d 100644
--- a/dev-vcs/git/git-1.8.1.5.ebuild
+++ b/dev-vcs/git/git-1.8.1.5.ebuild
@@ -1,6 +1,6 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.1.5.ebuild,v 1.14 2013/12/11 10:27:22 polynomial-c Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.1.5.ebuild,v 1.15 2014/02/04 09:36:35 polynomial-c Exp $
EAPI=4
@@ -211,10 +211,6 @@ src_unpack() {
}
src_prepare() {
- # bug #418431 - stated for upstream 1.7.13. Developed by Michael Schwern,
- # funded as a bounty by the Gentoo Foundation. Merged upstream in 1.8.0.
- #epatch "${FILESDIR}"/git-1.7.12-git-svn-backport.patch
-
# bug #350330 - automagic CVS when we don't want it is bad.
epatch "${FILESDIR}"/git-1.7.12-optional-cvs.patch
diff --git a/dev-vcs/git/git-1.8.2.1.ebuild b/dev-vcs/git/git-1.8.2.1.ebuild
index 532b1b9a0bba..f550b861be67 100644
--- a/dev-vcs/git/git-1.8.2.1.ebuild
+++ b/dev-vcs/git/git-1.8.2.1.ebuild
@@ -1,6 +1,6 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.2.1.ebuild,v 1.6 2013/12/11 10:27:22 polynomial-c Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.2.1.ebuild,v 1.7 2014/02/04 09:36:35 polynomial-c Exp $
EAPI=4
@@ -216,10 +216,6 @@ src_unpack() {
}
src_prepare() {
- # bug #418431 - stated for upstream 1.7.13. Developed by Michael Schwern,
- # funded as a bounty by the Gentoo Foundation. Merged upstream in 1.8.0.
- #epatch "${FILESDIR}"/git-1.7.12-git-svn-backport.patch
-
# bug #350330 - automagic CVS when we don't want it is bad.
epatch "${FILESDIR}"/git-1.8.2-optional-cvs.patch
diff --git a/dev-vcs/git/git-1.8.4.5.ebuild b/dev-vcs/git/git-1.8.4.5.ebuild
index 7d63244c6fbd..5a9d52a01920 100644
--- a/dev-vcs/git/git-1.8.4.5.ebuild
+++ b/dev-vcs/git/git-1.8.4.5.ebuild
@@ -1,6 +1,6 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.4.5.ebuild,v 1.2 2013/12/11 10:27:22 polynomial-c Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.4.5.ebuild,v 1.3 2014/02/04 09:36:35 polynomial-c Exp $
EAPI=5
@@ -222,6 +222,8 @@ src_prepare() {
# bug #350330 - automagic CVS when we don't want it is bad.
epatch "${FILESDIR}"/git-1.8.4-optional-cvs.patch
+ epatch_user
+
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
@@ -357,7 +359,8 @@ src_install() {
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
- newbashcomp contrib/completion/git-prompt.sh ${PN}-prompt
+ # Not really a bash-completion file (bug #477920)
+ dodoc contrib/completion/git-prompt.sh
if use emacs ; then
elisp-install ${PN} contrib/emacs/git.{el,elc}
@@ -486,7 +489,7 @@ src_install() {
fi
if use !prefix ; then
- newinitd "${FILESDIR}"/git-daemon.initd git-daemon
+ newinitd "${FILESDIR}"/git-daemon-r1.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
@@ -610,7 +613,7 @@ pkg_postinst() {
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
- "|| ( www-servers/lighttpd www-servers/apache )"
+ "|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
}
diff --git a/dev-vcs/git/git-1.8.5.2.ebuild b/dev-vcs/git/git-1.8.5.2.ebuild
deleted file mode 100644
index 2140808098c4..000000000000
--- a/dev-vcs/git/git-1.8.5.2.ebuild
+++ /dev/null
@@ -1,642 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.5.2.ebuild,v 1.3 2014/01/04 23:22:32 dilfridge Exp $
-
-EAPI=5
-
-GENTOO_DEPEND_ON_PERL=no
-
-# bug #329479: git-remote-testgit is not multiple-version aware
-PYTHON_COMPAT=( python2_{6,7} )
-[[ ${PV} == *9999 ]] && SCM="git-2"
-EGIT_REPO_URI="git://git.kernel.org/pub/scm/git/git.git"
-
-inherit toolchain-funcs eutils elisp-common perl-module bash-completion-r1 python-single-r1 systemd ${SCM}
-
-MY_PV="${PV/_rc/.rc}"
-MY_P="${PN}-${MY_PV}"
-
-DOC_VER=${MY_PV}
-
-DESCRIPTION="GIT - the stupid content tracker, the revision control system heavily used by the Linux kernel team"
-HOMEPAGE="http://www.git-scm.com/"
-if [[ ${PV} != *9999 ]]; then
- SRC_URI_SUFFIX="gz"
- SRC_URI_GOOG="http://git-core.googlecode.com/files"
- SRC_URI_KORG="mirror://kernel/software/scm/git"
- SRC_URI="${SRC_URI_GOOG}/${MY_P}.tar.${SRC_URI_SUFFIX}
- ${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}
- ${SRC_URI_GOOG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
- ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
- doc? (
- ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
- ${SRC_URI_GOOG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
- )"
- KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd ~ia64-hpux ~x86-interix ~amd64-linux ~arm-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
-else
- SRC_URI=""
- KEYWORDS=""
-fi
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="+blksha1 +curl cgi doc emacs gnome-keyring +gpg gtk highlight +iconv mediawiki +nls +pcre +perl +python ppcsha1 tk +threads +webdav xinetd cvs subversion test"
-
-# Common to both DEPEND and RDEPEND
-CDEPEND="
- dev-libs/openssl
- sys-libs/zlib
- pcre? ( dev-libs/libpcre )
- perl? ( dev-lang/perl:=[-build(-)] )
- tk? ( dev-lang/tk )
- curl? (
- net-misc/curl
- webdav? ( dev-libs/expat )
- )
- emacs? ( virtual/emacs )
- gnome-keyring? ( gnome-base/gnome-keyring )"
-
-RDEPEND="${CDEPEND}
- gpg? ( app-crypt/gnupg )
- mediawiki? (
- dev-perl/HTML-Tree
- dev-perl/MediaWiki-API
- )
- perl? ( dev-perl/Error
- dev-perl/Net-SMTP-SSL
- dev-perl/Authen-SASL
- cgi? ( virtual/perl-CGI highlight? ( app-text/highlight ) )
- cvs? ( >=dev-vcs/cvsps-2.1 dev-perl/DBI dev-perl/DBD-SQLite )
- subversion? ( dev-vcs/subversion[-dso,perl] dev-perl/libwww-perl dev-perl/TermReadKey )
- )
- python? ( gtk?
- (
- >=dev-python/pygtk-2.8[${PYTHON_USEDEP}]
- >=dev-python/pygtksourceview-2.10.1-r1:2[${PYTHON_USEDEP}]
- )
- ${PYTHON_DEPS} )"
-
-# This is how info docs are created with Git:
-# .txt/asciidoc --(asciidoc)---------> .xml/docbook
-# .xml/docbook --(docbook2texi.pl)--> .texi
-# .texi --(makeinfo)---------> .info
-DEPEND="${CDEPEND}
- app-arch/cpio
- doc? (
- app-text/asciidoc
- app-text/docbook2X
- sys-apps/texinfo
- app-text/xmlto
- )
- test? (
- app-crypt/gnupg
- )"
-
-# Live ebuild builds man pages and HTML docs, additionally
-if [[ ${PV} == *9999 ]]; then
- DEPEND="${DEPEND}
- app-text/asciidoc"
-fi
-
-SITEFILE=50${PN}-gentoo.el
-S="${WORKDIR}/${MY_P}"
-
-REQUIRED_USE="
- cgi? ( perl )
- cvs? ( perl )
- mediawiki? ( perl )
- subversion? ( perl )
- webdav? ( curl )
- gtk? ( python )
- python? ( ${PYTHON_REQUIRED_USE} )
-"
-
-pkg_setup() {
- if use subversion && has_version "dev-vcs/subversion[dso]"; then
- ewarn "Per Gentoo bugs #223747, #238586, when subversion is built"
- ewarn "with USE=dso, there may be weird crashes in git-svn. You"
- ewarn "have been warned."
- fi
- if use python ; then
- python-single-r1_pkg_setup
- fi
-}
-
-# This is needed because for some obscure reasons future calls to make don't
-# pick up these exports if we export them in src_unpack()
-exportmakeopts() {
- local myopts
-
- if use blksha1 ; then
- myopts="${myopts} BLK_SHA1=YesPlease"
- elif use ppcsha1 ; then
- myopts="${myopts} PPC_SHA1=YesPlease"
- fi
-
- if use curl ; then
- use webdav || myopts="${myopts} NO_EXPAT=YesPlease"
- else
- myopts="${myopts} NO_CURL=YesPlease"
- fi
-
- # broken assumptions, because of broken build system ...
- myopts="${myopts} NO_FINK=YesPlease NO_DARWIN_PORTS=YesPlease"
- myopts="${myopts} INSTALL=install TAR=tar"
- myopts="${myopts} SHELL_PATH=${EPREFIX}/bin/sh"
- myopts="${myopts} SANE_TOOL_PATH="
- myopts="${myopts} OLD_ICONV="
- myopts="${myopts} NO_EXTERNAL_GREP="
-
- # For svn-fe
- extlibs="-lz -lssl ${S}/xdiff/lib.a $(usex threads -lpthread '')"
-
- # can't define this to null, since the entire makefile depends on it
- sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile
-
- use iconv \
- || myopts="${myopts} NO_ICONV=YesPlease"
- use nls \
- || myopts="${myopts} NO_GETTEXT=YesPlease"
- use tk \
- || myopts="${myopts} NO_TCLTK=YesPlease"
- use pcre \
- && myopts="${myopts} USE_LIBPCRE=yes" \
- && extlibs="${extlibs} -lpcre"
- use perl \
- && myopts="${myopts} INSTALLDIRS=vendor" \
- || myopts="${myopts} NO_PERL=YesPlease"
- use python \
- || myopts="${myopts} NO_PYTHON=YesPlease"
- use subversion \
- || myopts="${myopts} NO_SVN_TESTS=YesPlease"
- use threads \
- && myopts="${myopts} THREADED_DELTA_SEARCH=YesPlease" \
- || myopts="${myopts} NO_PTHREADS=YesPlease"
- use cvs \
- || myopts="${myopts} NO_CVS=YesPlease"
-# Disabled until ~m68k-mint can be keyworded again
-# if [[ ${CHOST} == *-mint* ]] ; then
-# myopts="${myopts} NO_MMAP=YesPlease"
-# myopts="${myopts} NO_IPV6=YesPlease"
-# myopts="${myopts} NO_STRLCPY=YesPlease"
-# myopts="${myopts} NO_MEMMEM=YesPlease"
-# myopts="${myopts} NO_MKDTEMP=YesPlease"
-# myopts="${myopts} NO_MKSTEMPS=YesPlease"
-# fi
- if [[ ${CHOST} == ia64-*-hpux* ]]; then
- myopts="${myopts} NO_NSEC=YesPlease"
- fi
- if [[ ${CHOST} == *-*-aix* ]]; then
- myopts="${myopts} NO_FNMATCH_CASEFOLD=YesPlease"
- fi
- if [[ ${CHOST} == *-solaris* ]]; then
- myopts="${myopts} NEEDS_LIBICONV=YesPlease"
- fi
-
- has_version '>=app-text/asciidoc-8.0' \
- && myopts="${myopts} ASCIIDOC8=YesPlease"
- myopts="${myopts} ASCIIDOC_NO_ROFF=YesPlease"
-
- # Bug 290465:
- # builtin-fetch-pack.c:816: error: 'struct stat' has no member named 'st_mtim'
- [[ "${CHOST}" == *-uclibc* ]] && \
- myopts="${myopts} NO_NSEC=YesPlease"
-
- export MY_MAKEOPTS="${myopts}"
- export EXTLIBS="${extlibs}"
-}
-
-src_unpack() {
- if [[ ${PV} != *9999 ]]; then
- unpack ${MY_P}.tar.${SRC_URI_SUFFIX}
- cd "${S}"
- unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}
- use doc && \
- cd "${S}"/Documentation && \
- unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX}
- cd "${S}"
- else
- git-2_src_unpack
- cd "${S}"
- #cp "${FILESDIR}"/GIT-VERSION-GEN .
- fi
-
-}
-
-src_prepare() {
- # bug #350330 - automagic CVS when we don't want it is bad.
- epatch "${FILESDIR}"/git-1.8.5-optional-cvs.patch
-
- # honor and correctly quote DISTDIR (from upstream git master)
- epatch "${FILESDIR}"/git-1.8.5-mw-destdir.patch
-
- # install mediawiki perl modules also in vendor_dir
- # hack, needs better upstream solution
- epatch "${FILESDIR}"/git-1.8.5-mw-vendor.patch
-
- sed -i \
- -e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
- -e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
- -e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \
- -e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \
- -e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
- -e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \
- Makefile contrib/svn-fe/Makefile || die "sed failed"
-
- # Never install the private copy of Error.pm (bug #296310)
- sed -i \
- -e '/private-Error.pm/s,^,#,' \
- perl/Makefile.PL
-
- # Fix docbook2texi command
- sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \
- Documentation/Makefile || die "sed failed"
-
- # Fix git-subtree missing DESTDIR
- sed -i \
- -e '/$(INSTALL)/s/ $(libexecdir)/ $(DESTDIR)$(libexecdir)/g' \
- -e '/$(INSTALL)/s/ $(man1dir)/ $(DESTDIR)$(man1dir)/g' \
- contrib/subtree/Makefile
-}
-
-git_emake() {
- # bug #326625: PERL_PATH, PERL_MM_OPT
- # bug #320647: PYTHON_PATH
- PYTHON_PATH=""
- use python && PYTHON_PATH="${PYTHON}"
- emake ${MY_MAKEOPTS} \
- DESTDIR="${D}" \
- OPTCFLAGS="${CFLAGS}" \
- OPTLDFLAGS="${LDFLAGS}" \
- OPTCC="$(tc-getCC)" \
- OPTAR="$(tc-getAR)" \
- prefix="${EPREFIX}"/usr \
- htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
- sysconfdir="${EPREFIX}"/etc \
- PYTHON_PATH="${PYTHON_PATH}" \
- PERL_MM_OPT="" \
- GIT_TEST_OPTS="--no-color" \
- V=1 \
- "$@"
- # This is the fix for bug #326625, but it also causes breakage, see bug
- # #352693.
- # PERL_PATH="${EPREFIX}/usr/bin/env perl" \
-}
-
-src_configure() {
- exportmakeopts
-}
-
-src_compile() {
- if use perl ; then
- git_emake perl/PM.stamp || die "emake perl/PM.stamp failed"
- git_emake perl/perl.mak || die "emake perl/perl.mak failed"
- fi
- git_emake || die "emake failed"
-
- if use emacs ; then
- elisp-compile contrib/emacs/git{,-blame}.el
- fi
-
- if use perl && use cgi ; then
- git_emake \
- gitweb/gitweb.cgi \
- || die "emake gitweb/gitweb.cgi failed"
- fi
-
- if [[ ${CHOST} == *-darwin* ]]; then
- cd "${S}"/contrib/credential/osxkeychain || die "cd credential/osxkeychain"
- git_emake || die "emake credential-osxkeychain"
- fi
-
- cd "${S}"/Documentation
- if [[ ${PV} == *9999 ]] ; then
- git_emake man \
- || die "emake man failed"
- if use doc ; then
- git_emake info html \
- || die "emake info html failed"
- fi
- else
- if use doc ; then
- git_emake info \
- || die "emake info html failed"
- fi
- fi
-
- if use subversion ; then
- cd "${S}"/contrib/svn-fe
- git_emake EXTLIBS="${EXTLIBS}" || die "emake svn-fe failed"
- if use doc ; then
- git_emake svn-fe.{1,html} || die "emake svn-fe.1 svn-fe.html failed"
- fi
- cd "${S}"
- fi
-
- if use gnome-keyring ; then
- cd "${S}"/contrib/credential/gnome-keyring
- git_emake || die "emake git-credential-gnome-keyring failed"
- fi
-
- cd "${S}"/contrib/subtree
- git_emake
- use doc && git_emake doc
-
- if use mediawiki ; then
- cd "${S}"/contrib/mw-to-git
- git_emake
- fi
-}
-
-src_install() {
- git_emake \
- install || \
- die "make install failed"
-
- if [[ ${CHOST} == *-darwin* ]]; then
- dobin contrib/credential/osxkeychain/git-credential-osxkeychain
- fi
-
- # Depending on the tarball and manual rebuild of the documentation, the
- # manpages may exist in either OR both of these directories.
- find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157]
- find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157]
-
- dodoc README Documentation/{SubmittingPatches,CodingGuidelines}
- use doc && dodir /usr/share/doc/${PF}/html
- for d in / /howto/ /technical/ ; do
- docinto ${d}
- dodoc Documentation${d}*.txt
- use doc && dohtml -p ${d} Documentation${d}*.html
- done
- docinto /
- # Upstream does not ship this pre-built :-(
- use doc && doinfo Documentation/{git,gitman}.info
-
- newbashcomp contrib/completion/git-completion.bash ${PN}
- newbashcomp contrib/completion/git-prompt.sh ${PN}-prompt
-
- if use emacs ; then
- elisp-install ${PN} contrib/emacs/git.{el,elc}
- elisp-install ${PN} contrib/emacs/git-blame.{el,elc}
- #elisp-install ${PN}/compat contrib/emacs/vc-git.{el,elc}
- # don't add automatically to the load-path, so the sitefile
- # can do a conditional loading
- touch "${ED}${SITELISP}/${PN}/compat/.nosearch"
- elisp-site-file-install "${FILESDIR}"/${SITEFILE}
- fi
-
- if use python && use gtk ; then
- python_doscript "${S}"/contrib/gitview/gitview
- dodoc "${S}"/contrib/gitview/gitview.txt
- fi
-
- #dobin contrib/fast-import/git-p4 # Moved upstream
- #dodoc contrib/fast-import/git-p4.txt # Moved upstream
- newbin contrib/fast-import/import-tars.perl import-tars
- exeinto /usr/libexec/git-core/
- newexe contrib/git-resurrect.sh git-resurrect
-
- # git-subtree
- cd "${S}"/contrib/subtree
- git_emake install || die "Failed to emake install git-subtree"
- if use doc ; then
- git_emake install-man install-doc || die "Failed to emake install-doc install-mangit-subtree"
- fi
- newdoc README README.git-subtree
- dodoc git-subtree.txt
- cd "${S}"
-
- if use mediawiki ; then
- cd "${S}"/contrib/mw-to-git
- git_emake install
- cd "${S}"
- fi
-
- # git-diffall
- dobin contrib/diffall/git-diffall
- newdoc contrib/diffall/README git-diffall.txt
-
- # diff-highlight
- dobin contrib/diff-highlight/diff-highlight
- newdoc contrib/diff-highlight/README README.diff-highlight
-
- # git-jump
- exeinto /usr/libexec/git-core/
- doexe contrib/git-jump/git-jump
- newdoc contrib/git-jump/README git-jump.txt
-
- # git-contacts
- exeinto /usr/libexec/git-core/
- doexe contrib/contacts/git-contacts
- dodoc contrib/contacts/git-contacts.txt
-
- if use gnome-keyring ; then
- cd "${S}"/contrib/credential/gnome-keyring
- dobin git-credential-gnome-keyring
- fi
-
- if use subversion ; then
- cd "${S}"/contrib/svn-fe
- dobin svn-fe
- dodoc svn-fe.txt
- use doc && doman svn-fe.1 && dohtml svn-fe.html
- cd "${S}"
- fi
-
- # remote-helpers
- if use python ; then
- python_scriptinto /usr/libexec/git-core/
- python_doscript "${S}"/contrib/remote-helpers/git-remote-{bzr,hg}
- python_optimize
- fi
-
- dodir /usr/share/${PN}/contrib
- # The following are excluded:
- # completion - installed above
- # credential/gnome-keyring TODO
- # diff-highlight - done above
- # diffall - done above
- # emacs - installed above
- # examples - these are stuff that is not used in Git anymore actually
- # git-jump - done above
- # gitview - installed above
- # p4import - excluded because fast-import has a better one
- # patches - stuff the Git guys made to go upstream to other places
- # persistent-https - TODO
- # mw-to-git - TODO
- # subtree - build seperately
- # svnimport - use git-svn
- # thunderbird-patch-inline - fixes thunderbird
- for i in \
- buildsystems convert-objects fast-import \
- hg-to-git hooks remotes2config.sh rerere-train.sh \
- stats vim workdir \
- ; do
- cp -rf \
- "${S}"/contrib/${i} \
- "${ED}"/usr/share/${PN}/contrib \
- || die "Failed contrib ${i}"
- done
-
- if use perl && use cgi ; then
- # We used to install in /usr/share/${PN}/gitweb
- # but upstream installs in /usr/share/gitweb
- # so we will install a symlink and use their location for compat with other
- # distros
- dosym /usr/share/gitweb /usr/share/${PN}/gitweb
-
- # INSTALL discusses configuration issues, not just installation
- docinto /
- newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb
- newdoc "${S}"/gitweb/README README.gitweb
-
- find "${ED}"/usr/lib64/perl5/ \
- -name .packlist \
- -exec rm \{\} \;
- else
- rm -rf "${ED}"/usr/share/gitweb
- fi
-
- if ! use subversion ; then
- rm -f "${ED}"/usr/libexec/git-core/git-svn \
- "${ED}"/usr/share/man/man1/git-svn.1*
- fi
-
- if use xinetd ; then
- insinto /etc/xinetd.d
- newins "${FILESDIR}"/git-daemon.xinetd git-daemon
- fi
-
- if use !prefix ; then
- newinitd "${FILESDIR}"/git-daemon.initd git-daemon
- newconfd "${FILESDIR}"/git-daemon.confd git-daemon
- systemd_newunit "${FILESDIR}/git-daemon_at.service" "git-daemon@.service"
- systemd_dounit "${FILESDIR}/git-daemon.socket"
- fi
-
- fixlocalpod
-}
-
-src_test() {
- local disabled=""
- local tests_cvs="t9200-git-cvsexportcommit.sh \
- t9400-git-cvsserver-server.sh \
- t9401-git-cvsserver-crlf.sh \
- t9402-git-cvsserver-refs.sh \
- t9600-cvsimport.sh \
- t9601-cvsimport-vendor-branch.sh \
- t9602-cvsimport-branches-tags.sh \
- t9603-cvsimport-patchsets.sh \
- t9604-cvsimport-timestamps.sh"
- local tests_perl="t3701-add-interactive.sh \
- t5502-quickfetch.sh \
- t5512-ls-remote.sh \
- t5520-pull.sh \
- t7106-reset-unborn-branch.sh \
- t7501-commit.sh"
- # Bug #225601 - t0004 is not suitable for root perm
- # Bug #219839 - t1004 is not suitable for root perm
- # t0001-init.sh - check for init notices EPERM* fails
- local tests_nonroot="t0001-init.sh \
- t0004-unwritable.sh \
- t0070-fundamental.sh \
- t1004-read-tree-m-u-wf.sh \
- t3700-add.sh \
- t7300-clean.sh"
- # t9100 still fails with symlinks in SVN 1.7
- local test_svn="t9100-git-svn-basic.sh"
-
- # Unzip is used only for the testcase code, not by any normal parts of Git.
- if ! has_version app-arch/unzip ; then
- einfo "Disabling tar-tree tests"
- disabled="${disabled} t5000-tar-tree.sh"
- fi
-
- cvs=0
- use cvs && let cvs=$cvs+1
- if [[ ${EUID} -eq 0 ]]; then
- if [[ $cvs -eq 1 ]]; then
- ewarn "Skipping CVS tests because CVS does not work as root!"
- ewarn "You should retest with FEATURES=userpriv!"
- disabled="${disabled} ${tests_cvs}"
- fi
- einfo "Skipping other tests that require being non-root"
- disabled="${disabled} ${tests_nonroot}"
- else
- [[ $cvs -gt 0 ]] && \
- has_version dev-vcs/cvs && \
- let cvs=$cvs+1
- [[ $cvs -gt 1 ]] && \
- has_version "dev-vcs/cvs[server]" && \
- let cvs=$cvs+1
- if [[ $cvs -lt 3 ]]; then
- einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])"
- disabled="${disabled} ${tests_cvs}"
- fi
- fi
-
- if ! use perl ; then
- einfo "Disabling tests that need Perl"
- disabled="${disabled} ${tests_perl}"
- fi
-
- einfo "Disabling tests that fail with SVN 1.7"
- disabled="${disabled} ${test_svn}"
-
- # Reset all previously disabled tests
- cd "${S}/t"
- for i in *.sh.DISABLED ; do
- [[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}"
- done
- einfo "Disabled tests:"
- for i in ${disabled} ; do
- [[ -f "${i}" ]] && mv -f "${i}" "${i}.DISABLED" && einfo "Disabled $i"
- done
-
- # Avoid the test system removing the results because we want them ourselves
- sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' \
- -i "${S}"/t/Makefile
-
- # Clean old results first, must always run
- cd "${S}/t"
- nonfatal git_emake clean
-
- # Now run the tests, keep going if we hit an error, and don't terminate on
- # failure
- cd "${S}"
- einfo "Start test run"
- #MAKEOPTS=-j1
- nonfatal git_emake --keep-going test
- rc=$?
-
- # Display nice results, now print the results
- cd "${S}/t"
- nonfatal git_emake aggregate-results
-
- # And bail if there was a problem
- [ $rc -eq 0 ] || die "tests failed. Please file a bug."
-}
-
-showpkgdeps() {
- local pkg=$1
- shift
- elog " $(printf "%-17s:" ${pkg}) ${@}"
-}
-
-pkg_postinst() {
- use emacs && elisp-site-regen
- einfo "Please read /usr/share/bash-completion/git for Git bash command completion"
- einfo "Please read /usr/share/bash-completion/git-prompt for Git bash prompt"
- einfo "Note that the prompt bash code is now in the seperate script"
- elog "These additional scripts need some dependencies:"
- echo
- showpkgdeps git-quiltimport "dev-util/quilt"
- showpkgdeps git-instaweb \
- "|| ( www-servers/lighttpd www-servers/apache )"
- echo
-}
-
-pkg_postrm() {
- use emacs && elisp-site-regen
-}
diff --git a/dev-vcs/git/git-1.8.5.3.ebuild b/dev-vcs/git/git-1.8.5.3.ebuild
index 5a719d821990..f98c91e29a09 100644
--- a/dev-vcs/git/git-1.8.5.3.ebuild
+++ b/dev-vcs/git/git-1.8.5.3.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.5.3.ebuild,v 1.1 2014/01/14 20:54:33 polynomial-c Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-1.8.5.3.ebuild,v 1.2 2014/02/04 09:36:35 polynomial-c Exp $
EAPI=5
@@ -234,6 +234,8 @@ src_prepare() {
# hack, needs better upstream solution
epatch "${FILESDIR}"/git-1.8.5-mw-vendor.patch
+ epatch_user
+
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
@@ -374,7 +376,8 @@ src_install() {
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
- newbashcomp contrib/completion/git-prompt.sh ${PN}-prompt
+ # Not really a bash-completion file (bug #477920)
+ dodoc contrib/completion/git-prompt.sh
if use emacs ; then
elisp-install ${PN} contrib/emacs/git.{el,elc}
@@ -509,7 +512,7 @@ src_install() {
fi
if use !prefix ; then
- newinitd "${FILESDIR}"/git-daemon.initd git-daemon
+ newinitd "${FILESDIR}"/git-daemon-r1.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
@@ -633,7 +636,7 @@ pkg_postinst() {
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
- "|| ( www-servers/lighttpd www-servers/apache )"
+ "|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
}
diff --git a/dev-vcs/git/git-9999.ebuild b/dev-vcs/git/git-9999.ebuild
index defefdacc387..dcc8a91a37b8 100644
--- a/dev-vcs/git/git-9999.ebuild
+++ b/dev-vcs/git/git-9999.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-9999.ebuild,v 1.52 2014/01/04 23:22:32 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/git-9999.ebuild,v 1.53 2014/02/04 09:36:35 polynomial-c Exp $
EAPI=5
@@ -231,6 +231,8 @@ src_prepare() {
# hack, needs better upstream solution
epatch "${FILESDIR}"/git-1.8.5-mw-vendor.patch
+ epatch_user
+
sed -i \
-e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \
-e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \
@@ -371,7 +373,8 @@ src_install() {
use doc && doinfo Documentation/{git,gitman}.info
newbashcomp contrib/completion/git-completion.bash ${PN}
- newbashcomp contrib/completion/git-prompt.sh ${PN}-prompt
+ # Not really a bash-completion file (bug #477920)
+ dodoc contrib/completion/git-prompt.sh
if use emacs ; then
elisp-install ${PN} contrib/emacs/git.{el,elc}
@@ -506,7 +509,7 @@ src_install() {
fi
if use !prefix ; then
- newinitd "${FILESDIR}"/git-daemon.initd git-daemon
+ newinitd "${FILESDIR}"/git-daemon-r1.initd git-daemon
newconfd "${FILESDIR}"/git-daemon.confd git-daemon
systemd_newunit "${FILESDIR}/git-daemon_at.service" "git-daemon@.service"
systemd_dounit "${FILESDIR}/git-daemon.socket"
@@ -629,7 +632,7 @@ pkg_postinst() {
echo
showpkgdeps git-quiltimport "dev-util/quilt"
showpkgdeps git-instaweb \
- "|| ( www-servers/lighttpd www-servers/apache )"
+ "|| ( www-servers/lighttpd www-servers/apache www-servers/nginx )"
echo
}