зеркало из https://github.com/microsoft/git.git
add -i: move unquote_path() to Git.pm
Move unquote_path() from git-add--interactive to Git.pm so it can be used by other scripts. Note this is a straight copy, it does not handle '\a'. That will be fixed in the next commit. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
fd99e2bda0
Коммит
1d542a5487
|
@ -3,7 +3,7 @@
|
|||
use 5.008;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Git;
|
||||
use Git qw(unquote_path);
|
||||
use Git::I18N;
|
||||
|
||||
binmode(STDOUT, ":raw");
|
||||
|
@ -175,47 +175,6 @@ if (!defined $GIT_DIR) {
|
|||
}
|
||||
chomp($GIT_DIR);
|
||||
|
||||
my %cquote_map = (
|
||||
"b" => chr(8),
|
||||
"t" => chr(9),
|
||||
"n" => chr(10),
|
||||
"v" => chr(11),
|
||||
"f" => chr(12),
|
||||
"r" => chr(13),
|
||||
"\\" => "\\",
|
||||
"\042" => "\042",
|
||||
);
|
||||
|
||||
sub unquote_path {
|
||||
local ($_) = @_;
|
||||
my ($retval, $remainder);
|
||||
if (!/^\042(.*)\042$/) {
|
||||
return $_;
|
||||
}
|
||||
($_, $retval) = ($1, "");
|
||||
while (/^([^\\]*)\\(.*)$/) {
|
||||
$remainder = $2;
|
||||
$retval .= $1;
|
||||
for ($remainder) {
|
||||
if (/^([0-3][0-7][0-7])(.*)$/) {
|
||||
$retval .= chr(oct($1));
|
||||
$_ = $2;
|
||||
last;
|
||||
}
|
||||
if (/^([\\\042btnvfr])(.*)$/) {
|
||||
$retval .= $cquote_map{$1};
|
||||
$_ = $2;
|
||||
last;
|
||||
}
|
||||
# This is malformed -- just return it as-is for now.
|
||||
return $_[0];
|
||||
}
|
||||
$_ = $remainder;
|
||||
}
|
||||
$retval .= $_;
|
||||
return $retval;
|
||||
}
|
||||
|
||||
sub refresh {
|
||||
my $fh;
|
||||
open $fh, 'git update-index --refresh |'
|
||||
|
|
53
perl/Git.pm
53
perl/Git.pm
|
@ -61,7 +61,8 @@ require Exporter;
|
|||
remote_refs prompt
|
||||
get_tz_offset get_record
|
||||
credential credential_read credential_write
|
||||
temp_acquire temp_is_locked temp_release temp_reset temp_path);
|
||||
temp_acquire temp_is_locked temp_release temp_reset temp_path
|
||||
unquote_path);
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
@ -1451,6 +1452,56 @@ sub prefix_lines {
|
|||
return $string;
|
||||
}
|
||||
|
||||
=item unquote_path ( PATH )
|
||||
|
||||
Unquote a quoted path containing c-escapes as returned by ls-files etc.
|
||||
when not using -z or when parsing the output of diff -u.
|
||||
|
||||
=cut
|
||||
|
||||
{
|
||||
my %cquote_map = (
|
||||
"b" => chr(8),
|
||||
"t" => chr(9),
|
||||
"n" => chr(10),
|
||||
"v" => chr(11),
|
||||
"f" => chr(12),
|
||||
"r" => chr(13),
|
||||
"\\" => "\\",
|
||||
"\042" => "\042",
|
||||
);
|
||||
|
||||
sub unquote_path {
|
||||
local ($_) = @_;
|
||||
my ($retval, $remainder);
|
||||
if (!/^\042(.*)\042$/) {
|
||||
return $_;
|
||||
}
|
||||
($_, $retval) = ($1, "");
|
||||
while (/^([^\\]*)\\(.*)$/) {
|
||||
$remainder = $2;
|
||||
$retval .= $1;
|
||||
for ($remainder) {
|
||||
if (/^([0-3][0-7][0-7])(.*)$/) {
|
||||
$retval .= chr(oct($1));
|
||||
$_ = $2;
|
||||
last;
|
||||
}
|
||||
if (/^([\\\042btnvfr])(.*)$/) {
|
||||
$retval .= $cquote_map{$1};
|
||||
$_ = $2;
|
||||
last;
|
||||
}
|
||||
# This is malformed -- just return it as-is for now.
|
||||
return $_[0];
|
||||
}
|
||||
$_ = $remainder;
|
||||
}
|
||||
$retval .= $_;
|
||||
return $retval;
|
||||
}
|
||||
}
|
||||
|
||||
=item get_comment_line_char ( )
|
||||
|
||||
Gets the core.commentchar configuration value.
|
||||
|
|
Загрузка…
Ссылка в новой задаче