X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-svn.perl;h=d792a62d7ca400145d57189b5ca8af97978fef4d;hb=fd2a75972e90d34bc8d4bebe1d669645557a2192;hp=1da31fdc7cf9c90e6ec3dfd815201e36b9650890;hpb=8f905eb139aa2284ca9001de1265d25b661f907c;p=git.git diff --git a/git-svn.perl b/git-svn.perl index 1da31fdc7..d792a62d7 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -70,7 +70,7 @@ my ($_revision,$_stdin,$_no_ignore_ext,$_no_stop_copy,$_help,$_rmdir,$_edit, $_version, $_upgrade, $_authors, $_branch_all_refs, @_opt_m, $_merge, $_strategy, $_dry_run, $_ignore_nodate, $_non_recursive, $_username, $_config_dir, $_no_auth_cache, - $_pager, $_color); + $_pager, $_color, $_prefix); my (@_branch_from, %tree_map, %users, %rusers, %equiv); my ($_svn_can_do_switch); my @repo_path_split_cache; @@ -134,6 +134,7 @@ my %cmd = ( 'username=s' => \$_username, 'config-dir=s' => \$_config_dir, 'no-auth-cache' => \$_no_auth_cache, + 'prefix=s' => \$_prefix, } ], 'multi-fetch' => [ \&multi_fetch, 'Fetch multiple trees (like git-svnimport)', @@ -285,7 +286,7 @@ sub init { $SVN_URL = $url; unless (-d $GIT_DIR) { - my @init_db = ('init-db'); + my @init_db = ('init'); push @init_db, "--template=$_template" if defined $_template; push @init_db, "--shared" if defined $_shared; command_noisy(@init_db); @@ -592,11 +593,12 @@ sub multi_init { "$trunk_url ($_trunk)\n"; } init($trunk_url); - command_noisy('repo-config', 'svn.trunk', $trunk_url); + command_noisy('config', 'svn.trunk', $trunk_url); } } - complete_url_ls_init($url, $_branches, '--branches/-b', ''); - complete_url_ls_init($url, $_tags, '--tags/-t', 'tags/'); + $_prefix = '' unless defined $_prefix; + complete_url_ls_init($url, $_branches, '--branches/-b', $_prefix); + complete_url_ls_init($url, $_tags, '--tags/-t', $_prefix . 'tags/'); } sub multi_fetch { @@ -679,7 +681,7 @@ sub show_log { process_commit($_, $r_min, $r_max) foreach reverse @k; } out: - eval { command_close_pipe($log) }; + close $log; print '-' x72,"\n" unless $_incremental || $_oneline; } @@ -770,22 +772,22 @@ sub log_use_color { return 1 if $_color; my ($dc, $dcvar); $dcvar = 'color.diff'; - $dc = `git-repo-config --get $dcvar`; + $dc = `git-config --get $dcvar`; if ($dc eq '') { # nothing at all; fallback to "diff.color" $dcvar = 'diff.color'; - $dc = `git-repo-config --get $dcvar`; + $dc = `git-config --get $dcvar`; } chomp($dc); if ($dc eq 'auto') { my $pc; - $pc = `git-repo-config --get color.pager`; + $pc = `git-config --get color.pager`; if ($pc eq '') { # does not have it -- fallback to pager.color - $pc = `git-repo-config --bool --get pager.color`; + $pc = `git-config --bool --get pager.color`; } else { - $pc = `git-repo-config --bool --get color.pager`; + $pc = `git-config --bool --get color.pager`; if ($?) { $pc = 'false'; } @@ -798,7 +800,7 @@ sub log_use_color { } return 0 if $dc eq 'never'; return 1 if $dc eq 'always'; - chomp($dc = `git-repo-config --bool --get $dcvar`); + chomp($dc = `git-config --bool --get $dcvar`); return ($dc eq 'true'); } @@ -917,7 +919,7 @@ sub complete_url_ls_init { waitpid $pid, 0; croak $? if $?; my ($n) = ($switch =~ /^--(\w+)/); - command_noisy('repo-config', "svn.$n", $full_url); + command_noisy('config', "svn.$n", $full_url); } sub common_prefix { @@ -1084,7 +1086,7 @@ sub graft_merge_msg { my ($grafts, $l_map, $u, $p, @re) = @_; my $x = $l_map->{$u}->{$p}; - my $rl = rev_list_raw($x); + my $rl = rev_list_raw("refs/remotes/$x"); while (my $c = next_rev_list_entry($rl)) { foreach my $re (@re) { my (@br) = ($c->{m} =~ /$re/g); @@ -1473,7 +1475,7 @@ sub map_tree_joins { $seen{$commit} = 1; } } - eval { command_close_pipe($pipe) }; + close $pipe; } } @@ -1592,7 +1594,7 @@ sub init_vars { %tree_map = (); } -# convert GetOpt::Long specs for use by git-repo-config +# convert GetOpt::Long specs for use by git-config sub read_repo_config { return unless -d $GIT_DIR; my $opts = shift; @@ -1600,7 +1602,7 @@ sub read_repo_config { my $v = $opts->{$o}; my ($key) = ($o =~ /^([a-z\-]+)/); $key =~ s/-//g; - my $arg = 'git-repo-config'; + my $arg = 'git-config'; $arg .= ' --int' if ($o =~ /[:=]i$/); $arg .= ' --bool' if ($o !~ /[:=][sfi]$/); if (ref $v eq 'ARRAY') { @@ -1608,7 +1610,7 @@ sub read_repo_config { @$v = @tmp if @tmp; } else { chomp(my $tmp = `$arg --get svn.$key`); - if ($tmp && !($arg =~ / --bool / && $tmp eq 'false')) { + if ($tmp && !($arg =~ / --bool/ && $tmp eq 'false')) { $$v = $tmp; } } @@ -1667,7 +1669,7 @@ sub write_grafts { last unless /^\S/; } } - eval { command_close_pipe($ch) }; # breaking the pipe + close $ch; # breaking the pipe # if real parents are the only ones in the grafts, drop it next if join(' ',sort keys %$p) eq join(' ',sort keys %x); @@ -1764,7 +1766,7 @@ sub get_commit_time { } elsif ($tz =~ s/^\-//) { $s -= tz_to_s_offset($tz); } - eval { command_close_pipe($fh) }; + close $fh; return $s; } die "Can't get commit time for commit: $cmt\n"; @@ -1916,7 +1918,8 @@ sub _simple_prompt { $default_username = $_username if defined $_username; if (defined $default_username && length $default_username) { if (defined $realm && length $realm) { - print "Authentication realm: $realm\n"; + print STDERR "Authentication realm: $realm\n"; + STDERR->flush; } $cred->username($default_username); } else { @@ -1931,36 +1934,38 @@ sub _simple_prompt { sub _ssl_server_trust_prompt { my ($cred, $realm, $failures, $cert_info, $may_save, $pool) = @_; $may_save = undef if $_no_auth_cache; - print "Error validating server certificate for '$realm':\n"; + print STDERR "Error validating server certificate for '$realm':\n"; if ($failures & $SVN::Auth::SSL::UNKNOWNCA) { - print " - The certificate is not issued by a trusted ", + print STDERR " - The certificate is not issued by a trusted ", "authority. Use the\n", " fingerprint to validate the certificate manually!\n"; } if ($failures & $SVN::Auth::SSL::CNMISMATCH) { - print " - The certificate hostname does not match.\n"; + print STDERR " - The certificate hostname does not match.\n"; } if ($failures & $SVN::Auth::SSL::NOTYETVALID) { - print " - The certificate is not yet valid.\n"; + print STDERR " - The certificate is not yet valid.\n"; } if ($failures & $SVN::Auth::SSL::EXPIRED) { - print " - The certificate has expired.\n"; + print STDERR " - The certificate has expired.\n"; } if ($failures & $SVN::Auth::SSL::OTHER) { - print " - The certificate has an unknown error.\n"; + print STDERR " - The certificate has an unknown error.\n"; } - printf( "Certificate information:\n". + printf STDERR + "Certificate information:\n". " - Hostname: %s\n". " - Valid: from %s until %s\n". " - Issuer: %s\n". " - Fingerprint: %s\n", map $cert_info->$_, qw(hostname valid_from valid_until - issuer_dname fingerprint) ); + issuer_dname fingerprint); my $choice; prompt: - print $may_save ? + print STDERR $may_save ? "(R)eject, accept (t)emporarily or accept (p)ermanently? " : "(R)eject or accept (t)emporarily? "; + STDERR->flush; $choice = lc(substr( || 'R', 0, 1)); if ($choice =~ /^t$/i) { $cred->may_save(undef); @@ -1978,7 +1983,8 @@ prompt: sub _ssl_client_cert_prompt { my ($cred, $realm, $may_save, $pool) = @_; $may_save = undef if $_no_auth_cache; - print "Client certificate filename: "; + print STDERR "Client certificate filename: "; + STDERR->flush; chomp(my $filename = ); $cred->cert_file($filename); $cred->may_save($may_save); @@ -1997,13 +2003,14 @@ sub _username_prompt { my ($cred, $realm, $may_save, $pool) = @_; $may_save = undef if $_no_auth_cache; if (defined $realm && length $realm) { - print "Authentication realm: $realm\n"; + print STDERR "Authentication realm: $realm\n"; } my $username; if (defined $_username) { $username = $_username; } else { - print "Username: "; + print STDERR "Username: "; + STDERR->flush; chomp($username = ); } $cred->username($username); @@ -2013,7 +2020,8 @@ sub _username_prompt { sub _read_password { my ($prompt, $realm) = @_; - print $prompt; + print STDERR $prompt; + STDERR->flush; require Term::ReadKey; Term::ReadKey::ReadMode('noecho'); my $password = ''; @@ -2022,7 +2030,8 @@ sub _read_password { $password .= $key; } Term::ReadKey::ReadMode('restore'); - print "\n"; + print STDERR "\n"; + STDERR->flush; $password; } @@ -2837,7 +2846,7 @@ sub rmdirs { delete $rm->{join '/', @dn}; } unless (%$rm) { - eval { command_close_pipe($fh) }; + close $fh; return; } } @@ -2847,7 +2856,7 @@ sub rmdirs { foreach my $d (sort { $b =~ tr#/#/# <=> $a =~ tr#/#/# } keys %$rm) { $self->close_directory($bat->{$d}, $p); my ($dn) = ($d =~ m#^(.*?)/?(?:[^/]+)$#); - print "\tD+\t/$d/\n" unless $q; + print "\tD+\t$d/\n" unless $q; $self->SUPER::delete_entry($d, $r, $bat->{$dn}, $p); delete $bat->{$d}; }