git-svn: Canonicalize svn urls to prevent libsvn assertion
Cloning/initializing svn repositories with an uncanonicalize url does not work as libsvn throws an assertion. This patch canonicalize svn uris for the clone and init command from git-svn. [ew: fixed trailing whitespace] Signed-off-by: Ulrich Dangel <uli@spamt.net> Acked-by: Eric Wong <normalperson@yhbt.net>
Ulrich Dangel committed
Jun 26, 2009 at 16:52 UTC
50ff23667020768fa18dcffd154406fc41ebaa84
1 file changed
+8
-1
git-svn.perl
+8
-1
@@ -389,6 +389,7 @@ sub cmd_init {
389
}
390
my $url = shift or die "SVN repository location required ",
391
"as a command-line argument\n";
392
+ $url = canonicalize_url($url);
393
init_subdir(@_);
394
do_git_init_db();
395
@@ -806,6 +807,12 @@ sub canonicalize_path {
807
return $path;
808
}
809
810
+sub canonicalize_url {
811
+ my ($url) = @_;
812
+ $url =~ s#^([^:]+://[^/]*/)(.*)$#$1 . canonicalize_path($2)#e;
813
+ return $url;
814
+}
815
+
816
# get_svnprops(PATH)
817
# ------------------
818
# Helper for cmd_propget and cmd_proplist below.
@@ -875,7 +882,7 @@ sub cmd_multi_init {
882
883
$_prefix = '' unless defined $_prefix;
884
if (defined $url) {
878
- $url =~ s#/+$##;
885
+ $url = canonicalize_url($url);
886
init_subdir(@_);
887
}
888
do_git_init_db();