@@ -44,7 +44,9 @@ use Git qw(
44
44
command_noisy
45
45
command_output_pipe
46
46
command_close_pipe
47
+ command_oneline
47
48
) ;
49
+ use Git::SVN;
48
50
49
51
sub migrate_from_v0 {
50
52
my $git_dir = $ENV {GIT_DIR };
@@ -55,7 +57,9 @@ sub migrate_from_v0 {
55
57
chomp ;
56
58
my ($id , $orig_ref ) = ($_ , $_ );
57
59
next unless $id =~ s # ^refs/heads/(.+)-HEAD$# $1 # ;
58
- next unless -f " $git_dir /$id /info/url" ;
60
+ my $info_url = command_oneline(qw( rev-parse --git-path) ,
61
+ " $id /info/url" );
62
+ next unless -f $info_url ;
59
63
my $new_ref = " refs/remotes/$id " ;
60
64
if (::verify_ref(" $new_ref ^0" )) {
61
65
print STDERR " W: $orig_ref is probably an old " ,
@@ -82,7 +86,7 @@ sub migrate_from_v1 {
82
86
my $git_dir = $ENV {GIT_DIR };
83
87
my $migrated = 0;
84
88
return $migrated unless -d $git_dir ;
85
- my $svn_dir = " $git_dir /svn " ;
89
+ my $svn_dir = Git::SVN::svn_dir() ;
86
90
87
91
# just in case somebody used 'svn' as their $id at some point...
88
92
return $migrated if -d $svn_dir && ! -f " $svn_dir /info/url" ;
@@ -97,27 +101,28 @@ sub migrate_from_v1 {
97
101
my $x = $_ ;
98
102
next unless $x =~ s # ^refs/remotes/## ;
99
103
chomp $x ;
100
- next unless -f " $git_dir /$x /info/url" ;
101
- my $u = eval { ::file_to_s(" $git_dir /$x /info/url" ) };
104
+ my $info_url = command_oneline(qw( rev-parse --git-path) ,
105
+ " $x /info/url" );
106
+ next unless -f $info_url ;
107
+ my $u = eval { ::file_to_s($info_url ) };
102
108
next unless $u ;
103
- my $dn = dirname(" $git_dir /svn /$x " );
109
+ my $dn = dirname(" $svn_dir /$x " );
104
110
mkpath([$dn ]) unless -d $dn ;
105
111
if ($x eq ' svn' ) { # they used 'svn' as GIT_SVN_ID:
106
- mkpath([" $git_dir /svn /svn" ]);
112
+ mkpath([" $svn_dir /svn" ]);
107
113
print STDERR " - $git_dir /$x /info => " ,
108
- " $git_dir /svn /$x /info\n " ;
109
- rename " $git_dir /$x /info" , " $git_dir /svn /$x /info" or
114
+ " $svn_dir /$x /info\n " ;
115
+ rename " $git_dir /$x /info" , " $svn_dir /$x /info" or
110
116
croak " $! : $x " ;
111
117
# don't worry too much about these, they probably
112
118
# don't exist with repos this old (save for index,
113
119
# and we can easily regenerate that)
114
120
foreach my $f (qw/ unhandled.log index .rev_db/ ) {
115
- rename " $git_dir /$x /$f " , " $git_dir /svn /$x /$f " ;
121
+ rename " $git_dir /$x /$f " , " $svn_dir /$x /$f " ;
116
122
}
117
123
} else {
118
- print STDERR " - $git_dir /$x => $git_dir /svn/$x \n " ;
119
- rename " $git_dir /$x " , " $git_dir /svn/$x " or
120
- croak " $! : $x " ;
124
+ print STDERR " - $git_dir /$x => $svn_dir /$x \n " ;
125
+ rename " $git_dir /$x " , " $svn_dir /$x " or croak " $! : $x " ;
121
126
}
122
127
$migrated ++;
123
128
}
@@ -139,9 +144,10 @@ sub read_old_urls {
139
144
push @dir , $_ ;
140
145
}
141
146
}
147
+ my $svn_dir = Git::SVN::svn_dir();
142
148
foreach (@dir ) {
143
149
my $x = $_ ;
144
- $x =~ s ! ^\Q $ENV{GIT_DIR} \E /svn /!! o ;
150
+ $x =~ s ! ^\Q $svn_dir \E /!! o ;
145
151
read_old_urls($l_map , $x , $_ );
146
152
}
147
153
}
@@ -150,7 +156,7 @@ sub migrate_from_v2 {
150
156
my @cfg = command(qw/ config -l/ );
151
157
return if grep /^svn-remote\..+\.url=/, @cfg ;
152
158
my %l_map ;
153
- read_old_urls(\%l_map , ' ' , " $ENV {GIT_DIR}/svn " );
159
+ read_old_urls(\%l_map , ' ' , Git::SVN::svn_dir() );
154
160
my $migrated = 0;
155
161
156
162
require Git::SVN;
@@ -239,7 +245,8 @@ sub minimize_connections {
239
245
}
240
246
}
241
247
if (@emptied ) {
242
- my $file = $ENV {GIT_CONFIG } || " $ENV {GIT_DIR}/config" ;
248
+ my $file = $ENV {GIT_CONFIG } ||
249
+ command_oneline(qw( rev-parse --git-path config) );
243
250
print STDERR <<EOF ;
244
251
The following [svn-remote] sections in your config file ($file ) are empty
245
252
and can be safely removed:
0 commit comments