Add path-limiting to git-add--interactive
Implement Junio's suggestion that git-add--interactive should reproduce the path-limiting semantics of non-interactive git-add. In otherwords, if "git add -i" (unrestricted) shows paths from a set A, "git add -i paths..." should show paths from a subset of the set A and that subset should be defined with the existing ls-files pathspec semantics. Signed-off-by: Wincent Colaiuta <win@wincent.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7c0ab44589
commit
4c8416847a
@ -37,7 +37,7 @@ sub list_untracked {
|
|||||||
chomp $_;
|
chomp $_;
|
||||||
$_;
|
$_;
|
||||||
}
|
}
|
||||||
run_cmd_pipe(qw(git ls-files --others --exclude-standard --), @_);
|
run_cmd_pipe(qw(git ls-files --others --exclude-standard --), @ARGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $status_fmt = '%12s %12s %s';
|
my $status_fmt = '%12s %12s %s';
|
||||||
@ -56,9 +56,17 @@ sub list_modified {
|
|||||||
my ($only) = @_;
|
my ($only) = @_;
|
||||||
my (%data, @return);
|
my (%data, @return);
|
||||||
my ($add, $del, $adddel, $file);
|
my ($add, $del, $adddel, $file);
|
||||||
|
my @tracked = ();
|
||||||
|
|
||||||
|
if (@ARGV) {
|
||||||
|
@tracked = map {
|
||||||
|
chomp $_; $_;
|
||||||
|
} run_cmd_pipe(qw(git ls-files --exclude-standard --), @ARGV);
|
||||||
|
return if (!@tracked);
|
||||||
|
}
|
||||||
|
|
||||||
for (run_cmd_pipe(qw(git diff-index --cached
|
for (run_cmd_pipe(qw(git diff-index --cached
|
||||||
--numstat --summary HEAD))) {
|
--numstat --summary HEAD --), @tracked)) {
|
||||||
if (($add, $del, $file) =
|
if (($add, $del, $file) =
|
||||||
/^([-\d]+) ([-\d]+) (.*)/) {
|
/^([-\d]+) ([-\d]+) (.*)/) {
|
||||||
my ($change, $bin);
|
my ($change, $bin);
|
||||||
@ -81,7 +89,7 @@ sub list_modified {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (run_cmd_pipe(qw(git diff-files --numstat --summary))) {
|
for (run_cmd_pipe(qw(git diff-files --numstat --summary --), @tracked)) {
|
||||||
if (($add, $del, $file) =
|
if (($add, $del, $file) =
|
||||||
/^([-\d]+) ([-\d]+) (.*)/) {
|
/^([-\d]+) ([-\d]+) (.*)/) {
|
||||||
if (!exists $data{$file}) {
|
if (!exists $data{$file}) {
|
||||||
|
Loading…
Reference in New Issue
Block a user