commit/status: show the index-worktree diff with -v -v
git commit and git status in long format show the diff between HEAD and the index when given -v. This allows previewing a commit to be made. They also list tracked files with unstaged changes, but without a diff. Introduce '-v -v' which shows the diff between the index and the worktree in addition to the HEAD index diff. This allows a review of unstaged changes which might be missing from the commit. In the case of '-v -v', additonal header lines Changes to be committed: and Changes not staged for commit: are inserted before the diffs, which are equal to those in the status part; the latter preceded by 50*"-" to make it stick out more. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
f8c65c1f97
commit
4055500093
|
@ -284,6 +284,10 @@ configuration variable documented in linkgit:git-config[1].
|
||||||
would be committed at the bottom of the commit message
|
would be committed at the bottom of the commit message
|
||||||
template. Note that this diff output doesn't have its
|
template. Note that this diff output doesn't have its
|
||||||
lines prefixed with '#'.
|
lines prefixed with '#'.
|
||||||
|
+
|
||||||
|
If specified twice, show in addition the unified diff between
|
||||||
|
what would be committed and the worktree files, i.e. the unstaged
|
||||||
|
changes to tracked files.
|
||||||
|
|
||||||
-q::
|
-q::
|
||||||
--quiet::
|
--quiet::
|
||||||
|
|
|
@ -143,6 +143,17 @@ test_expect_success 'status -v' '
|
||||||
test_i18ncmp expect-with-v output
|
test_i18ncmp expect-with-v output
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'status -v -v' '
|
||||||
|
(cat expect &&
|
||||||
|
echo "Changes to be committed:" &&
|
||||||
|
git -c diff.mnemonicprefix=true diff --cached &&
|
||||||
|
echo "--------------------------------------------------" &&
|
||||||
|
echo "Changes not staged for commit:" &&
|
||||||
|
git -c diff.mnemonicprefix=true diff) >expect-with-v &&
|
||||||
|
git status -v -v >output &&
|
||||||
|
test_i18ncmp expect-with-v output
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'setup fake editor' '
|
test_expect_success 'setup fake editor' '
|
||||||
cat >.git/editor <<-\EOF &&
|
cat >.git/editor <<-\EOF &&
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
20
wt-status.c
20
wt-status.c
|
@ -849,6 +849,8 @@ static void wt_status_print_verbose(struct wt_status *s)
|
||||||
{
|
{
|
||||||
struct rev_info rev;
|
struct rev_info rev;
|
||||||
struct setup_revision_opt opt;
|
struct setup_revision_opt opt;
|
||||||
|
int dirty_submodules;
|
||||||
|
const char *c = color(WT_STATUS_HEADER, s);
|
||||||
|
|
||||||
init_revisions(&rev, NULL);
|
init_revisions(&rev, NULL);
|
||||||
DIFF_OPT_SET(&rev.diffopt, ALLOW_TEXTCONV);
|
DIFF_OPT_SET(&rev.diffopt, ALLOW_TEXTCONV);
|
||||||
|
@ -873,7 +875,25 @@ static void wt_status_print_verbose(struct wt_status *s)
|
||||||
rev.diffopt.use_color = 0;
|
rev.diffopt.use_color = 0;
|
||||||
wt_status_add_cut_line(s->fp);
|
wt_status_add_cut_line(s->fp);
|
||||||
}
|
}
|
||||||
|
if (s->verbose > 1 && s->commitable) {
|
||||||
|
/* print_updated() printed a header, so do we */
|
||||||
|
if (s->fp != stdout)
|
||||||
|
wt_status_print_trailer(s);
|
||||||
|
status_printf_ln(s, c, _("Changes to be committed:"));
|
||||||
|
rev.diffopt.a_prefix = "c/";
|
||||||
|
rev.diffopt.b_prefix = "i/";
|
||||||
|
} /* else use prefix as per user config */
|
||||||
run_diff_index(&rev, 1);
|
run_diff_index(&rev, 1);
|
||||||
|
if (s->verbose > 1 &&
|
||||||
|
wt_status_check_worktree_changes(s, &dirty_submodules)) {
|
||||||
|
status_printf_ln(s, c,
|
||||||
|
"--------------------------------------------------");
|
||||||
|
status_printf_ln(s, c, _("Changes not staged for commit:"));
|
||||||
|
setup_work_tree();
|
||||||
|
rev.diffopt.a_prefix = "i/";
|
||||||
|
rev.diffopt.b_prefix = "w/";
|
||||||
|
run_diff_files(&rev, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wt_status_print_tracking(struct wt_status *s)
|
static void wt_status_print_tracking(struct wt_status *s)
|
||||||
|
|
Loading…
Reference in New Issue