From: Matthieu Moy <Matthieu.Moy@imag.fr>
To: git@vger.kernel.org
Cc: Matthieu Moy <Matthieu.Moy@imag.fr>
Subject: [RFC/PATCH] status: introduce status.displayCommentChar to disable display of #
Date: Wed, 28 Aug 2013 10:32:32 +0200 [thread overview]
Message-ID: <1377678752-16302-1-git-send-email-Matthieu.Moy@imag.fr> (raw)
Historically, "git status" needed to prefix each output line with '#' so
that the output could be added as comment to the commit message. This
prefix comment has no real purpose when "git status" is ran from the
command-line, and this may distract users from the real content.
Allow the user to disable this prefix comment. In the long run, if users
like the non-prefix output, it may make sense to flip the default value
to true.
Obviously, status.displayCommentChar applies to "git status" but is
ignored by "git commit", so the status is still commented in
COMMIT_EDITMSG.
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
As a beginner (long ago), I found this comment-prefixed output really
weird. I got used to it, so it stopped bugging me and I didn't do
anything to fix it.
Documentation/config.txt | 5 +++++
builtin/commit.c | 5 +++++
t/t7508-status.sh | 20 ++++++++++++++++++++
wt-status.c | 26 +++++++++++++++++++-------
wt-status.h | 1 +
5 files changed, 50 insertions(+), 7 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index ec57a15..dacf4b9 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2118,6 +2118,11 @@ status.branch::
Set to true to enable --branch by default in linkgit:git-status[1].
The option --no-branch takes precedence over this variable.
+status.displayCommentChar::
+ If set to false, linkgit:git-status[1] will not prefix each
+ line with the comment char (`core.commentchar`, i.e. `#` by
+ default). Defaults to true.
+
status.showUntrackedFiles::
By default, linkgit:git-status[1] and linkgit:git-commit[1] show
files which are not currently tracked by Git. Directories which
diff --git a/builtin/commit.c b/builtin/commit.c
index 10acc53..6d6b9d2 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1182,6 +1182,10 @@ static int git_status_config(const char *k, const char *v, void *cb)
s->use_color = git_config_colorbool(k, v);
return 0;
}
+ if (!strcmp(k, "status.displaycommentchar")) {
+ s->display_comment_char = git_config_bool(k, v);
+ return 0;
+ }
if (!prefixcmp(k, "status.color.") || !prefixcmp(k, "color.status.")) {
int slot = parse_status_slot(k, 13);
if (slot < 0)
@@ -1496,6 +1500,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
gitmodules_config();
git_config(git_commit_config, &s);
status_format = STATUS_FORMAT_NONE; /* Ignore status.short */
+ s.display_comment_char = 1; /* Ignore status.displayCommentChar */
determine_whence(&s);
s.colopts = 0;
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index ac3d0fe..7736426 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -113,6 +113,26 @@ test_expect_success 'status (2)' '
test_i18ncmp expect output
'
+test_expect_success 'status with status.displayCommentChar=false' '
+ "$PERL_PATH" -pi -e "s/^\# //; s/^\#$//; s/^#\t/\t/" expect &&
+ git -c status.displayCommentChar=false status >output &&
+ test_i18ncmp expect output
+'
+
+test_expect_success 'commit ignores status.displayCommentChar=false in COMMIT_EDITMSG' '
+ cat >.git/editor <<-\EOF &&
+ #! /bin/sh
+ cp "$1" output
+EOF
+ chmod 755 .git/editor &&
+ (
+ EDITOR=.git/editor &&
+ export EDITOR &&
+ test_must_fail git commit
+ ) &&
+ ! grep "^[^#]" output
+'
+
cat >expect <<\EOF
# On branch master
# Changes to be committed:
diff --git a/wt-status.c b/wt-status.c
index cb24f1f..765599d 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -45,9 +45,11 @@ static void status_vprintf(struct wt_status *s, int at_bol, const char *color,
strbuf_vaddf(&sb, fmt, ap);
if (!sb.len) {
- strbuf_addch(&sb, comment_line_char);
- if (!trail)
- strbuf_addch(&sb, ' ');
+ if (s->display_comment_char) {
+ strbuf_addch(&sb, comment_line_char);
+ if (!trail)
+ strbuf_addch(&sb, ' ');
+ }
color_print_strbuf(s->fp, color, &sb);
if (trail)
fprintf(s->fp, "%s", trail);
@@ -58,7 +60,7 @@ static void status_vprintf(struct wt_status *s, int at_bol, const char *color,
eol = strchr(line, '\n');
strbuf_reset(&linebuf);
- if (at_bol) {
+ if (at_bol && s->display_comment_char) {
strbuf_addch(&linebuf, comment_line_char);
if (*line != '\n' && *line != '\t')
strbuf_addch(&linebuf, ' ');
@@ -128,6 +130,7 @@ void wt_status_prepare(struct wt_status *s)
s->untracked.strdup_strings = 1;
s->ignored.strdup_strings = 1;
s->show_branch = -1; /* unspecified */
+ s->display_comment_char = 1;
}
static void wt_status_print_unmerged_header(struct wt_status *s)
@@ -774,12 +777,21 @@ static void wt_status_print_tracking(struct wt_status *s)
if (!format_tracking_info(branch, &sb))
return;
+ char comment_line_string[3];
+ int i = 0;
+ if (s->display_comment_char) {
+ comment_line_string[i++] = comment_line_char;
+ comment_line_string[i++] = ' ';
+ }
+ comment_line_string[i] = '\0';
+
for (cp = sb.buf; (ep = strchr(cp, '\n')) != NULL; cp = ep + 1)
color_fprintf_ln(s->fp, color(WT_STATUS_HEADER, s),
- "%c %.*s", comment_line_char,
+ "%s%.*s", comment_line_string,
(int)(ep - cp), cp);
- color_fprintf_ln(s->fp, color(WT_STATUS_HEADER, s), "%c",
- comment_line_char);
+ if (s->display_comment_char)
+ color_fprintf_ln(s->fp, color(WT_STATUS_HEADER, s), "%c",
+ comment_line_char);
}
static int has_unmerged(struct wt_status *s)
diff --git a/wt-status.h b/wt-status.h
index fb7152e..ac02c64 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -50,6 +50,7 @@ struct wt_status {
enum commit_whence whence;
int nowarn;
int use_color;
+ int display_comment_char;
int relative_paths;
int submodule_summary;
int show_ignored_files;
--
1.8.4.9.g95f16b1
next reply other threads:[~2013-08-28 8:37 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-28 8:32 Matthieu Moy [this message]
2013-08-28 11:03 ` [RFC/PATCH] status: introduce status.displayCommentChar to disable display of # Johannes Sixt
2013-08-28 12:43 ` Matthieu Moy
2013-08-28 12:47 ` [RFC/PATCH v2 1/3] builtin/stripspace.c: fix broken indentation Matthieu Moy
2013-08-28 12:47 ` [RFC/PATCH v2 2/3] submodule: introduce --[no-]display-comment-char Matthieu Moy
2013-08-28 21:07 ` Jens Lehmann
2013-08-29 7:04 ` Matthieu Moy
2013-08-28 12:47 ` [RFC/PATCH v2 3/3] status: introduce status.displayCommentChar to disable display of # Matthieu Moy
2013-08-28 20:05 ` Junio C Hamano
2013-08-28 20:10 ` Junio C Hamano
2013-08-28 20:18 ` Jeff King
2013-08-28 21:39 ` Junio C Hamano
2013-08-28 21:59 ` David Aguilar
2013-08-28 22:41 ` Junio C Hamano
2013-08-29 6:58 ` Matthieu Moy
2013-08-31 0:00 ` brian m. carlson
2013-08-28 20:59 ` Matthieu Moy
2013-08-28 21:53 ` Junio C Hamano
2013-08-28 21:50 ` Junio C Hamano
2013-08-28 23:13 ` Jonathan Nieder
2013-08-29 6:50 ` Matthieu Moy
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1377678752-16302-1-git-send-email-Matthieu.Moy@imag.fr \
--to=matthieu.moy@imag.fr \
--cc=git@vger.kernel.org \
/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.
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 NNTP newsgroup(s).