git-svn: replace URL escapes with canonicalization
The old hand-rolled URL escape functions were inferior to canonicalization functions. Continuing to move towards getting everything canonicalizing the same way. * Git::SVN->init_remote_config and Git::SVN::Ra->minimize_url both have to canonicalize the same way else init_remote_config will incorrectly think they're different URLs causing t9107-git-svn-migrate.sh to fail. [ew: commit title] Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:

committed by
Eric Wong

parent
93c3fcbe4d
commit
9c27a57b2d
24
git-svn.perl
24
git-svn.perl
@ -1412,24 +1412,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] : ".");
|
||||
@ -1457,18 +1439,18 @@ sub cmd_info {
|
||||
my $full_url = $url . ($fullpath eq "" ? "" : "/$fullpath");
|
||||
|
||||
if ($_url) {
|
||||
print escape_url($full_url), "\n";
|
||||
print canonicalize_url($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: " . canonicalize_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";
|
||||
|
Reference in New Issue
Block a user