Skip to content

Commit

Permalink
add-interactive: handle unborn branch in patch mode
Browse files Browse the repository at this point in the history
The list_modified function already knows how to handle an
unborn branch by diffing against the empty tree. However,
the diff we perform to get the actual hunks does not. Let's
use the same logic for both diffs.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Oct 25, 2013
1 parent 3d092bf commit 954312a
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions git-add--interactive.perl
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,17 @@ sub get_empty_tree {
return '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
}

sub get_diff_reference {
my $ref = shift;
if (defined $ref and $ref ne 'HEAD') {
return $ref;
} elsif (is_initial_commit()) {
return get_empty_tree();
} else {
return 'HEAD';
}
}

# Returns list of hashes, contents of each of which are:
# VALUE: pathname
# BINARY: is a binary path
Expand All @@ -286,14 +297,7 @@ sub list_modified {
return if (!@tracked);
}

my $reference;
if (defined $patch_mode_revision and $patch_mode_revision ne 'HEAD') {
$reference = $patch_mode_revision;
} elsif (is_initial_commit()) {
$reference = get_empty_tree();
} else {
$reference = 'HEAD';
}
my $reference = get_diff_reference($patch_mode_revision);
for (run_cmd_pipe(qw(git diff-index --cached
--numstat --summary), $reference,
'--', @tracked)) {
Expand Down Expand Up @@ -737,7 +741,7 @@ sub parse_diff {
splice @diff_cmd, 1, 0, "--diff-algorithm=${diff_algorithm}";
}
if (defined $patch_mode_revision) {
push @diff_cmd, $patch_mode_revision;
push @diff_cmd, get_diff_reference($patch_mode_revision);
}
my @diff = run_cmd_pipe("git", @diff_cmd, "--", $path);
my @colored = ();
Expand Down

0 comments on commit 954312a

Please sign in to comment.