* [PATCH 0/8] Add color test for range-diff, simplify diff.c
@ 2018-07-28 3:04 Stefan Beller
2018-07-28 3:04 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
` (8 more replies)
0 siblings, 9 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
This is based on origin/js/range-diff (c255a588bcd) and is also available
via
git fetch https://github.com/stefanbeller/git ws_cleanup-ontop-range-diff-2
This adds some color testing to range-diff and then attempts to make the code
in diff.c around emit_line_0 more readable.
I think we can go further bit more (by e.g. cherry-picking
"ws: do not reset and set color twice" found at [1]), but that would be feature
work. This series doesn't change any existing tests!
[1] https://github.com/stefanbeller/git/tree/ws_cleanup-ontop-range-diff
Thanks,
Stefan
Stefan Beller (8):
test_decode_color: understand FAINT and ITALIC
t3206: add color test for range-diff --dual-color
diff.c: simplify caller of emit_line_0
diff.c: reorder arguments for emit_line_ws_markup
diff.c: add set_sign to emit_line_0
diff: use emit_line_0 once per line
diff.c: compute reverse locally in emit_line_0
diff.c: rewrite emit_line_0 more understandably
diff.c | 94 +++++++++++++++++++++++------------------
t/t3206-range-diff.sh | 39 +++++++++++++++++
t/test-lib-functions.sh | 2 +
3 files changed, 93 insertions(+), 42 deletions(-)
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 1/8] test_decode_color: understand FAINT and ITALIC
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 3:04 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
` (7 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
Signed-off-by: Stefan Beller <sbeller@google.com>
---
t/test-lib-functions.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 2b2181dca09..be8244c47b5 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -42,6 +42,8 @@ test_decode_color () {
function name(n) {
if (n == 0) return "RESET";
if (n == 1) return "BOLD";
+ if (n == 2) return "FAINT";
+ if (n == 3) return "ITALIC";
if (n == 7) return "REVERSE";
if (n == 30) return "BLACK";
if (n == 31) return "RED";
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 2/8] t3206: add color test for range-diff --dual-color
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
2018-07-28 3:04 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 6:27 ` Eric Sunshine
2018-07-28 3:04 ` [PATCH 3/8] diff.c: simplify caller of emit_line_0 Stefan Beller
` (6 subsequent siblings)
8 siblings, 1 reply; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
The 'expect'ed outcome is taken by running the 'range-diff |decode';
it is not meant as guidance, rather as a documentation of the current
situation.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
t/t3206-range-diff.sh | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
index 2237c7f4af9..ef652865cd7 100755
--- a/t/t3206-range-diff.sh
+++ b/t/t3206-range-diff.sh
@@ -142,4 +142,43 @@ test_expect_success 'changed message' '
test_cmp expected actual
'
+test_expect_success 'simple coloring' '
+ q_to_tab >expect <<-EOF &&
+ <YELLOW>1: a4b3333 = 1: f686024 s/5/A/<RESET>
+ <RED>2: f51d370 <RESET><YELLOW>!<RESET><GREEN> 2: 4ab067d<RESET><YELLOW> s/4/A/<RESET>
+ <REVERSE><CYAN>@@ -2,6 +2,8 @@<RESET>
+ <RESET>
+ s/4/A/<RESET>
+ <RESET>
+ <REVERSE><GREEN>+<RESET> <BOLD> Also a silly comment here!<RESET>
+ <REVERSE><GREEN>+<RESET>
+ diff --git a/file b/file<RESET>
+ <RED> --- a/file<RESET>
+ <GREEN> +++ b/file<RESET>
+ <RED>3: 0559556 <RESET><YELLOW>!<RESET><GREEN> 3: b9cb956<RESET><YELLOW> s/11/B/<RESET>
+ <REVERSE><CYAN>@@ -10,7 +10,7 @@<RESET>
+ 9<RESET>
+ 10<RESET>
+ <RED> -11<RESET>
+ <REVERSE><RED>-<RESET><FAINT;GREEN>+BB<RESET>
+ <REVERSE><GREEN>+<RESET><BOLD;GREEN>+B<RESET>
+ 12<RESET>
+ 13<RESET>
+ 14<RESET>
+ <RED>4: d966c5c <RESET><YELLOW>!<RESET><GREEN> 4: 8add5f1<RESET><YELLOW> s/12/B/<RESET>
+ <REVERSE><CYAN>@@ -8,7 +8,7 @@<RESET>
+ <CYAN> @@<RESET>
+ 9<RESET>
+ 10<RESET>
+ <REVERSE><RED>-<RESET><FAINT> BB<RESET>
+ <REVERSE><GREEN>+<RESET> <BOLD>B<RESET>
+ <RED> -12<RESET>
+ <GREEN> +B<RESET>
+ 13<RESET>
+ EOF
+ git range-diff changed...changed-message --color --dual-color >actual.raw &&
+ test_decode_color >actual <actual.raw &&
+ test_cmp expect actual
+'
+
test_done
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 3/8] diff.c: simplify caller of emit_line_0
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
2018-07-28 3:04 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
2018-07-28 3:04 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 3:04 ` [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup Stefan Beller
` (5 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
Due to the previous condition we know "set_sign != NULL" at that point.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/diff.c b/diff.c
index 272b0b93834..f7251c89cbb 100644
--- a/diff.c
+++ b/diff.c
@@ -997,8 +997,7 @@ static void emit_line_ws_markup(struct diff_options *o,
emit_line_0(o, set, 0, reset, sign, line, len);
else if (!ws) {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset,
- sign, "", 0);
+ emit_line_0(o, set_sign, !!set_sign, reset, sign, "", 0);
emit_line_0(o, set, 0, reset, 0, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (2 preceding siblings ...)
2018-07-28 3:04 ` [PATCH 3/8] diff.c: simplify caller of emit_line_0 Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 3:04 ` [PATCH 5/8] diff.c: add set_sign to emit_line_0 Stefan Beller
` (4 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
The order shall be all colors first, then the content, flags at the end.
The colors are in order.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/diff.c b/diff.c
index f7251c89cbb..8fd2171d808 100644
--- a/diff.c
+++ b/diff.c
@@ -980,9 +980,9 @@ static void dim_moved_lines(struct diff_options *o)
}
static void emit_line_ws_markup(struct diff_options *o,
- const char *set, const char *reset,
- const char *line, int len,
- const char *set_sign, char sign,
+ const char *set_sign, const char *set,
+ const char *reset,
+ char sign, const char *line, int len,
unsigned ws_rule, int blank_at_eof)
{
const char *ws = NULL;
@@ -1066,7 +1066,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
else if (c == '-')
set = diff_get_color_opt(o, DIFF_FILE_OLD);
}
- emit_line_ws_markup(o, set, reset, line, len, set_sign, ' ',
+ emit_line_ws_markup(o, set_sign, set, reset, ' ', line, len,
flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0);
break;
case DIFF_SYMBOL_PLUS:
@@ -1109,7 +1109,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
set = diff_get_color_opt(o, DIFF_CONTEXT_BOLD);
flags |= WS_IGNORE_FIRST_SPACE;
}
- emit_line_ws_markup(o, set, reset, line, len, set_sign, '+',
+ emit_line_ws_markup(o, set_sign, set, reset, '+', line, len,
flags & DIFF_SYMBOL_CONTENT_WS_MASK,
flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF);
break;
@@ -1152,7 +1152,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
else
set = diff_get_color_opt(o, DIFF_CONTEXT_DIM);
}
- emit_line_ws_markup(o, set, reset, line, len, set_sign, '-',
+ emit_line_ws_markup(o, set_sign, set, reset, '-', line, len,
flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0);
break;
case DIFF_SYMBOL_WORDS_PORCELAIN:
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 5/8] diff.c: add set_sign to emit_line_0
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (3 preceding siblings ...)
2018-07-28 3:04 ` [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 6:30 ` Eric Sunshine
2018-07-28 3:04 ` [PATCH 6/8] diff: use emit_line_0 once per line Stefan Beller
` (3 subsequent siblings)
8 siblings, 1 reply; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
For now just change the signature, we'll reason about the actual
change in a follow up patch.
Pass set_sign (which is output before the sign) and set that is setting
the color after the sign. Hence, promote any 'set's to set_sign as
we want to have color before the sign for now.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/diff.c b/diff.c
index 8fd2171d808..a36ed92c54c 100644
--- a/diff.c
+++ b/diff.c
@@ -576,7 +576,7 @@ static void check_blank_at_eof(mmfile_t *mf1, mmfile_t *mf2,
}
static void emit_line_0(struct diff_options *o,
- const char *set, unsigned reverse, const char *reset,
+ const char *set_sign, const char *set, unsigned reverse, const char *reset,
int first, const char *line, int len)
{
int has_trailing_newline, has_trailing_carriage_return;
@@ -606,9 +606,12 @@ static void emit_line_0(struct diff_options *o,
if (len || !nofirst) {
if (reverse && want_color(o->use_color))
fputs(GIT_COLOR_REVERSE, file);
- fputs(set, file);
+ if (set_sign && set_sign[0])
+ fputs(set_sign, file);
if (first && !nofirst)
fputc(first, file);
+ if (set)
+ fputs(set, file);
fwrite(line, len, 1, file);
fputs(reset, file);
}
@@ -621,7 +624,7 @@ static void emit_line_0(struct diff_options *o,
static void emit_line(struct diff_options *o, const char *set, const char *reset,
const char *line, int len)
{
- emit_line_0(o, set, 0, reset, line[0], line+1, len-1);
+ emit_line_0(o, set, NULL, 0, reset, line[0], line+1, len-1);
}
enum diff_symbol {
@@ -994,17 +997,17 @@ static void emit_line_ws_markup(struct diff_options *o,
}
if (!ws && !set_sign)
- emit_line_0(o, set, 0, reset, sign, line, len);
+ emit_line_0(o, set, NULL, 0, reset, sign, line, len);
else if (!ws) {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign, !!set_sign, reset, sign, "", 0);
- emit_line_0(o, set, 0, reset, 0, line, len);
+ emit_line_0(o, set_sign, NULL, !!set_sign, reset, sign, "", 0);
+ emit_line_0(o, set, NULL, 0, reset, 0, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
- emit_line_0(o, ws, 0, reset, sign, line, len);
+ emit_line_0(o, ws, NULL, 0, reset, sign, line, len);
else {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset,
+ emit_line_0(o, set_sign ? set_sign : set, NULL, !!set_sign, reset,
sign, "", 0);
ws_check_emit(line, len, ws_rule,
o->file, set, reset, ws);
@@ -1028,7 +1031,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
context = diff_get_color_opt(o, DIFF_CONTEXT);
reset = diff_get_color_opt(o, DIFF_RESET);
putc('\n', o->file);
- emit_line_0(o, context, 0, reset, '\\',
+ emit_line_0(o, context, NULL, 0, reset, '\\',
nneof, strlen(nneof));
break;
case DIFF_SYMBOL_SUBMODULE_HEADER:
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 6/8] diff: use emit_line_0 once per line
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (4 preceding siblings ...)
2018-07-28 3:04 ` [PATCH 5/8] diff.c: add set_sign to emit_line_0 Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 3:04 ` [PATCH 7/8] diff.c: compute reverse locally in emit_line_0 Stefan Beller
` (2 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
All lines that use emit_line_0 multiple times per line, are combined
into a single call to emit_line_0, making use of the 'set' argument.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/diff.c b/diff.c
index a36ed92c54c..fdad7ffdd77 100644
--- a/diff.c
+++ b/diff.c
@@ -583,10 +583,7 @@ static void emit_line_0(struct diff_options *o,
int nofirst;
FILE *file = o->file;
- if (first)
- fputs(diff_line_prefix(o), file);
- else if (!len)
- return;
+ fputs(diff_line_prefix(o), file);
if (len == 0) {
has_trailing_newline = (first == '\n');
@@ -606,13 +603,17 @@ static void emit_line_0(struct diff_options *o,
if (len || !nofirst) {
if (reverse && want_color(o->use_color))
fputs(GIT_COLOR_REVERSE, file);
- if (set_sign && set_sign[0])
- fputs(set_sign, file);
+ if (set_sign || set)
+ fputs(set_sign ? set_sign : set, file);
if (first && !nofirst)
fputc(first, file);
- if (set)
- fputs(set, file);
- fwrite(line, len, 1, file);
+ if (len) {
+ if (set_sign && set && set != set_sign)
+ fputs(reset, file);
+ if (set)
+ fputs(set, file);
+ fwrite(line, len, 1, file);
+ }
fputs(reset, file);
}
if (has_trailing_carriage_return)
@@ -999,16 +1000,13 @@ static void emit_line_ws_markup(struct diff_options *o,
if (!ws && !set_sign)
emit_line_0(o, set, NULL, 0, reset, sign, line, len);
else if (!ws) {
- /* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign, NULL, !!set_sign, reset, sign, "", 0);
- emit_line_0(o, set, NULL, 0, reset, 0, line, len);
+ emit_line_0(o, set_sign, set, !!set_sign, reset, sign, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
emit_line_0(o, ws, NULL, 0, reset, sign, line, len);
else {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign ? set_sign : set, NULL, !!set_sign, reset,
- sign, "", 0);
+ emit_line_0(o, set_sign, set, !!set_sign, reset, sign, "", 0);
ws_check_emit(line, len, ws_rule,
o->file, set, reset, ws);
}
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 7/8] diff.c: compute reverse locally in emit_line_0
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (5 preceding siblings ...)
2018-07-28 3:04 ` [PATCH 6/8] diff: use emit_line_0 once per line Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 3:04 ` [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably Stefan Beller
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/diff.c b/diff.c
index fdad7ffdd77..f565a2c0c2b 100644
--- a/diff.c
+++ b/diff.c
@@ -576,11 +576,12 @@ static void check_blank_at_eof(mmfile_t *mf1, mmfile_t *mf2,
}
static void emit_line_0(struct diff_options *o,
- const char *set_sign, const char *set, unsigned reverse, const char *reset,
+ const char *set_sign, const char *set, const char *reset,
int first, const char *line, int len)
{
int has_trailing_newline, has_trailing_carriage_return;
int nofirst;
+ int reverse = !!set && !!set_sign;
FILE *file = o->file;
fputs(diff_line_prefix(o), file);
@@ -625,7 +626,7 @@ static void emit_line_0(struct diff_options *o,
static void emit_line(struct diff_options *o, const char *set, const char *reset,
const char *line, int len)
{
- emit_line_0(o, set, NULL, 0, reset, line[0], line+1, len-1);
+ emit_line_0(o, set, NULL, reset, line[0], line+1, len-1);
}
enum diff_symbol {
@@ -998,15 +999,15 @@ static void emit_line_ws_markup(struct diff_options *o,
}
if (!ws && !set_sign)
- emit_line_0(o, set, NULL, 0, reset, sign, line, len);
+ emit_line_0(o, set, NULL, reset, sign, line, len);
else if (!ws) {
- emit_line_0(o, set_sign, set, !!set_sign, reset, sign, line, len);
+ emit_line_0(o, set_sign, set, reset, sign, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
- emit_line_0(o, ws, NULL, 0, reset, sign, line, len);
+ emit_line_0(o, ws, NULL, reset, sign, line, len);
else {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign, set, !!set_sign, reset, sign, "", 0);
+ emit_line_0(o, set_sign, set, reset, sign, "", 0);
ws_check_emit(line, len, ws_rule,
o->file, set, reset, ws);
}
@@ -1029,7 +1030,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
context = diff_get_color_opt(o, DIFF_CONTEXT);
reset = diff_get_color_opt(o, DIFF_RESET);
putc('\n', o->file);
- emit_line_0(o, context, NULL, 0, reset, '\\',
+ emit_line_0(o, context, NULL, reset, '\\',
nneof, strlen(nneof));
break;
case DIFF_SYMBOL_SUBMODULE_HEADER:
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (6 preceding siblings ...)
2018-07-28 3:04 ` [PATCH 7/8] diff.c: compute reverse locally in emit_line_0 Stefan Beller
@ 2018-07-28 3:04 ` Stefan Beller
2018-07-28 6:33 ` Eric Sunshine
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
8 siblings, 1 reply; 26+ messages in thread
From: Stefan Beller @ 2018-07-28 3:04 UTC (permalink / raw)
To: git; +Cc: Johannes.Schindelin, Stefan Beller
emit_line_0 has no nested conditions, but puts out all its arguments
(if set) in order. There is still a slight confusion with set
and set_sign, but let's defer that to a later patch.
'first' used be output always no matter if it was 0, but that got lost
got lost at e8c285c4f9c (diff: add an internal option to dual-color
diffs of diffs, 2018-07-21), as there we broadened the meaning of 'first'
to also signal an early return.
The change in 'emit_line' makes sure that 'first' is never content, but
always under our control, a sign or special character in the beginning
of the line (or 0, in which case we ignore it).
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 73 +++++++++++++++++++++++++++++++++-------------------------
1 file changed, 41 insertions(+), 32 deletions(-)
diff --git a/diff.c b/diff.c
index f565a2c0c2b..2bd4d3d6839 100644
--- a/diff.c
+++ b/diff.c
@@ -580,43 +580,52 @@ static void emit_line_0(struct diff_options *o,
int first, const char *line, int len)
{
int has_trailing_newline, has_trailing_carriage_return;
- int nofirst;
int reverse = !!set && !!set_sign;
+ int needs_reset = 0;
+
FILE *file = o->file;
fputs(diff_line_prefix(o), file);
- if (len == 0) {
- has_trailing_newline = (first == '\n');
- has_trailing_carriage_return = (!has_trailing_newline &&
- (first == '\r'));
- nofirst = has_trailing_newline || has_trailing_carriage_return;
- } else {
- has_trailing_newline = (len > 0 && line[len-1] == '\n');
- if (has_trailing_newline)
- len--;
- has_trailing_carriage_return = (len > 0 && line[len-1] == '\r');
- if (has_trailing_carriage_return)
- len--;
- nofirst = 0;
- }
-
- if (len || !nofirst) {
- if (reverse && want_color(o->use_color))
- fputs(GIT_COLOR_REVERSE, file);
- if (set_sign || set)
- fputs(set_sign ? set_sign : set, file);
- if (first && !nofirst)
- fputc(first, file);
- if (len) {
- if (set_sign && set && set != set_sign)
- fputs(reset, file);
- if (set)
- fputs(set, file);
- fwrite(line, len, 1, file);
- }
- fputs(reset, file);
+ has_trailing_newline = (len > 0 && line[len-1] == '\n');
+ if (has_trailing_newline)
+ len--;
+
+ has_trailing_carriage_return = (len > 0 && line[len-1] == '\r');
+ if (has_trailing_carriage_return)
+ len--;
+
+ if (!len && !first)
+ goto end_of_line;
+
+ if (reverse && want_color(o->use_color)) {
+ fputs(GIT_COLOR_REVERSE, file);
+ needs_reset = 1;
+ }
+
+ if (set_sign || set) {
+ fputs(set_sign ? set_sign : set, file);
+ needs_reset = 1;
}
+
+ if (first)
+ fputc(first, file);
+
+ if (!len)
+ goto end_of_line;
+
+ if (set) {
+ if (set_sign && set != set_sign)
+ fputs(reset, file);
+ fputs(set, file);
+ needs_reset = 1;
+ }
+ fwrite(line, len, 1, file);
+ needs_reset |= len > 0;
+
+end_of_line:
+ if (needs_reset)
+ fputs(reset, file);
if (has_trailing_carriage_return)
fputc('\r', file);
if (has_trailing_newline)
@@ -626,7 +635,7 @@ static void emit_line_0(struct diff_options *o,
static void emit_line(struct diff_options *o, const char *set, const char *reset,
const char *line, int len)
{
- emit_line_0(o, set, NULL, reset, line[0], line+1, len-1);
+ emit_line_0(o, set, NULL, reset, 0, line, len);
}
enum diff_symbol {
--
2.18.0.345.g5c9ce644c3-goog
^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [PATCH 2/8] t3206: add color test for range-diff --dual-color
2018-07-28 3:04 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
@ 2018-07-28 6:27 ` Eric Sunshine
2018-07-30 19:55 ` Stefan Beller
0 siblings, 1 reply; 26+ messages in thread
From: Eric Sunshine @ 2018-07-28 6:27 UTC (permalink / raw)
To: Stefan Beller; +Cc: Git List, Johannes Schindelin
On Fri, Jul 27, 2018 at 11:05 PM Stefan Beller <sbeller@google.com> wrote:
> The 'expect'ed outcome is taken by running the 'range-diff |decode';
> it is not meant as guidance, rather as a documentation of the current
> situation.
I'm not really sure what this is trying to say. It seems _too_ brief.
Did you want a space after the vertical bar before "decode"?
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
> diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
> +test_expect_success 'simple coloring' '
> + q_to_tab >expect <<-EOF &&
Why 'q_to_tab'? I don't see any "q"'s in the body.
I also don't see any variable interpolation in the body, so maybe you
want -\EOF instead?
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 5/8] diff.c: add set_sign to emit_line_0
2018-07-28 3:04 ` [PATCH 5/8] diff.c: add set_sign to emit_line_0 Stefan Beller
@ 2018-07-28 6:30 ` Eric Sunshine
0 siblings, 0 replies; 26+ messages in thread
From: Eric Sunshine @ 2018-07-28 6:30 UTC (permalink / raw)
To: Stefan Beller; +Cc: Git List, Johannes Schindelin
On Fri, Jul 27, 2018 at 11:05 PM Stefan Beller <sbeller@google.com> wrote:
> For now just change the signature, we'll reason about the actual
> change in a follow up patch.
>
> Pass set_sign (which is output before the sign) and set that is setting
> the color after the sign. Hence, promote any 'set's to set_sign as
> we want to have color before the sign for now.
ECANTPARSE: "and set that is setting"
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably
2018-07-28 3:04 ` [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably Stefan Beller
@ 2018-07-28 6:33 ` Eric Sunshine
0 siblings, 0 replies; 26+ messages in thread
From: Eric Sunshine @ 2018-07-28 6:33 UTC (permalink / raw)
To: Stefan Beller; +Cc: Git List, Johannes Schindelin
On Fri, Jul 27, 2018 at 11:05 PM Stefan Beller <sbeller@google.com> wrote:
> emit_line_0 has no nested conditions, but puts out all its arguments
> (if set) in order. There is still a slight confusion with set
> and set_sign, but let's defer that to a later patch.
>
> 'first' used be output always no matter if it was 0, but that got lost
> got lost at e8c285c4f9c (diff: add an internal option to dual-color
> diffs of diffs, 2018-07-21), as there we broadened the meaning of 'first'
> to also signal an early return.
s/used be/used to be/
redundant "got lost"
> The change in 'emit_line' makes sure that 'first' is never content, but
> always under our control, a sign or special character in the beginning
> of the line (or 0, in which case we ignore it).
>
> Signed-off-by: Stefan Beller <sbeller@google.com>
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 2/8] t3206: add color test for range-diff --dual-color
2018-07-28 6:27 ` Eric Sunshine
@ 2018-07-30 19:55 ` Stefan Beller
0 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-30 19:55 UTC (permalink / raw)
To: Eric Sunshine; +Cc: git, Johannes Schindelin
On Fri, Jul 27, 2018 at 11:28 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
>
> On Fri, Jul 27, 2018 at 11:05 PM Stefan Beller <sbeller@google.com> wrote:
> > The 'expect'ed outcome is taken by running the 'range-diff |decode';
> > it is not meant as guidance, rather as a documentation of the current
> > situation.
>
> I'm not really sure what this is trying to say. It seems _too_ brief.
>
> Did you want a space after the vertical bar before "decode"?
I am trying to say that this patch was generated by inserting
a "true && test_pause" first and then inside that paused test,
I just run
source <path>/t/test-lib-functions.sh
git range-diff changed...changed-message --color --dual-color \
| test_decode_color
and saved that as the expected outcome, I was prepared to
massage it gently by s/<TAB>/Q/ but that was not needed,
but I forgot the q_to_tab in place.
By adding the test this way, I just want to state "I observed
the functionality as produced in this patch". I do not want
to endorse the coloring scheme or claim it is good (it is,
but I also still have nits to pick). So I tried to briefly say
that the test is essentially "autogenerated" by just observing
output at that point in time.
>
> > Signed-off-by: Stefan Beller <sbeller@google.com>
> > ---
> > diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
> > +test_expect_success 'simple coloring' '
> > + q_to_tab >expect <<-EOF &&
>
> Why 'q_to_tab'? I don't see any "q"'s in the body.
>
> I also don't see any variable interpolation in the body, so maybe you
> want -\EOF instead?
All good suggestions! Thanks for the review, I'll incorporate them.
Thanks,
Stefan
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCHv2 0/8] Add color test for range-diff, simplify diff.c
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (7 preceding siblings ...)
2018-07-28 3:04 ` [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 0:31 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
` (8 more replies)
8 siblings, 9 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
addressed all of Erics feedback:
* reworded commit messages
* dropped q_to_tab and use cat instead
* use -\EOF isntead of -EOF
Thanks,
Stefan
Stefan Beller (8):
test_decode_color: understand FAINT and ITALIC
t3206: add color test for range-diff --dual-color
diff.c: simplify caller of emit_line_0
diff.c: reorder arguments for emit_line_ws_markup
diff.c: add set_sign to emit_line_0
diff: use emit_line_0 once per line
diff.c: compute reverse locally in emit_line_0
diff.c: rewrite emit_line_0 more understandably
diff.c | 94 +++++++++++++++++++++++------------------
t/t3206-range-diff.sh | 39 +++++++++++++++++
t/test-lib-functions.sh | 2 +
3 files changed, 93 insertions(+), 42 deletions(-)
./git-range-diff ws_cleanup-ontop-range-diff-2@{2.hours.ago}...HEAD >>0000-cover-letter.patch
[dropped changes to range-diff itself]
13: a02ea020ae7 ! 13: 16f71b43f48 t3206: add color test for range-diff --dual-color
@@ -2,9 +2,7 @@
t3206: add color test for range-diff --dual-color
- The 'expect'ed outcome is taken by running the 'range-diff |decode';
- it is not meant as guidance, rather as a documentation of the current
- situation.
+ The 'expect'ed outcome has been taken by running the 'range-diff | decode'.
Signed-off-by: Stefan Beller <sbeller@google.com>
@@ -15,8 +13,8 @@
test_cmp expected actual
'
-+test_expect_success 'simple coloring' '
-+ q_to_tab >expect <<-EOF &&
++test_expect_success 'dual-coloring' '
++ cat >expect <<-\EOF &&
+ <YELLOW>1: a4b3333 = 1: f686024 s/5/A/<RESET>
+ <RED>2: f51d370 <RESET><YELLOW>!<RESET><GREEN> 2: 4ab067d<RESET><YELLOW> s/4/A/<RESET>
+ <REVERSE><CYAN>@@ -2,6 +2,8 @@<RESET>
14: c8734075229 = 14: abd1ec80608 diff.c: simplify caller of emit_line_0
15: ba98acffcda = 15: bc29037f4f0 diff.c: reorder arguments for emit_line_ws_markup
16: 5a576baeb49 ! 16: 8f6ee340f1e diff.c: add set_sign to emit_line_0
@@ -5,9 +5,10 @@
For now just change the signature, we'll reason about the actual
change in a follow up patch.
- Pass set_sign (which is output before the sign) and set that is setting
- the color after the sign. Hence, promote any 'set's to set_sign as
- we want to have color before the sign for now.
+ Pass 'set_sign' (which is output before the sign) and 'set' which
+ controls the color after the first character. Hence, promote any
+ 'set's to 'set_sign' as we want to have color before the sign
+ for now.
Signed-off-by: Stefan Beller <sbeller@google.com>
17: 4e2d5a4c7f3 = 17: 0ab5920a9ab diff: use emit_line_0 once per line
18: 460713e1c3c = 18: 2d05ebdd280 diff.c: compute reverse locally in emit_line_0
19: e442d722b7f ! 19: 001e6042d81 diff.c: rewrite emit_line_0 more understandably
@@ -7,9 +7,9 @@
and set_sign, but let's defer that to a later patch.
'first' used be output always no matter if it was 0, but that got lost
- got lost at e8c285c4f9c (diff: add an internal option to dual-color
- diffs of diffs, 2018-07-21), as there we broadened the meaning of 'first'
- to also signal an early return.
+ at "diff: add an internal option to dual-color diffs of diffs",
+ 2018-07-21), as there we broadened the meaning of 'first' to also
+ signal an early return.
The change in 'emit_line' makes sure that 'first' is never content, but
always under our control, a sign or special character in the beginning
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 1/8] test_decode_color: understand FAINT and ITALIC
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 0:31 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
` (7 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
Signed-off-by: Stefan Beller <sbeller@google.com>
---
t/test-lib-functions.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 2b2181dca09..be8244c47b5 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -42,6 +42,8 @@ test_decode_color () {
function name(n) {
if (n == 0) return "RESET";
if (n == 1) return "BOLD";
+ if (n == 2) return "FAINT";
+ if (n == 3) return "ITALIC";
if (n == 7) return "REVERSE";
if (n == 30) return "BLACK";
if (n == 31) return "RED";
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 2/8] t3206: add color test for range-diff --dual-color
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
2018-07-31 0:31 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 20:51 ` Junio C Hamano
2018-07-31 0:31 ` [PATCH 3/8] diff.c: simplify caller of emit_line_0 Stefan Beller
` (6 subsequent siblings)
8 siblings, 1 reply; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
The 'expect'ed outcome has been taken by running the 'range-diff | decode'.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
t/t3206-range-diff.sh | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
index 2237c7f4af9..019724e61a0 100755
--- a/t/t3206-range-diff.sh
+++ b/t/t3206-range-diff.sh
@@ -142,4 +142,43 @@ test_expect_success 'changed message' '
test_cmp expected actual
'
+test_expect_success 'dual-coloring' '
+ cat >expect <<-\EOF &&
+ <YELLOW>1: a4b3333 = 1: f686024 s/5/A/<RESET>
+ <RED>2: f51d370 <RESET><YELLOW>!<RESET><GREEN> 2: 4ab067d<RESET><YELLOW> s/4/A/<RESET>
+ <REVERSE><CYAN>@@ -2,6 +2,8 @@<RESET>
+ <RESET>
+ s/4/A/<RESET>
+ <RESET>
+ <REVERSE><GREEN>+<RESET> <BOLD> Also a silly comment here!<RESET>
+ <REVERSE><GREEN>+<RESET>
+ diff --git a/file b/file<RESET>
+ <RED> --- a/file<RESET>
+ <GREEN> +++ b/file<RESET>
+ <RED>3: 0559556 <RESET><YELLOW>!<RESET><GREEN> 3: b9cb956<RESET><YELLOW> s/11/B/<RESET>
+ <REVERSE><CYAN>@@ -10,7 +10,7 @@<RESET>
+ 9<RESET>
+ 10<RESET>
+ <RED> -11<RESET>
+ <REVERSE><RED>-<RESET><FAINT;GREEN>+BB<RESET>
+ <REVERSE><GREEN>+<RESET><BOLD;GREEN>+B<RESET>
+ 12<RESET>
+ 13<RESET>
+ 14<RESET>
+ <RED>4: d966c5c <RESET><YELLOW>!<RESET><GREEN> 4: 8add5f1<RESET><YELLOW> s/12/B/<RESET>
+ <REVERSE><CYAN>@@ -8,7 +8,7 @@<RESET>
+ <CYAN> @@<RESET>
+ 9<RESET>
+ 10<RESET>
+ <REVERSE><RED>-<RESET><FAINT> BB<RESET>
+ <REVERSE><GREEN>+<RESET> <BOLD>B<RESET>
+ <RED> -12<RESET>
+ <GREEN> +B<RESET>
+ 13<RESET>
+ EOF
+ git range-diff changed...changed-message --color --dual-color >actual.raw &&
+ test_decode_color >actual <actual.raw &&
+ test_cmp expect actual
+'
+
test_done
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 3/8] diff.c: simplify caller of emit_line_0
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
2018-07-31 0:31 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
2018-07-31 0:31 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 0:31 ` [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup Stefan Beller
` (5 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
Due to the previous condition we know "set_sign != NULL" at that point.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/diff.c b/diff.c
index 272b0b93834..f7251c89cbb 100644
--- a/diff.c
+++ b/diff.c
@@ -997,8 +997,7 @@ static void emit_line_ws_markup(struct diff_options *o,
emit_line_0(o, set, 0, reset, sign, line, len);
else if (!ws) {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset,
- sign, "", 0);
+ emit_line_0(o, set_sign, !!set_sign, reset, sign, "", 0);
emit_line_0(o, set, 0, reset, 0, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (2 preceding siblings ...)
2018-07-31 0:31 ` [PATCH 3/8] diff.c: simplify caller of emit_line_0 Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 0:31 ` [PATCH 5/8] diff.c: add set_sign to emit_line_0 Stefan Beller
` (4 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
The order shall be all colors first, then the content, flags at the end.
The colors are in order.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/diff.c b/diff.c
index f7251c89cbb..8fd2171d808 100644
--- a/diff.c
+++ b/diff.c
@@ -980,9 +980,9 @@ static void dim_moved_lines(struct diff_options *o)
}
static void emit_line_ws_markup(struct diff_options *o,
- const char *set, const char *reset,
- const char *line, int len,
- const char *set_sign, char sign,
+ const char *set_sign, const char *set,
+ const char *reset,
+ char sign, const char *line, int len,
unsigned ws_rule, int blank_at_eof)
{
const char *ws = NULL;
@@ -1066,7 +1066,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
else if (c == '-')
set = diff_get_color_opt(o, DIFF_FILE_OLD);
}
- emit_line_ws_markup(o, set, reset, line, len, set_sign, ' ',
+ emit_line_ws_markup(o, set_sign, set, reset, ' ', line, len,
flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0);
break;
case DIFF_SYMBOL_PLUS:
@@ -1109,7 +1109,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
set = diff_get_color_opt(o, DIFF_CONTEXT_BOLD);
flags |= WS_IGNORE_FIRST_SPACE;
}
- emit_line_ws_markup(o, set, reset, line, len, set_sign, '+',
+ emit_line_ws_markup(o, set_sign, set, reset, '+', line, len,
flags & DIFF_SYMBOL_CONTENT_WS_MASK,
flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF);
break;
@@ -1152,7 +1152,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
else
set = diff_get_color_opt(o, DIFF_CONTEXT_DIM);
}
- emit_line_ws_markup(o, set, reset, line, len, set_sign, '-',
+ emit_line_ws_markup(o, set_sign, set, reset, '-', line, len,
flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0);
break;
case DIFF_SYMBOL_WORDS_PORCELAIN:
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 5/8] diff.c: add set_sign to emit_line_0
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (3 preceding siblings ...)
2018-07-31 0:31 ` [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 0:31 ` [PATCH 6/8] diff: use emit_line_0 once per line Stefan Beller
` (3 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
For now just change the signature, we'll reason about the actual
change in a follow up patch.
Pass 'set_sign' (which is output before the sign) and 'set' which
controls the color after the first character. Hence, promote any
'set's to 'set_sign' as we want to have color before the sign
for now.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/diff.c b/diff.c
index 8fd2171d808..a36ed92c54c 100644
--- a/diff.c
+++ b/diff.c
@@ -576,7 +576,7 @@ static void check_blank_at_eof(mmfile_t *mf1, mmfile_t *mf2,
}
static void emit_line_0(struct diff_options *o,
- const char *set, unsigned reverse, const char *reset,
+ const char *set_sign, const char *set, unsigned reverse, const char *reset,
int first, const char *line, int len)
{
int has_trailing_newline, has_trailing_carriage_return;
@@ -606,9 +606,12 @@ static void emit_line_0(struct diff_options *o,
if (len || !nofirst) {
if (reverse && want_color(o->use_color))
fputs(GIT_COLOR_REVERSE, file);
- fputs(set, file);
+ if (set_sign && set_sign[0])
+ fputs(set_sign, file);
if (first && !nofirst)
fputc(first, file);
+ if (set)
+ fputs(set, file);
fwrite(line, len, 1, file);
fputs(reset, file);
}
@@ -621,7 +624,7 @@ static void emit_line_0(struct diff_options *o,
static void emit_line(struct diff_options *o, const char *set, const char *reset,
const char *line, int len)
{
- emit_line_0(o, set, 0, reset, line[0], line+1, len-1);
+ emit_line_0(o, set, NULL, 0, reset, line[0], line+1, len-1);
}
enum diff_symbol {
@@ -994,17 +997,17 @@ static void emit_line_ws_markup(struct diff_options *o,
}
if (!ws && !set_sign)
- emit_line_0(o, set, 0, reset, sign, line, len);
+ emit_line_0(o, set, NULL, 0, reset, sign, line, len);
else if (!ws) {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign, !!set_sign, reset, sign, "", 0);
- emit_line_0(o, set, 0, reset, 0, line, len);
+ emit_line_0(o, set_sign, NULL, !!set_sign, reset, sign, "", 0);
+ emit_line_0(o, set, NULL, 0, reset, 0, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
- emit_line_0(o, ws, 0, reset, sign, line, len);
+ emit_line_0(o, ws, NULL, 0, reset, sign, line, len);
else {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset,
+ emit_line_0(o, set_sign ? set_sign : set, NULL, !!set_sign, reset,
sign, "", 0);
ws_check_emit(line, len, ws_rule,
o->file, set, reset, ws);
@@ -1028,7 +1031,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
context = diff_get_color_opt(o, DIFF_CONTEXT);
reset = diff_get_color_opt(o, DIFF_RESET);
putc('\n', o->file);
- emit_line_0(o, context, 0, reset, '\\',
+ emit_line_0(o, context, NULL, 0, reset, '\\',
nneof, strlen(nneof));
break;
case DIFF_SYMBOL_SUBMODULE_HEADER:
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 6/8] diff: use emit_line_0 once per line
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (4 preceding siblings ...)
2018-07-31 0:31 ` [PATCH 5/8] diff.c: add set_sign to emit_line_0 Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 0:31 ` [PATCH 7/8] diff.c: compute reverse locally in emit_line_0 Stefan Beller
` (2 subsequent siblings)
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
All lines that use emit_line_0 multiple times per line, are combined
into a single call to emit_line_0, making use of the 'set' argument.
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/diff.c b/diff.c
index a36ed92c54c..fdad7ffdd77 100644
--- a/diff.c
+++ b/diff.c
@@ -583,10 +583,7 @@ static void emit_line_0(struct diff_options *o,
int nofirst;
FILE *file = o->file;
- if (first)
- fputs(diff_line_prefix(o), file);
- else if (!len)
- return;
+ fputs(diff_line_prefix(o), file);
if (len == 0) {
has_trailing_newline = (first == '\n');
@@ -606,13 +603,17 @@ static void emit_line_0(struct diff_options *o,
if (len || !nofirst) {
if (reverse && want_color(o->use_color))
fputs(GIT_COLOR_REVERSE, file);
- if (set_sign && set_sign[0])
- fputs(set_sign, file);
+ if (set_sign || set)
+ fputs(set_sign ? set_sign : set, file);
if (first && !nofirst)
fputc(first, file);
- if (set)
- fputs(set, file);
- fwrite(line, len, 1, file);
+ if (len) {
+ if (set_sign && set && set != set_sign)
+ fputs(reset, file);
+ if (set)
+ fputs(set, file);
+ fwrite(line, len, 1, file);
+ }
fputs(reset, file);
}
if (has_trailing_carriage_return)
@@ -999,16 +1000,13 @@ static void emit_line_ws_markup(struct diff_options *o,
if (!ws && !set_sign)
emit_line_0(o, set, NULL, 0, reset, sign, line, len);
else if (!ws) {
- /* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign, NULL, !!set_sign, reset, sign, "", 0);
- emit_line_0(o, set, NULL, 0, reset, 0, line, len);
+ emit_line_0(o, set_sign, set, !!set_sign, reset, sign, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
emit_line_0(o, ws, NULL, 0, reset, sign, line, len);
else {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign ? set_sign : set, NULL, !!set_sign, reset,
- sign, "", 0);
+ emit_line_0(o, set_sign, set, !!set_sign, reset, sign, "", 0);
ws_check_emit(line, len, ws_rule,
o->file, set, reset, ws);
}
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 7/8] diff.c: compute reverse locally in emit_line_0
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (5 preceding siblings ...)
2018-07-31 0:31 ` [PATCH 6/8] diff: use emit_line_0 once per line Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-07-31 0:31 ` [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably Stefan Beller
2018-08-01 19:13 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Junio C Hamano
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/diff.c b/diff.c
index fdad7ffdd77..f565a2c0c2b 100644
--- a/diff.c
+++ b/diff.c
@@ -576,11 +576,12 @@ static void check_blank_at_eof(mmfile_t *mf1, mmfile_t *mf2,
}
static void emit_line_0(struct diff_options *o,
- const char *set_sign, const char *set, unsigned reverse, const char *reset,
+ const char *set_sign, const char *set, const char *reset,
int first, const char *line, int len)
{
int has_trailing_newline, has_trailing_carriage_return;
int nofirst;
+ int reverse = !!set && !!set_sign;
FILE *file = o->file;
fputs(diff_line_prefix(o), file);
@@ -625,7 +626,7 @@ static void emit_line_0(struct diff_options *o,
static void emit_line(struct diff_options *o, const char *set, const char *reset,
const char *line, int len)
{
- emit_line_0(o, set, NULL, 0, reset, line[0], line+1, len-1);
+ emit_line_0(o, set, NULL, reset, line[0], line+1, len-1);
}
enum diff_symbol {
@@ -998,15 +999,15 @@ static void emit_line_ws_markup(struct diff_options *o,
}
if (!ws && !set_sign)
- emit_line_0(o, set, NULL, 0, reset, sign, line, len);
+ emit_line_0(o, set, NULL, reset, sign, line, len);
else if (!ws) {
- emit_line_0(o, set_sign, set, !!set_sign, reset, sign, line, len);
+ emit_line_0(o, set_sign, set, reset, sign, line, len);
} else if (blank_at_eof)
/* Blank line at EOF - paint '+' as well */
- emit_line_0(o, ws, NULL, 0, reset, sign, line, len);
+ emit_line_0(o, ws, NULL, reset, sign, line, len);
else {
/* Emit just the prefix, then the rest. */
- emit_line_0(o, set_sign, set, !!set_sign, reset, sign, "", 0);
+ emit_line_0(o, set_sign, set, reset, sign, "", 0);
ws_check_emit(line, len, ws_rule,
o->file, set, reset, ws);
}
@@ -1029,7 +1030,7 @@ static void emit_diff_symbol_from_struct(struct diff_options *o,
context = diff_get_color_opt(o, DIFF_CONTEXT);
reset = diff_get_color_opt(o, DIFF_RESET);
putc('\n', o->file);
- emit_line_0(o, context, NULL, 0, reset, '\\',
+ emit_line_0(o, context, NULL, reset, '\\',
nneof, strlen(nneof));
break;
case DIFF_SYMBOL_SUBMODULE_HEADER:
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (6 preceding siblings ...)
2018-07-31 0:31 ` [PATCH 7/8] diff.c: compute reverse locally in emit_line_0 Stefan Beller
@ 2018-07-31 0:31 ` Stefan Beller
2018-08-01 19:13 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Junio C Hamano
8 siblings, 0 replies; 26+ messages in thread
From: Stefan Beller @ 2018-07-31 0:31 UTC (permalink / raw)
To: sbeller; +Cc: Johannes.Schindelin, git, sunshine
emit_line_0 has no nested conditions, but puts out all its arguments
(if set) in order. There is still a slight confusion with set
and set_sign, but let's defer that to a later patch.
'first' used be output always no matter if it was 0, but that got lost
at "diff: add an internal option to dual-color diffs of diffs",
2018-07-21), as there we broadened the meaning of 'first' to also
signal an early return.
The change in 'emit_line' makes sure that 'first' is never content, but
always under our control, a sign or special character in the beginning
of the line (or 0, in which case we ignore it).
Signed-off-by: Stefan Beller <sbeller@google.com>
---
diff.c | 73 +++++++++++++++++++++++++++++++++-------------------------
1 file changed, 41 insertions(+), 32 deletions(-)
diff --git a/diff.c b/diff.c
index f565a2c0c2b..2bd4d3d6839 100644
--- a/diff.c
+++ b/diff.c
@@ -580,43 +580,52 @@ static void emit_line_0(struct diff_options *o,
int first, const char *line, int len)
{
int has_trailing_newline, has_trailing_carriage_return;
- int nofirst;
int reverse = !!set && !!set_sign;
+ int needs_reset = 0;
+
FILE *file = o->file;
fputs(diff_line_prefix(o), file);
- if (len == 0) {
- has_trailing_newline = (first == '\n');
- has_trailing_carriage_return = (!has_trailing_newline &&
- (first == '\r'));
- nofirst = has_trailing_newline || has_trailing_carriage_return;
- } else {
- has_trailing_newline = (len > 0 && line[len-1] == '\n');
- if (has_trailing_newline)
- len--;
- has_trailing_carriage_return = (len > 0 && line[len-1] == '\r');
- if (has_trailing_carriage_return)
- len--;
- nofirst = 0;
- }
-
- if (len || !nofirst) {
- if (reverse && want_color(o->use_color))
- fputs(GIT_COLOR_REVERSE, file);
- if (set_sign || set)
- fputs(set_sign ? set_sign : set, file);
- if (first && !nofirst)
- fputc(first, file);
- if (len) {
- if (set_sign && set && set != set_sign)
- fputs(reset, file);
- if (set)
- fputs(set, file);
- fwrite(line, len, 1, file);
- }
- fputs(reset, file);
+ has_trailing_newline = (len > 0 && line[len-1] == '\n');
+ if (has_trailing_newline)
+ len--;
+
+ has_trailing_carriage_return = (len > 0 && line[len-1] == '\r');
+ if (has_trailing_carriage_return)
+ len--;
+
+ if (!len && !first)
+ goto end_of_line;
+
+ if (reverse && want_color(o->use_color)) {
+ fputs(GIT_COLOR_REVERSE, file);
+ needs_reset = 1;
+ }
+
+ if (set_sign || set) {
+ fputs(set_sign ? set_sign : set, file);
+ needs_reset = 1;
}
+
+ if (first)
+ fputc(first, file);
+
+ if (!len)
+ goto end_of_line;
+
+ if (set) {
+ if (set_sign && set != set_sign)
+ fputs(reset, file);
+ fputs(set, file);
+ needs_reset = 1;
+ }
+ fwrite(line, len, 1, file);
+ needs_reset |= len > 0;
+
+end_of_line:
+ if (needs_reset)
+ fputs(reset, file);
if (has_trailing_carriage_return)
fputc('\r', file);
if (has_trailing_newline)
@@ -626,7 +635,7 @@ static void emit_line_0(struct diff_options *o,
static void emit_line(struct diff_options *o, const char *set, const char *reset,
const char *line, int len)
{
- emit_line_0(o, set, NULL, reset, line[0], line+1, len-1);
+ emit_line_0(o, set, NULL, reset, 0, line, len);
}
enum diff_symbol {
--
2.18.0.132.g195c49a2227
^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [PATCH 2/8] t3206: add color test for range-diff --dual-color
2018-07-31 0:31 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
@ 2018-07-31 20:51 ` Junio C Hamano
0 siblings, 0 replies; 26+ messages in thread
From: Junio C Hamano @ 2018-07-31 20:51 UTC (permalink / raw)
To: Stefan Beller; +Cc: Johannes.Schindelin, git, sunshine
Stefan Beller <sbeller@google.com> writes:
> The 'expect'ed outcome has been taken by running the 'range-diff | decode'.
>
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
> t/t3206-range-diff.sh | 39 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 39 insertions(+)
>
> diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
> index 2237c7f4af9..019724e61a0 100755
> --- a/t/t3206-range-diff.sh
> +++ b/t/t3206-range-diff.sh
> @@ -142,4 +142,43 @@ test_expect_success 'changed message' '
> test_cmp expected actual
> '
>
> +test_expect_success 'dual-coloring' '
> + cat >expect <<-\EOF &&
It is a good idea to use something like "sed -e 's/^|//'" instead of
"cat" here; that way allows you to mark the left-edge of the data
with "|", for a test vector like this one that has a line that would
otherwise violate the whitespace style rules.
An inferiour alternative would be to add .gitaddtibute entry to make
this file exempt from indent-with-tab rule, but even in this 40-line
block there only is one line that requires such a workaround, and it
won't help the initial application of this patch to get modified
when applied with "am --whitespace=fix".
> + <YELLOW>1: a4b3333 = 1: f686024 s/5/A/<RESET>
> + <RED>2: f51d370 <RESET><YELLOW>!<RESET><GREEN> 2: 4ab067d<RESET><YELLOW> s/4/A/<RESET>
> + <REVERSE><CYAN>@@ -2,6 +2,8 @@<RESET>
> + <RESET>
> + s/4/A/<RESET>
> + <RESET>
> + <REVERSE><GREEN>+<RESET> <BOLD> Also a silly comment here!<RESET>
> + <REVERSE><GREEN>+<RESET>
> + diff --git a/file b/file<RESET>
> + <RED> --- a/file<RESET>
> + <GREEN> +++ b/file<RESET>
> + <RED>3: 0559556 <RESET><YELLOW>!<RESET><GREEN> 3: b9cb956<RESET><YELLOW> s/11/B/<RESET>
> + <REVERSE><CYAN>@@ -10,7 +10,7 @@<RESET>
> + 9<RESET>
> + 10<RESET>
> + <RED> -11<RESET>
> + <REVERSE><RED>-<RESET><FAINT;GREEN>+BB<RESET>
> + <REVERSE><GREEN>+<RESET><BOLD;GREEN>+B<RESET>
> + 12<RESET>
> + 13<RESET>
> + 14<RESET>
> + <RED>4: d966c5c <RESET><YELLOW>!<RESET><GREEN> 4: 8add5f1<RESET><YELLOW> s/12/B/<RESET>
> + <REVERSE><CYAN>@@ -8,7 +8,7 @@<RESET>
> + <CYAN> @@<RESET>
> + 9<RESET>
> + 10<RESET>
> + <REVERSE><RED>-<RESET><FAINT> BB<RESET>
> + <REVERSE><GREEN>+<RESET> <BOLD>B<RESET>
> + <RED> -12<RESET>
> + <GREEN> +B<RESET>
> + 13<RESET>
> + EOF
> + git range-diff changed...changed-message --color --dual-color >actual.raw &&
> + test_decode_color >actual <actual.raw &&
> + test_cmp expect actual
> +'
> +
> test_done
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCHv2 0/8] Add color test for range-diff, simplify diff.c
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
` (7 preceding siblings ...)
2018-07-31 0:31 ` [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably Stefan Beller
@ 2018-08-01 19:13 ` Junio C Hamano
2018-08-01 19:46 ` Stefan Beller
8 siblings, 1 reply; 26+ messages in thread
From: Junio C Hamano @ 2018-08-01 19:13 UTC (permalink / raw)
To: Stefan Beller; +Cc: Johannes.Schindelin, git, sunshine
Stefan Beller <sbeller@google.com> writes:
> Stefan Beller (8):
> test_decode_color: understand FAINT and ITALIC
> t3206: add color test for range-diff --dual-color
> diff.c: simplify caller of emit_line_0
> diff.c: reorder arguments for emit_line_ws_markup
> diff.c: add set_sign to emit_line_0
> diff: use emit_line_0 once per line
> diff.c: compute reverse locally in emit_line_0
> diff.c: rewrite emit_line_0 more understandably
>
> diff.c | 94 +++++++++++++++++++++++------------------
> t/t3206-range-diff.sh | 39 +++++++++++++++++
> t/test-lib-functions.sh | 2 +
> 3 files changed, 93 insertions(+), 42 deletions(-)
As I cannot merge this as is to 'pu' and keep going, I'll queue the
following to the tip. I think it can be squashed to "t3206: add
color test" but for now they will remain separate patches.
Subject: [PATCH] fixup! t3206: add color test for range-diff --dual-color
---
t/t3206-range-diff.sh | 64 +++++++++++++++++++++----------------------
1 file changed, 32 insertions(+), 32 deletions(-)
diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh
index 019724e61a..e3b0764b43 100755
--- a/t/t3206-range-diff.sh
+++ b/t/t3206-range-diff.sh
@@ -143,38 +143,38 @@ test_expect_success 'changed message' '
'
test_expect_success 'dual-coloring' '
- cat >expect <<-\EOF &&
- <YELLOW>1: a4b3333 = 1: f686024 s/5/A/<RESET>
- <RED>2: f51d370 <RESET><YELLOW>!<RESET><GREEN> 2: 4ab067d<RESET><YELLOW> s/4/A/<RESET>
- <REVERSE><CYAN>@@ -2,6 +2,8 @@<RESET>
- <RESET>
- s/4/A/<RESET>
- <RESET>
- <REVERSE><GREEN>+<RESET> <BOLD> Also a silly comment here!<RESET>
- <REVERSE><GREEN>+<RESET>
- diff --git a/file b/file<RESET>
- <RED> --- a/file<RESET>
- <GREEN> +++ b/file<RESET>
- <RED>3: 0559556 <RESET><YELLOW>!<RESET><GREEN> 3: b9cb956<RESET><YELLOW> s/11/B/<RESET>
- <REVERSE><CYAN>@@ -10,7 +10,7 @@<RESET>
- 9<RESET>
- 10<RESET>
- <RED> -11<RESET>
- <REVERSE><RED>-<RESET><FAINT;GREEN>+BB<RESET>
- <REVERSE><GREEN>+<RESET><BOLD;GREEN>+B<RESET>
- 12<RESET>
- 13<RESET>
- 14<RESET>
- <RED>4: d966c5c <RESET><YELLOW>!<RESET><GREEN> 4: 8add5f1<RESET><YELLOW> s/12/B/<RESET>
- <REVERSE><CYAN>@@ -8,7 +8,7 @@<RESET>
- <CYAN> @@<RESET>
- 9<RESET>
- 10<RESET>
- <REVERSE><RED>-<RESET><FAINT> BB<RESET>
- <REVERSE><GREEN>+<RESET> <BOLD>B<RESET>
- <RED> -12<RESET>
- <GREEN> +B<RESET>
- 13<RESET>
+ sed -e "s|^:||" >expect <<-\EOF &&
+ :<YELLOW>1: a4b3333 = 1: f686024 s/5/A/<RESET>
+ :<RED>2: f51d370 <RESET><YELLOW>!<RESET><GREEN> 2: 4ab067d<RESET><YELLOW> s/4/A/<RESET>
+ : <REVERSE><CYAN>@@ -2,6 +2,8 @@<RESET>
+ : <RESET>
+ : s/4/A/<RESET>
+ : <RESET>
+ : <REVERSE><GREEN>+<RESET> <BOLD> Also a silly comment here!<RESET>
+ : <REVERSE><GREEN>+<RESET>
+ : diff --git a/file b/file<RESET>
+ : <RED> --- a/file<RESET>
+ : <GREEN> +++ b/file<RESET>
+ :<RED>3: 0559556 <RESET><YELLOW>!<RESET><GREEN> 3: b9cb956<RESET><YELLOW> s/11/B/<RESET>
+ : <REVERSE><CYAN>@@ -10,7 +10,7 @@<RESET>
+ : 9<RESET>
+ : 10<RESET>
+ : <RED> -11<RESET>
+ : <REVERSE><RED>-<RESET><FAINT;GREEN>+BB<RESET>
+ : <REVERSE><GREEN>+<RESET><BOLD;GREEN>+B<RESET>
+ : 12<RESET>
+ : 13<RESET>
+ : 14<RESET>
+ :<RED>4: d966c5c <RESET><YELLOW>!<RESET><GREEN> 4: 8add5f1<RESET><YELLOW> s/12/B/<RESET>
+ : <REVERSE><CYAN>@@ -8,7 +8,7 @@<RESET>
+ : <CYAN> @@<RESET>
+ : 9<RESET>
+ : 10<RESET>
+ : <REVERSE><RED>-<RESET><FAINT> BB<RESET>
+ : <REVERSE><GREEN>+<RESET> <BOLD>B<RESET>
+ : <RED> -12<RESET>
+ : <GREEN> +B<RESET>
+ : 13<RESET>
EOF
git range-diff changed...changed-message --color --dual-color >actual.raw &&
test_decode_color >actual <actual.raw &&
--
2.18.0-321-gffc6fa0e39
^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [PATCHv2 0/8] Add color test for range-diff, simplify diff.c
2018-08-01 19:13 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Junio C Hamano
@ 2018-08-01 19:46 ` Stefan Beller
2018-08-02 15:48 ` Junio C Hamano
0 siblings, 1 reply; 26+ messages in thread
From: Stefan Beller @ 2018-08-01 19:46 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Johannes Schindelin, git, Eric Sunshine
On Wed, Aug 1, 2018 at 12:13 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> Stefan Beller <sbeller@google.com> writes:
>
> > Stefan Beller (8):
> > test_decode_color: understand FAINT and ITALIC
> > t3206: add color test for range-diff --dual-color
> > diff.c: simplify caller of emit_line_0
> > diff.c: reorder arguments for emit_line_ws_markup
> > diff.c: add set_sign to emit_line_0
> > diff: use emit_line_0 once per line
> > diff.c: compute reverse locally in emit_line_0
> > diff.c: rewrite emit_line_0 more understandably
> >
> > diff.c | 94 +++++++++++++++++++++++------------------
> > t/t3206-range-diff.sh | 39 +++++++++++++++++
> > t/test-lib-functions.sh | 2 +
> > 3 files changed, 93 insertions(+), 42 deletions(-)
>
> As I cannot merge this as is to 'pu' and keep going, I'll queue the
> following to the tip. I think it can be squashed to "t3206: add
> color test" but for now they will remain separate patches.
>
> Subject: [PATCH] fixup! t3206: add color test for range-diff --dual-color
Thanks for dealing with my stubbornness here.
I assumed that the contribution would be a one time hassle
during git-am, not an ongoing problem during the whole time
the patch flows through pu/next/master, which is why I punted
on doing this change and resending in a timely manner.
Further I assumed the sed trick as below is harder to read,
but it turns out it is not. It is still very understandable.
https://public-inbox.org/git/nycvar.QRO.7.76.6.1808011800570.71@tvgsbejvaqbjf.bet/
sounds like DScho wants to incorporate some white space related
stuff that might collide with the later parts of this series, so
I am not sure how easy it will be to carry this through pu,
so feel free to drop it as well.
Thanks!
Stefan
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCHv2 0/8] Add color test for range-diff, simplify diff.c
2018-08-01 19:46 ` Stefan Beller
@ 2018-08-02 15:48 ` Junio C Hamano
0 siblings, 0 replies; 26+ messages in thread
From: Junio C Hamano @ 2018-08-02 15:48 UTC (permalink / raw)
To: Stefan Beller; +Cc: Johannes Schindelin, git, Eric Sunshine
Stefan Beller <sbeller@google.com> writes:
> On Wed, Aug 1, 2018 at 12:13 PM Junio C Hamano <gitster@pobox.com> wrote:
>>
>> Stefan Beller <sbeller@google.com> writes:
>>
>> > Stefan Beller (8):
>> > test_decode_color: understand FAINT and ITALIC
>> > t3206: add color test for range-diff --dual-color
>> > diff.c: simplify caller of emit_line_0
>> > diff.c: reorder arguments for emit_line_ws_markup
>> > diff.c: add set_sign to emit_line_0
>> > diff: use emit_line_0 once per line
>> > diff.c: compute reverse locally in emit_line_0
>> > diff.c: rewrite emit_line_0 more understandably
>> >
>> > diff.c | 94 +++++++++++++++++++++++------------------
>> > t/t3206-range-diff.sh | 39 +++++++++++++++++
>> > t/test-lib-functions.sh | 2 +
>> > 3 files changed, 93 insertions(+), 42 deletions(-)
>>
>> As I cannot merge this as is to 'pu' and keep going, I'll queue the
>> following to the tip. I think it can be squashed to "t3206: add
>> color test" but for now they will remain separate patches.
>>
>> Subject: [PATCH] fixup! t3206: add color test for range-diff --dual-color
>
> Thanks for dealing with my stubbornness here.
I didn't know you were stubborn---I just thought you were busy in
other things.
> I assumed that the contribution would be a one time hassle
> during git-am, not an ongoing problem during the whole time
> the patch flows through pu/next/master, which is why I punted
> on doing this change and resending in a timely manner.
It is a bit worse, in that it won't be at pu/next/master boundary
but each and every time the integration branches are rebuilt, which
happens a few times a day. Whitespace breakage after a merge is
detected and my automation stops to ask for manual inspection.
^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2018-08-02 15:48 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-28 3:04 [PATCH 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
2018-07-28 3:04 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
2018-07-28 3:04 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
2018-07-28 6:27 ` Eric Sunshine
2018-07-30 19:55 ` Stefan Beller
2018-07-28 3:04 ` [PATCH 3/8] diff.c: simplify caller of emit_line_0 Stefan Beller
2018-07-28 3:04 ` [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup Stefan Beller
2018-07-28 3:04 ` [PATCH 5/8] diff.c: add set_sign to emit_line_0 Stefan Beller
2018-07-28 6:30 ` Eric Sunshine
2018-07-28 3:04 ` [PATCH 6/8] diff: use emit_line_0 once per line Stefan Beller
2018-07-28 3:04 ` [PATCH 7/8] diff.c: compute reverse locally in emit_line_0 Stefan Beller
2018-07-28 3:04 ` [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably Stefan Beller
2018-07-28 6:33 ` Eric Sunshine
2018-07-31 0:31 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Stefan Beller
2018-07-31 0:31 ` [PATCH 1/8] test_decode_color: understand FAINT and ITALIC Stefan Beller
2018-07-31 0:31 ` [PATCH 2/8] t3206: add color test for range-diff --dual-color Stefan Beller
2018-07-31 20:51 ` Junio C Hamano
2018-07-31 0:31 ` [PATCH 3/8] diff.c: simplify caller of emit_line_0 Stefan Beller
2018-07-31 0:31 ` [PATCH 4/8] diff.c: reorder arguments for emit_line_ws_markup Stefan Beller
2018-07-31 0:31 ` [PATCH 5/8] diff.c: add set_sign to emit_line_0 Stefan Beller
2018-07-31 0:31 ` [PATCH 6/8] diff: use emit_line_0 once per line Stefan Beller
2018-07-31 0:31 ` [PATCH 7/8] diff.c: compute reverse locally in emit_line_0 Stefan Beller
2018-07-31 0:31 ` [PATCH 8/8] diff.c: rewrite emit_line_0 more understandably Stefan Beller
2018-08-01 19:13 ` [PATCHv2 0/8] Add color test for range-diff, simplify diff.c Junio C Hamano
2018-08-01 19:46 ` Stefan Beller
2018-08-02 15:48 ` Junio C Hamano
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).