mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
add-interactive: handle unborn branch in patch mode
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>
This commit is contained in:
parent
3d092bfc6f
commit
954312a3ff
@ -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
|
||||
@ -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)) {
|
||||
@ -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 = ();
|
||||
|
Loading…
Reference in New Issue
Block a user