* [PATCH] userdiff: expand detected chunk headers for css
@ 2020-10-07 9:25 Sohom Datta via GitGitGadget
2020-10-07 16:51 ` Johannes Sixt
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Sohom Datta via GitGitGadget @ 2020-10-07 9:25 UTC (permalink / raw)
To: git; +Cc: Sohom Datta, Sohom
From: Sohom <sohom.datta@learner.manipal.edu>
Added support for classes, ids, :root selectors
as well as @-based statements (ex: @page, @media
and @keyframes ).
Also added tests for the same.
Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu>
---
userdiff: Expand detected chunk headers for css
Currently, the regex used for the CSS builtin diff driver in git is only
able to show chunk headers for lines that start with a number, a letter
or an underscore.
However, the regex fails to detect classes (starts with a .), ids
(starts with a #), :root and attribute-value based selectors (for
example [class*="col-"]), as well as @based block-level statements like
@page,@keyframes and @media since all of them, start with a special
character.
I've modified the chunk header CSS regex so that it is able to detect
the statements above and add them to the chunk header.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-866%2Fsohomdatta1%2Fcss-userdiff-fix-test-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-866/sohomdatta1/css-userdiff-fix-test-v1
Pull-Request: https://github.com/git/git/pull/866
t/t4018/css-attribute-value-selector | 4 ++++
t/t4018/css-block-level-@-statements | 10 ++++++++++
t/t4018/css-class-selector | 4 ++++
t/t4018/css-id-selector | 4 ++++
t/t4018/css-root-selector | 4 ++++
userdiff.c | 2 +-
6 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 t/t4018/css-attribute-value-selector
create mode 100644 t/t4018/css-block-level-@-statements
create mode 100644 t/t4018/css-class-selector
create mode 100644 t/t4018/css-id-selector
create mode 100644 t/t4018/css-root-selector
diff --git a/t/t4018/css-attribute-value-selector b/t/t4018/css-attribute-value-selector
new file mode 100644
index 0000000000..918256b20c
--- /dev/null
+++ b/t/t4018/css-attribute-value-selector
@@ -0,0 +1,4 @@
+[class*="RIGHT"] {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/t/t4018/css-block-level-@-statements b/t/t4018/css-block-level-@-statements
new file mode 100644
index 0000000000..d6755f2f3d
--- /dev/null
+++ b/t/t4018/css-block-level-@-statements
@@ -0,0 +1,10 @@
+@keyframes RIGHT {
+ from {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+ }
+ to {
+ background : #fff;
+ border : 10px solid #C6C6C6;
+ }
+}
diff --git a/t/t4018/css-class-selector b/t/t4018/css-class-selector
new file mode 100644
index 0000000000..f790a0062f
--- /dev/null
+++ b/t/t4018/css-class-selector
@@ -0,0 +1,4 @@
+.RIGHT {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/t/t4018/css-id-selector b/t/t4018/css-id-selector
new file mode 100644
index 0000000000..17c5111052
--- /dev/null
+++ b/t/t4018/css-id-selector
@@ -0,0 +1,4 @@
+#RIGHT {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/t/t4018/css-root-selector b/t/t4018/css-root-selector
new file mode 100644
index 0000000000..22b958e369
--- /dev/null
+++ b/t/t4018/css-root-selector
@@ -0,0 +1,4 @@
+:RIGHT {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/userdiff.c b/userdiff.c
index fde02f225b..49c9771891 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -200,7 +200,7 @@ PATTERNS("csharp",
"|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"),
IPATTERN("css",
"![:;][[:space:]]*$\n"
- "^[_a-z0-9].*$",
+ "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",
/* -- */
/*
* This regex comes from W3C CSS specs. Should theoretically also
base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7
--
gitgitgadget
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] userdiff: expand detected chunk headers for css
2020-10-07 9:25 [PATCH] userdiff: expand detected chunk headers for css Sohom Datta via GitGitGadget
@ 2020-10-07 16:51 ` Johannes Sixt
2020-10-07 17:09 ` Junio C Hamano
2020-10-08 8:36 ` [PATCH v2] " Sohom Datta via GitGitGadget
2 siblings, 0 replies; 5+ messages in thread
From: Johannes Sixt @ 2020-10-07 16:51 UTC (permalink / raw)
To: Sohom Datta via GitGitGadget; +Cc: git, Sohom Datta
Am 07.10.20 um 11:25 schrieb Sohom Datta via GitGitGadget:
> From: Sohom <sohom.datta@learner.manipal.edu>
>
> Added support for classes, ids, :root selectors
s/Added/Add/ since we prefer this sentence in imperative mood.
> as well as @-based statements (ex: @page, @media
> and @keyframes ).
>
> Also added tests for the same.
Ditto, or just drop this sentence.
>
> Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu>
> ---
> userdiff: Expand detected chunk headers for css
>
> Currently, the regex used for the CSS builtin diff driver in git is only
> able to show chunk headers for lines that start with a number, a letter
> or an underscore.
>
> However, the regex fails to detect classes (starts with a .), ids
> (starts with a #), :root and attribute-value based selectors (for
> example [class*="col-"]), as well as @based block-level statements like
> @page,@keyframes and @media since all of them, start with a special
> character.
This text would have made a very good introductory part of the commit
message, but since it is after the three-dash separator, it is ignored.
The patch text looks good.
>
> I've modified the chunk header CSS regex so that it is able to detect
> the statements above and add them to the chunk header.
>
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-866%2Fsohomdatta1%2Fcss-userdiff-fix-test-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-866/sohomdatta1/css-userdiff-fix-test-v1
> Pull-Request: https://github.com/git/git/pull/866
>
> t/t4018/css-attribute-value-selector | 4 ++++
> t/t4018/css-block-level-@-statements | 10 ++++++++++
> t/t4018/css-class-selector | 4 ++++
> t/t4018/css-id-selector | 4 ++++
> t/t4018/css-root-selector | 4 ++++
> userdiff.c | 2 +-
> 6 files changed, 27 insertions(+), 1 deletion(-)
> create mode 100644 t/t4018/css-attribute-value-selector
> create mode 100644 t/t4018/css-block-level-@-statements
> create mode 100644 t/t4018/css-class-selector
> create mode 100644 t/t4018/css-id-selector
> create mode 100644 t/t4018/css-root-selector
>
> diff --git a/t/t4018/css-attribute-value-selector b/t/t4018/css-attribute-value-selector
> new file mode 100644
> index 0000000000..918256b20c
> --- /dev/null
> +++ b/t/t4018/css-attribute-value-selector
> @@ -0,0 +1,4 @@
> +[class*="RIGHT"] {
> + background : #000;
> + border : 10px ChangeMe #C6C6C6;
> +}
> diff --git a/t/t4018/css-block-level-@-statements b/t/t4018/css-block-level-@-statements
> new file mode 100644
> index 0000000000..d6755f2f3d
> --- /dev/null
> +++ b/t/t4018/css-block-level-@-statements
> @@ -0,0 +1,10 @@
> +@keyframes RIGHT {
> + from {
> + background : #000;
> + border : 10px ChangeMe #C6C6C6;
> + }
> + to {
> + background : #fff;
> + border : 10px solid #C6C6C6;
> + }
> +}
> diff --git a/t/t4018/css-class-selector b/t/t4018/css-class-selector
> new file mode 100644
> index 0000000000..f790a0062f
> --- /dev/null
> +++ b/t/t4018/css-class-selector
> @@ -0,0 +1,4 @@
> +.RIGHT {
> + background : #000;
> + border : 10px ChangeMe #C6C6C6;
> +}
> diff --git a/t/t4018/css-id-selector b/t/t4018/css-id-selector
> new file mode 100644
> index 0000000000..17c5111052
> --- /dev/null
> +++ b/t/t4018/css-id-selector
> @@ -0,0 +1,4 @@
> +#RIGHT {
> + background : #000;
> + border : 10px ChangeMe #C6C6C6;
> +}
> diff --git a/t/t4018/css-root-selector b/t/t4018/css-root-selector
> new file mode 100644
> index 0000000000..22b958e369
> --- /dev/null
> +++ b/t/t4018/css-root-selector
> @@ -0,0 +1,4 @@
> +:RIGHT {
> + background : #000;
> + border : 10px ChangeMe #C6C6C6;
> +}
> diff --git a/userdiff.c b/userdiff.c
> index fde02f225b..49c9771891 100644
> --- a/userdiff.c
> +++ b/userdiff.c
> @@ -200,7 +200,7 @@ PATTERNS("csharp",
> "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"),
> IPATTERN("css",
> "![:;][[:space:]]*$\n"
> - "^[_a-z0-9].*$",
> + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",
> /* -- */
> /*
> * This regex comes from W3C CSS specs. Should theoretically also
>
> base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] userdiff: expand detected chunk headers for css
2020-10-07 9:25 [PATCH] userdiff: expand detected chunk headers for css Sohom Datta via GitGitGadget
2020-10-07 16:51 ` Johannes Sixt
@ 2020-10-07 17:09 ` Junio C Hamano
2020-10-08 8:36 ` [PATCH v2] " Sohom Datta via GitGitGadget
2 siblings, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2020-10-07 17:09 UTC (permalink / raw)
To: Sohom Datta via GitGitGadget; +Cc: git, Sohom Datta
"Sohom Datta via GitGitGadget" <gitgitgadget@gmail.com> writes:
> From: Sohom <sohom.datta@learner.manipal.edu>
>
> Added support for classes, ids, :root selectors
> as well as @-based statements (ex: @page, @media
> and @keyframes ).
>
> Also added tests for the same.
>
> Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu>
> ---
> userdiff: Expand detected chunk headers for css
>
> Currently, the regex used for the CSS builtin diff driver in git is only
> able to show chunk headers for lines that start with a number, a letter
> or an underscore.
>
> However, the regex fails to detect classes (starts with a .), ids
> (starts with a #), :root and attribute-value based selectors (for
> example [class*="col-"]), as well as @based block-level statements like
> @page,@keyframes and @media since all of them, start with a special
> character.
The above two would be much better beginning of the log message for
this change modulo a few nits.
- We first explain what the current system does in the present
tense. "Currently, " at the beginning is a pure noise.
- And we point out what may be lacking (which you did a very good
job in the second paragraph).
- And finally, we write in imperative mood to give an order to the
codebase to "become like so." or an order to the patch monkey to
"make the codebase like so."
As the last paragraph to follow the two paragraphs, something like
Allow the selectors to begin with these special characters.
would be sufficient.
> - "^[_a-z0-9].*$",
> + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",
As we seem to allow ? (i.e. zero or one) in the patterns, it probably
makes it easier to read to spell the above like this instead?
- "^[_a-z0-9].*$",
+ "^[:[@.#]?[_a-z0-9].*$"
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2] userdiff: expand detected chunk headers for css
2020-10-07 9:25 [PATCH] userdiff: expand detected chunk headers for css Sohom Datta via GitGitGadget
2020-10-07 16:51 ` Johannes Sixt
2020-10-07 17:09 ` Junio C Hamano
@ 2020-10-08 8:36 ` Sohom Datta via GitGitGadget
2020-10-08 17:23 ` Junio C Hamano
2 siblings, 1 reply; 5+ messages in thread
From: Sohom Datta via GitGitGadget @ 2020-10-08 8:36 UTC (permalink / raw)
To: git; +Cc: Johannes Sixt, Sohom Datta, Sohom
From: Sohom <sohom.datta@learner.manipal.edu>
The regex used for the CSS builtin diff driver in git is only
able to show chunk headers for lines that start with a number,
a letter or an underscore.
However, the regex fails to detect classes (starts with a .), ids
(starts with a #), :root and attribute-value based selectors (for
example [class*="col-"]), as well as @based block-level statements
like @page,@keyframes and @media since all of them, start with a
special character.
Allow the selectors and block level statements to begin with these
special characters.
Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu>
---
userdiff: Expand detected chunk headers for css
Changes since v1
* Updated commit message as suggested by Johannes Sixt and Junio C
Hamano
* Simplified the regex as suggested by Junio C Hamano
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-866%2Fsohomdatta1%2Fcss-userdiff-fix-test-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-866/sohomdatta1/css-userdiff-fix-test-v2
Pull-Request: https://github.com/git/git/pull/866
Range-diff vs v1:
1: ca178c0cda ! 1: a76703d4ac userdiff: expand detected chunk headers for css
@@ Metadata
## Commit message ##
userdiff: expand detected chunk headers for css
- Added support for classes, ids, :root selectors
- as well as @-based statements (ex: @page, @media
- and @keyframes ).
+ The regex used for the CSS builtin diff driver in git is only
+ able to show chunk headers for lines that start with a number,
+ a letter or an underscore.
- Also added tests for the same.
+ However, the regex fails to detect classes (starts with a .), ids
+ (starts with a #), :root and attribute-value based selectors (for
+ example [class*="col-"]), as well as @based block-level statements
+ like @page,@keyframes and @media since all of them, start with a
+ special character.
+
+ Allow the selectors and block level statements to begin with these
+ special characters.
Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu>
@@ userdiff.c: PATTERNS("csharp",
IPATTERN("css",
"![:;][[:space:]]*$\n"
- "^[_a-z0-9].*$",
-+ "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",
++ "^[:[@.#]?[_a-z0-9].*$",
/* -- */
/*
* This regex comes from W3C CSS specs. Should theoretically also
t/t4018/css-attribute-value-selector | 4 ++++
t/t4018/css-block-level-@-statements | 10 ++++++++++
t/t4018/css-class-selector | 4 ++++
t/t4018/css-id-selector | 4 ++++
t/t4018/css-root-selector | 4 ++++
userdiff.c | 2 +-
6 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 t/t4018/css-attribute-value-selector
create mode 100644 t/t4018/css-block-level-@-statements
create mode 100644 t/t4018/css-class-selector
create mode 100644 t/t4018/css-id-selector
create mode 100644 t/t4018/css-root-selector
diff --git a/t/t4018/css-attribute-value-selector b/t/t4018/css-attribute-value-selector
new file mode 100644
index 0000000000..918256b20c
--- /dev/null
+++ b/t/t4018/css-attribute-value-selector
@@ -0,0 +1,4 @@
+[class*="RIGHT"] {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/t/t4018/css-block-level-@-statements b/t/t4018/css-block-level-@-statements
new file mode 100644
index 0000000000..d6755f2f3d
--- /dev/null
+++ b/t/t4018/css-block-level-@-statements
@@ -0,0 +1,10 @@
+@keyframes RIGHT {
+ from {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+ }
+ to {
+ background : #fff;
+ border : 10px solid #C6C6C6;
+ }
+}
diff --git a/t/t4018/css-class-selector b/t/t4018/css-class-selector
new file mode 100644
index 0000000000..f790a0062f
--- /dev/null
+++ b/t/t4018/css-class-selector
@@ -0,0 +1,4 @@
+.RIGHT {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/t/t4018/css-id-selector b/t/t4018/css-id-selector
new file mode 100644
index 0000000000..17c5111052
--- /dev/null
+++ b/t/t4018/css-id-selector
@@ -0,0 +1,4 @@
+#RIGHT {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/t/t4018/css-root-selector b/t/t4018/css-root-selector
new file mode 100644
index 0000000000..22b958e369
--- /dev/null
+++ b/t/t4018/css-root-selector
@@ -0,0 +1,4 @@
+:RIGHT {
+ background : #000;
+ border : 10px ChangeMe #C6C6C6;
+}
diff --git a/userdiff.c b/userdiff.c
index fde02f225b..f6a4b0fb2e 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -200,7 +200,7 @@ PATTERNS("csharp",
"|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"),
IPATTERN("css",
"![:;][[:space:]]*$\n"
- "^[_a-z0-9].*$",
+ "^[:[@.#]?[_a-z0-9].*$",
/* -- */
/*
* This regex comes from W3C CSS specs. Should theoretically also
base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7
--
gitgitgadget
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2] userdiff: expand detected chunk headers for css
2020-10-08 8:36 ` [PATCH v2] " Sohom Datta via GitGitGadget
@ 2020-10-08 17:23 ` Junio C Hamano
0 siblings, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2020-10-08 17:23 UTC (permalink / raw)
To: Sohom Datta via GitGitGadget; +Cc: git, Johannes Sixt, Sohom Datta
"Sohom Datta via GitGitGadget" <gitgitgadget@gmail.com> writes:
> From: Sohom <sohom.datta@learner.manipal.edu>
I'd call this line *1* for later reference...
> The regex used for the CSS builtin diff driver in git is only
> able to show chunk headers for lines that start with a number,
> a letter or an underscore.
>
> However, the regex fails to detect classes (starts with a .), ids
> (starts with a #), :root and attribute-value based selectors (for
> example [class*="col-"]), as well as @based block-level statements
> like @page,@keyframes and @media since all of them, start with a
> special character.
>
> Allow the selectors and block level statements to begin with these
> special characters.
>
> Signed-off-by: Sohom Datta <sohom.datta@learner.manipal.edu>
> ---
Looking good.
The "Name <email>" on line *1* must match that on the last
"signed-off-by" line, so I'll locally tweak the authorship information
before applying the patch.
Thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-10-08 17:23 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-07 9:25 [PATCH] userdiff: expand detected chunk headers for css Sohom Datta via GitGitGadget
2020-10-07 16:51 ` Johannes Sixt
2020-10-07 17:09 ` Junio C Hamano
2020-10-08 8:36 ` [PATCH v2] " Sohom Datta via GitGitGadget
2020-10-08 17:23 ` 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).