From: Michael J Gruber <git@drmicha.warpmail.net>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Matthieu Moy <Matthieu.Moy@imag.fr>
Subject: [PATCHv3 3/3] commit/status: show the index-worktree diff with -v -v
Date: Thu, 5 Mar 2015 15:13:04 +0100 [thread overview]
Message-ID: <cae757b238bdd71bf8d03f9040a08466194c3440.1425564336.git.git@drmicha.warpmail.net> (raw)
In-Reply-To: <xmqqr3t479ey.fsf@gitster.dls.corp.google.com>
In-Reply-To: <cover.1425564336.git.git@drmicha.warpmail.net>
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.
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
Documentation/git-commit.txt | 4 ++++
t/t7508-status.sh | 10 ++++++++++
wt-status.c | 16 ++++++++++++++++
3 files changed, 30 insertions(+)
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 1e74b75..f14d2ec 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -284,6 +284,10 @@ configuration variable documented in linkgit:git-config[1].
would be committed at the bottom of the commit message
template. Note that this diff output doesn't have its
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::
--quiet::
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index e3c9cf9..b392376 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -143,6 +143,16 @@ test_expect_success 'status -v' '
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 "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' '
cat >.git/editor <<-\EOF &&
#! /bin/sh
diff --git a/wt-status.c b/wt-status.c
index 29666d0..3cdb356 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -849,6 +849,8 @@ static void wt_status_print_verbose(struct wt_status *s)
{
struct rev_info rev;
struct setup_revision_opt opt;
+ int dirty_submodules;
+ const char *c = color(WT_STATUS_HEADER, s);
init_revisions(&rev, NULL);
DIFF_OPT_SET(&rev.diffopt, ALLOW_TEXTCONV);
@@ -873,7 +875,21 @@ static void wt_status_print_verbose(struct wt_status *s)
rev.diffopt.use_color = 0;
wt_status_add_cut_line(s->fp);
}
+ if (s->verbose > 1 && s->commitable) {
+ /* print_updated() printed header */
+ 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);
+ if (s->verbose > 1 &&
+ wt_status_check_worktree_changes(s, &dirty_submodules)) {
+ 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)
--
2.3.1.303.g5174db1
next prev parent reply other threads:[~2015-03-05 14:13 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-13 8:56 How to prevent empty git commit --amend Ivo Anjo
2015-01-13 8:59 ` Daniel Knittl-Frank
2015-01-13 10:22 ` Ivo Anjo
2015-01-13 11:20 ` Michael J Gruber
2015-01-14 10:00 ` Matthieu Moy
2015-01-14 12:15 ` Ivo Anjo
2015-01-14 12:45 ` Matthieu Moy
2015-01-14 17:27 ` Junio C Hamano
2015-01-14 17:36 ` Junio C Hamano
2015-01-15 16:08 ` [RFC/PATCH] commit/status: show the index-worktree with -v -v Michael J Gruber
2015-01-15 20:11 ` Junio C Hamano
2015-01-15 20:38 ` Junio C Hamano
2015-01-16 8:13 ` Michael J Gruber
2015-03-03 14:16 ` [PATCHv2 0/2] More diffs for commit/status Michael J Gruber
2015-03-03 14:16 ` [PATCHv2 1/2] t7508: test git status -v Michael J Gruber
2015-03-03 21:20 ` Junio C Hamano
2015-03-03 22:26 ` Junio C Hamano
2015-03-04 11:05 ` Michael J Gruber
2015-03-04 21:27 ` Junio C Hamano
2015-03-03 14:16 ` [PATCHv2 2/2] commit/status: show the index-worktree diff with -v -v Michael J Gruber
2015-03-03 21:26 ` Junio C Hamano
2015-03-04 11:11 ` Michael J Gruber
2015-03-04 21:13 ` Junio C Hamano
2015-03-05 14:13 ` [PATCHv3 0/3]More diffs for commit/status Michael J Gruber
2015-03-05 14:13 ` [PATCHv3 1/3] t7508: .gitignore 'expect' and 'output' files Michael J Gruber
2015-03-05 14:13 ` [PATCHv3 2/3] t7508: test git status -v Michael J Gruber
2015-03-05 14:13 ` Michael J Gruber [this message]
2015-03-05 19:25 ` [PATCHv3 0/3]More diffs for commit/status Junio C Hamano
2015-03-05 20:15 ` Junio C Hamano
2015-03-05 20:27 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cae757b238bdd71bf8d03f9040a08466194c3440.1425564336.git.git@drmicha.warpmail.net \
--to=git@drmicha.warpmail.net \
--cc=Matthieu.Moy@imag.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).