From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Johannes Sixt" <j6t@kdbg.org>, "Jeff King" <peff@peff.net>,
"Jonathan Nieder" <jrnieder@gmail.com>,
"Philippe Blain" <levraiphilippeblain@gmail.com>,
"Adam Spiers" <git@adamspiers.org>,
"Eric Sunshine" <sunshine@sunshineco.com>,
"Chris Torek" <chris.torek@gmail.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v3 00/35] 20210215154427.32693-1-avarab@gmail.com
Date: Wed, 24 Feb 2021 20:50:54 +0100 [thread overview]
Message-ID: <20210224195129.4004-1-avarab@gmail.com> (raw)
In-Reply-To: <20210215154427.32693-1-avarab@gmail.com>
Addresses feedback on v2. Since Junio & Johannes expressed a desire to
keep the existing test scheme in t4018/* it's still there, but it's
also possible to add *.sh tests in that directory to use the more
familiar test framework used elsewhere in the test suite.
The tests added here make use of it to e.g. supply custom -U<n>
arguments, set config before the tests etc.
I also improved that existing test support so you can have N tests in
one file with (mostly) the existing test syntax. See the "userdiff
tests: add a test with multiple tests in a LANG file" patch.
Range-diff below.
Ævar Arnfjörð Bjarmason (35):
userdiff: refactor away the parse_bool() function
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
userdiff tests: match full hunk headers
userdiff tests: change setup loop to individual test setup
userdiff tests: factor out test_diff_funcname() logic
userdiff tests: add alternative hunk header test infrastructure
userdiff tests: add a test with multiple tests in a LANG file
userdiff tests: do config teardown in test_diff_funcname()
userdiff tests: move custom patterns into one test file
userdiff tests: remove hack for "RIGHT" token
userdiff tests: do not do compile tests on "custom" pattern
userdiff tests: assert that new built-in drivers have tests
userdiff tests + docs: document & test "diff.<driver>.x?funcname"
gitattributes doc: reword discussion of built-in userdiff patterns
userdiff tests: move perl tests to perl.sh
userdiff tests: move away from "RIGHT" in perl.sh
gitattributes doc: document multi-line userdiff patterns
userdiff tests: switch to -U0 by default
userdiff tests: remove "funcname" from custom3 test
userdiff tests: assert empty hunk header context on -U<large>
userdiff tests: test for a bug in 1dbf0c0ad6c
userdiff golang: simplify and correct matching regex
userdiff golang: don't over-match intented constructs
userdiff golang: add a rule to match "package"
userdiff golang: match multi-line "const" and "import"
userdiff tests: add basic test for ada
userdiff tests: add basic test for ruby
Documentation/config/diff.txt | 11 ++
Documentation/gitattributes.txt | 46 ++++-
Makefile | 1 +
t/annotate-tests.sh | 34 ++--
t/helper/test-tool.c | 1 +
t/helper/test-tool.h | 1 +
t/helper/test-userdiff.c | 31 ++++
t/t4018-diff-funcname.sh | 180 +++++++++++++-------
t/t4018/README | 69 ++++++--
t/t4018/ada.sh | 37 ++++
t/t4018/bash-arithmetic-function | 1 +
t/t4018/bash-bashism-style-compact | 1 +
t/t4018/bash-bashism-style-function | 1 +
t/t4018/bash-bashism-style-whitespace | 1 +
t/t4018/bash-conditional-function | 1 +
t/t4018/bash-missing-parentheses | 1 +
t/t4018/bash-mixed-style-compact | 1 +
t/t4018/bash-mixed-style-function | 1 +
t/t4018/bash-nested-functions | 1 +
t/t4018/bash-other-characters | 1 +
t/t4018/bash-posix-style-compact | 1 +
t/t4018/bash-posix-style-function | 1 +
t/t4018/bash-posix-style-whitespace | 1 +
t/t4018/bash-subshell-function | 1 +
t/t4018/bash-trailing-comment | 1 +
t/t4018/cpp-c++-function | 1 +
t/t4018/cpp-class-constructor | 1 +
t/t4018/cpp-class-constructor-mem-init | 1 +
t/t4018/cpp-class-definition | 1 +
t/t4018/cpp-class-definition-derived | 1 +
t/t4018/cpp-class-destructor | 1 +
t/t4018/cpp-function-returning-global-type | 1 +
t/t4018/cpp-function-returning-nested | 1 +
t/t4018/cpp-function-returning-pointer | 1 +
t/t4018/cpp-function-returning-reference | 1 +
t/t4018/cpp-gnu-style-function | 1 +
t/t4018/cpp-namespace-definition | 1 +
t/t4018/cpp-operator-definition | 1 +
t/t4018/cpp-skip-access-specifiers | 1 +
t/t4018/cpp-skip-comment-block | 1 +
t/t4018/cpp-skip-labels | 1 +
t/t4018/cpp-struct-definition | 1 +
t/t4018/cpp-struct-single-line | 1 +
t/t4018/cpp-template-function-definition | 1 +
t/t4018/cpp-union-definition | 1 +
t/t4018/cpp-void-c-function | 1 +
t/t4018/css-attribute-value-selector | 1 +
t/t4018/css-block-level-@-statements | 1 +
t/t4018/css-brace-in-col-1 | 1 +
t/t4018/css-class-selector | 1 +
t/t4018/css-colon-eol | 1 +
t/t4018/css-colon-selector | 1 +
t/t4018/css-common | 1 +
t/t4018/css-id-selector | 1 +
t/t4018/css-long-selector-list | 1 +
t/t4018/css-prop-sans-indent | 1 +
t/t4018/css-root-selector | 1 +
t/t4018/css-short-selector-list | 1 +
t/t4018/css-trailing-space | 1 +
t/t4018/custom.sh | 183 ++++++++++++++++++++
t/t4018/custom1-pattern | 17 --
t/t4018/custom2-match-to-end-of-line | 8 -
t/t4018/custom3-alternation-in-pattern | 17 --
t/t4018/dts-labels | 1 +
t/t4018/dts-node-unitless | 1 +
t/t4018/dts-nodes | 1 +
t/t4018/dts-nodes-boolean-prop | 1 +
t/t4018/dts-nodes-comment1 | 1 +
t/t4018/dts-nodes-comment2 | 1 +
t/t4018/dts-nodes-multiline-prop | 1 +
t/t4018/dts-reference | 1 +
t/t4018/dts-root | 1 +
t/t4018/dts-root-comment | 1 +
t/t4018/elixir-do-not-pick-end | 1 +
t/t4018/elixir-ex-unit-test | 1 +
t/t4018/elixir-function | 1 +
t/t4018/elixir-macro | 1 +
t/t4018/elixir-module | 1 +
t/t4018/elixir-module-func | 1 +
t/t4018/elixir-nested-module | 1 +
t/t4018/elixir-private-function | 1 +
t/t4018/elixir-protocol | 1 +
t/t4018/elixir-protocol-implementation | 1 +
t/t4018/fortran-block-data | 1 +
t/t4018/fortran-comment | 1 +
t/t4018/fortran-comment-keyword | 1 +
t/t4018/fortran-comment-legacy | 1 +
t/t4018/fortran-comment-legacy-star | 1 +
t/t4018/fortran-external-function | 1 +
t/t4018/fortran-external-subroutine | 1 +
t/t4018/fortran-module | 1 +
t/t4018/fortran-module-procedure | 1 +
t/t4018/fortran-program | 1 +
t/t4018/fountain-scene | 1 +
t/t4018/golang | 148 ++++++++++++++++
t/t4018/golang-complex-function | 8 -
t/t4018/golang-func | 4 -
t/t4018/golang-interface | 4 -
t/t4018/golang-long-func | 5 -
t/t4018/golang-struct | 4 -
t/t4018/java-class-member-function | 1 +
t/t4018/markdown-heading-indented | 1 +
t/t4018/markdown-heading-non-headings | 1 +
t/t4018/matlab-class-definition | 1 +
t/t4018/matlab-function | 1 +
t/t4018/matlab-octave-section-1 | 1 +
t/t4018/matlab-octave-section-2 | 1 +
t/t4018/matlab-section | 1 +
t/t4018/perl-skip-end-of-heredoc | 8 -
t/t4018/perl-skip-forward-decl | 10 --
t/t4018/perl-skip-sub-in-pod | 18 --
t/t4018/perl-sub-definition | 4 -
t/t4018/perl-sub-definition-kr-brace | 4 -
t/t4018/perl.sh | 93 +++++++++++
t/t4018/php-abstract-class | 1 +
t/t4018/php-abstract-method | 1 +
t/t4018/php-class | 1 +
t/t4018/php-final-class | 1 +
t/t4018/php-final-method | 1 +
t/t4018/php-function | 1 +
t/t4018/php-interface | 1 +
t/t4018/php-method | 1 +
t/t4018/php-trait | 1 +
t/t4018/python-async-def | 1 +
t/t4018/python-class | 1 +
t/t4018/python-def | 1 +
t/t4018/python-indented-async-def | 1 +
t/t4018/python-indented-class | 1 +
t/t4018/python-indented-def | 1 +
t/t4018/ruby.sh | 58 +++++++
t/t4018/rust-fn | 1 +
t/t4018/rust-impl | 1 +
t/t4018/rust-macro-rules | 1 +
t/t4018/rust-struct | 1 +
t/t4018/rust-trait | 1 +
userdiff.c | 186 +++++++++++++--------
userdiff.h | 15 ++
137 files changed, 1036 insertions(+), 277 deletions(-)
create mode 100644 t/helper/test-userdiff.c
create mode 100755 t/t4018/ada.sh
create mode 100755 t/t4018/custom.sh
delete mode 100644 t/t4018/custom1-pattern
delete mode 100644 t/t4018/custom2-match-to-end-of-line
delete mode 100644 t/t4018/custom3-alternation-in-pattern
create mode 100644 t/t4018/golang
delete mode 100644 t/t4018/golang-complex-function
delete mode 100644 t/t4018/golang-func
delete mode 100644 t/t4018/golang-interface
delete mode 100644 t/t4018/golang-long-func
delete mode 100644 t/t4018/golang-struct
delete mode 100644 t/t4018/perl-skip-end-of-heredoc
delete mode 100644 t/t4018/perl-skip-forward-decl
delete mode 100644 t/t4018/perl-skip-sub-in-pod
delete mode 100644 t/t4018/perl-sub-definition
delete mode 100644 t/t4018/perl-sub-definition-kr-brace
create mode 100755 t/t4018/perl.sh
create mode 100755 t/t4018/ruby.sh
Range-diff:
1: 305fc646d0d = 1: 0be132b05e2 userdiff: refactor away the parse_bool() function
2: 989438c46ae = 2: d1e00a739ac userdiff style: re-order drivers in alphabetical order
3: 4c48e5532ce = 3: b99bd158d45 userdiff style: declare patterns with consistent style
4: f41fa5b316f = 4: 9ce6d47021c userdiff style: normalize pascal regex declaration
5: 0875d5205c1 = 5: 369fbdcee83 userdiff: add and use for_each_userdiff_driver()
6: 638247d04d5 = 6: 70d62a97211 userdiff tests: explicitly test "default" pattern
7: 219043a4881 ! 7: 792421a2f8b userdiff tests: list builtin drivers via test-tool
@@ t/helper/test-userdiff.c (new)
+static int driver_cb(struct userdiff_driver *driver,
+ enum userdiff_driver_type type, void *priv)
+{
-+ puts(driver->name);
++ if (driver->funcname.pattern)
++ puts(driver->name);
+ return 0;
+}
+
@@ t/t4018-diff-funcname.sh: test_description='Test custom diff function name patte
. ./test-lib.sh
test_expect_success 'setup' '
-+ builtin_drivers=$(test-tool userdiff list-builtin-drivers) &&
-+ test -n "$builtin_drivers" &&
++ # Make sure additions to builtin_drivers are sorted
++ test_when_finished "rm builtin-drivers.sorted" &&
++ test-tool userdiff list-builtin-drivers >builtin-drivers &&
++ test_file_not_empty builtin-drivers &&
++ sort <builtin-drivers >builtin-drivers.sorted &&
++ test_cmp builtin-drivers.sorted builtin-drivers &&
+
# a non-trivial custom pattern
git config diff.custom1.funcname "!static
@@ t/t4018-diff-funcname.sh: test_expect_success 'setup' '
- rust
- tex
- default
-+ $builtin_drivers
++ $(cat builtin-drivers)
custom1
custom2
custom3
8: eb66160aac7 = 8: 9081e2a152e userdiff: remove support for "broken" tests
9: c6c54039e27 < -: ----------- userdiff tests: match full hunk headers
10: 1c6ddf96f61 ! 9: d3652f95d5e blame tests: don't rely on t/t4018/ directory
@@ Commit message
with userdiff driver, 2020-11-01) so that the blame tests don't rely
on stealing the contents of "t/t4018/fortran-external-function".
- I'm about to refactor that directory to delete that file, just moving
- the relevant test file here inline is the easiest solution, and I
- think also the most readable.
+ I'm about to change that file in a subsequent commit. Just moving the
+ relevant test file here inline is the easiest solution, and I think
+ also the most readable.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
11: 8a883d87990 ! 10: 35d12779ea1 blame tests: simplify userdiff driver test
@@ Commit message
added in 999cfc4f45 (test-lib functions: add --author support to
test_commit, 2021-01-12).
- We also did not need the full fortran-external-function content, let's
+ We also did not need the full fortran-external-function content. Let's
cut it down to just the important parts, and further modify it to
demonstrate that the fortran-specific userdiff function is in effect
- by adding "WRONG" lines surrounding the "RIGHT" one.
+ by adding "DO NOT MATCH ..." and "AS THE ..." lines surrounding the
+ "RIGHT" one. This is to check that we're using the userdiff "fortran"
+ driver, as opposed to the default driver.
The test also left behind a .gitattributes files, let's clean it up
with "test_when_finished".
@@ t/annotate-tests.sh: test_expect_success 'blame -L ^:RE (absolute: end-of-file)'
- cat >$fortran_file <<-\EOF &&
+test_expect_success 'blame -L :funcname with userdiff driver' '
+ cat >file.template <<-\EOF &&
-+ def WRONG begin end
++ DO NOT MATCH THIS LINE
function RIGHT(a, b) result(c)
-+ int WRONG(void) {}
++ AS THE DEFAULT DRIVER WOULD
integer, intent(in) :: ChangeMe
- integer, intent(in) :: b
@@ t/annotate-tests.sh: test_expect_success 'blame -L ^:RE (absolute: end-of-file)'
+ echo "$fortran_file diff=fortran" >.gitattributes &&
+
+ test_commit --author "A <A@test.git>" \
-+ "add" $fortran_file \
++ "add" "$fortran_file" \
+ "$(cat file.template)" &&
+ test_commit --author "B <B@test.git>" \
-+ "change" $fortran_file \
++ "change" "$fortran_file" \
+ "$(cat file.template | sed -e s/ChangeMe/IWasChanged/)" &&
-+ check_count -f $fortran_file -L:RIGHT A 3 B 1
++ check_count -f "$fortran_file" -L:RIGHT A 3 B 1
'
test_expect_success 'setup incremental' '
12: e56a7a6b5f4 < -: ----------- userdiff tests: rewrite hunk header test infrastructure
-: ----------- > 11: 4bd8a0daa25 userdiff tests: match full hunk headers
-: ----------- > 12: d2d74476f2a userdiff tests: change setup loop to individual test setup
21: 9a18506aff8 ! 13: 8db95a69924 userdiff tests: factor out test_diff_funcname() logic
@@ Commit message
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## t/t4018-diff-funcname.sh ##
-@@ t/t4018-diff-funcname.sh: test_expect_success 'last regexp must not be negated' '
- test_i18ngrep ": Last expression must not be negated:" msg
+@@ t/t4018-diff-funcname.sh: test_expect_success 'setup hunk header tests' '
+ git -C t4018 add .
'
+do_change_me () {
@@ t/t4018-diff-funcname.sh: test_expect_success 'last regexp must not be negated'
+ sed -n -e "s/^.*@@$//p" -e "s/^.*@@ //p" <$file
+}
+
- test_diff_funcname () {
- desc=$1
- cat <&8 >arg.header &&
-@@ t/t4018-diff-funcname.sh: test_diff_funcname () {
- cp arg.test "$what" &&
- cp arg.header expected &&
- git add "$what" &&
-- sed -e "s/ChangeMe/IWasChanged/" <"$what" >tmp &&
-- mv tmp "$what"
-+ do_change_me "$what"
- ' &&
+ # check each individual file
+ for i in $(git -C t4018 ls-files)
+ do
+@@ t/t4018-diff-funcname.sh: do
- test_expect_success "$desc" '
- git diff -U1 "$what" >diff &&
-- sed -n -e "s/^.*@@$//p" -e "s/^.*@@ //p" <diff >actual &&
-+ last_diff_context_line diff >actual &&
- test_cmp expected actual
- ' &&
+ # add test file to the index
+ git add \"$i\" &&
+- # place modified file in the worktree
+- sed -e 's/ChangeMe/IWasChanged/' <\"t4018/$i.content\" >\"$i\"
++ do_change_me \"$i\"
+ "
+ test_expect_success "hunk header: $i" "
+ git diff -U1 $i >diff &&
+- sed -n -e 's/^.*@@$//p' -e 's/^.*@@ //p' <diff >ctx &&
++ last_diff_context_line diff >ctx &&
+ test_cmp t4018/$i.header ctx
+ "
+ done
-: ----------- > 14: e64a00d020e userdiff tests: add alternative hunk header test infrastructure
-: ----------- > 15: 3dab65bf394 userdiff tests: add a test with multiple tests in a LANG file
13: 84d20a7cd0c ! 16: 6eff13d01d3 userdiff tests: do config teardown in test_diff_funcname()
@@ Commit message
## t/t4018-diff-funcname.sh ##
@@ t/t4018-diff-funcname.sh: test_diff_funcname () {
git diff -U1 "$what" >diff &&
- sed -n -e "s/^.*@@$//p" -e "s/^.*@@ //p" <diff >actual &&
+ last_diff_context_line diff >actual &&
test_cmp expected actual
+ ' &&
+
14: 70fc9fa565b ! 17: 48f15aed4e4 userdiff tests: move custom patterns into one test file
@@ Commit message
## t/t4018-diff-funcname.sh ##
@@ t/t4018-diff-funcname.sh: test_expect_success 'setup' '
- builtin_drivers=$(test-tool userdiff list-builtin-drivers) &&
- test -n "$builtin_drivers" &&
+ sort <builtin-drivers >builtin-drivers.sorted &&
+ test_cmp builtin-drivers.sorted builtin-drivers &&
- # a non-trivial custom pattern
- git config diff.custom1.funcname "!static
@@ t/t4018-diff-funcname.sh: test_expect_success 'setup' '
@@ t/t4018-diff-funcname.sh: test_expect_success 'setup' '
diffpatterns="
- $builtin_drivers
+ $(cat builtin-drivers)
- custom1
- custom2
- custom3
15: 8539d6d464e = 18: 11556fe0967 userdiff tests: remove hack for "RIGHT" token
16: 121e5d6dfaf ! 19: 1b96e89843c userdiff tests: do not do compile tests on "custom" pattern
@@ t/t4018-diff-funcname.sh: test_expect_success 'setup' '
'
-diffpatterns="
-- $builtin_drivers
+- $(cat builtin-drivers)
- custom
-"
-
-for p in $diffpatterns
-+for p in $builtin_drivers
++for p in $(cat builtin-drivers)
do
test_expect_success "builtin $p pattern compiles" '
echo "*.java diff=$p" >.gitattributes &&
-@@ t/t4018-diff-funcname.sh: test_diff_funcname () {
- '
- }
+@@ t/t4018-diff-funcname.sh: test_expect_success 'last regexp must not be negated' '
+ test_i18ngrep ": Last expression must not be negated:" msg
+ '
--for what in $diffpatterns
-+for what in $builtin_drivers custom
- do
- test="$TEST_DIRECTORY/t4018/$what.sh"
- if ! test -e "$test"
++diffpatterns="
++ $(cat builtin-drivers)
++ custom
++"
++
+ test_expect_success 'setup hunk header tests' '
+ for i in $diffpatterns
+ do
-: ----------- > 20: d3cbfc4354d userdiff tests: assert that new built-in drivers have tests
17: 451b7ae453d = 21: fd6c51ac6db userdiff tests + docs: document & test "diff.<driver>.x?funcname"
18: 5a402bb9bf1 = 22: 43d818be785 gitattributes doc: reword discussion of built-in userdiff patterns
-: ----------- > 23: 37d54d77755 userdiff tests: move perl tests to perl.sh
-: ----------- > 24: b6f4f613857 userdiff tests: move away from "RIGHT" in perl.sh
19: a3badb1a3ee ! 25: a39ba8e2545 gitattributes doc: document multi-line userdiff patterns
@@ Documentation/gitattributes.txt: backslashes; the pattern above picks a line tha
-There are built-in patterns shipped as part of git itself. A more
-advanced version of the `tex` pattern discussed above is one of them.
+Multiple patterns can be supplied by listing them one per line
-+separated by `\n`. They will be matched one at a time from left to
-+right. Do not supply a trailing "\n" for the last pattern. E.g.:
++separated by `\n`. They will be matched one line at a time, e.g.:
+
+------------------------
+[diff "perl"]
+ xfuncname = "!^=head\n^[^ ]+.*"
+------------------------
+
-+Patterns in in a list of multiple that begin with "!" are negated. A
-+matching negated pattern will cause the matched line to be
++Patterns in a list of multiple patterns that begin with "!" are
++negated. A matching negated pattern will cause the matched line to be
+skipped. Use it to skip a later pattern that would otherwise match. It
+is an error if one or more negated patterns aren't followed by a
+non-negated pattern.
@@ Documentation/gitattributes.txt: backslashes; the pattern above picks a line tha
+construct that will match a literal "!" without "!" being the first
+character on that line, such as "[!]".
+
++If the last pattern in a list of multiple patterns ends with "\n" it
++will be interpreted as an empty pattern, and will match the first
++empty line. It's almost always a logic error to provide a list of
++multiple patterns ending with "\n", but it's permitted in case you
++genuinely want to match an empty line.
++
+If the pattern contains a `$1` capture it will be used instead of the
+entire matching line (`$0`) to display the hunk header. This can be
+used e.g. to strip whitespace from the beginning of the line, or to
@@ t/t4018/custom.sh: ChangeMe
+foo
+EOF_HUNK
+sub foo;
++
+=head1
++
++ChangeMe
++
++EOF_TEST
++
++test_expect_success 'custom: multiple patterns ending with \n' '
++ git config diff.custom.xfuncname "!^=head
++^sub ([^;]+)
++"
++'
++
++test_diff_funcname 'custom: multiple patterns ending with \n' \
++ 8<<\EOF_HUNK 9<<\EOF_TEST
++
++EOF_HUNK
++sub foo;
++
++=head1
++
+ChangeMe
+
+EOF_TEST
## t/t4018/perl.sh ##
-@@ t/t4018/perl.sh: sub RIGHT
+@@ t/t4018/perl.sh: sub asub
print "ChangeMe\n";
}
EOF_TEST
@@ t/t4018/perl.sh: sub RIGHT
+EOF_HUNK
+sub foo;
+=head1
-+ChangeMe
+
++ChangeMe
+EOF_TEST
-: ----------- > 26: 27394c6c2a4 userdiff tests: switch to -U0 by default
20: 1b46726e85f = 27: 91ab863a298 userdiff tests: remove "funcname" from custom3 test
22: 24548fb680e < -: ----------- userdiff tests: test hunk headers on accumulated files
23: 48f00a59d5e < -: ----------- userdiff tests: test hunk header selection with -U0
24: 05a01990c9c ! 28: b68133ce5f7 userdiff tests: assert empty hunk header context on -U<large>
@@ Commit message
Assert the existing behavior that under -U<large> we'll show no hunk
header context, where <large> takes us past the potential hunk header
- we'd have extracted. I'm just picking a number over nine thousand as a
- really large number we're unlikely to exceed in these tests.
+ we'd have extracted.
+
+ I'm just picking a number over nine thousand as a really large number
+ we're unlikely to exceed in these tests.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
@@ t/t4018-diff-funcname.sh: test_diff_funcname () {
test_cmp expected actual
' &&
-+ test_expect_success "$desc -U9001 (accumulated)" '
-+ git diff -U9001 "$what".acc >diff &&
-+ last_diff_context_line diff >actual.lines &&
-+ tail -n 1 actual.lines >actual &&
++ test_expect_success "$desc -U9001" '
++ git diff -U9001 "$what" >diff &&
++ last_diff_context_line diff >actual &&
+ echo >blank &&
+ test_cmp blank actual
+ ' &&
25: 3d2f42d7041 < -: ----------- userdiff: match "package" in diff=golang
-: ----------- > 29: 9f3a7ca788b userdiff tests: test for a bug in 1dbf0c0ad6c
-: ----------- > 30: 43ee24e554b userdiff golang: simplify and correct matching regex
-: ----------- > 31: 70a2e7ca70b userdiff golang: don't over-match intented constructs
-: ----------- > 32: 6b942cd651b userdiff golang: add a rule to match "package"
-: ----------- > 33: f45d35387d9 userdiff golang: match multi-line "const" and "import"
26: b2e16ade06c ! 34: c67c3e160f3 userdiff tests: add basic test for ada
@@ Commit message
1. https://rosettacode.org/wiki/99_bottles_of_beer#Ada
2. https://en.wikibooks.org/wiki/Ada_Programming/Tasking
+ ## t/t4018-diff-funcname.sh ##
+@@ t/t4018-diff-funcname.sh: test_expect_success 'setup' '
+ # Do not add anything to this list. New built-in drivers should have
+ # tests
+ cat >drivers-no-tests <<-\EOF &&
+- ada
+ bibtex
+ csharp
+ html
+
## t/t4018/ada.sh (new) ##
@@
+#!/bin/sh
27: 826b6f4d6ae ! 35: e2aedd738ef userdiff tests: add basic test for ruby
@@ Commit message
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ ## t/t4018-diff-funcname.sh ##
+@@ t/t4018-diff-funcname.sh: test_expect_success 'setup' '
+ html
+ objc
+ pascal
+- ruby
+ tex
+ EOF
+
+
## t/t4018/ruby.sh (new) ##
@@
+#!/bin/sh
@@ t/t4018/ruby.sh (new)
+EOF_TEST
+
+test_diff_funcname 'ruby: picks first "class/module/def" before changed context' \
-+ "class Two" \
++ '-U1' \
+ 8<<\EOF_HUNK 9<<\EOF_TEST
+class One
+EOF_HUNK
--
2.30.0.284.gd98b1dd5eaa7
next prev parent reply other threads:[~2021-02-24 19:54 UTC|newest]
Thread overview: 192+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-13 19:24 [PATCH] userdiff: add support for Emacs Lisp Adam Spiers
2021-02-14 1:41 ` Ævar Arnfjörð Bjarmason
2021-02-14 8:12 ` Johannes Sixt
2021-02-14 11:10 ` Johannes Sixt
2021-02-14 18:25 ` Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 00/20] userdiff: refactor + test + doc + misc improvements Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 00/27] " Ævar Arnfjörð Bjarmason
2021-02-15 15:50 ` [PATCH 0/2] diff: do not display hunk context under -W Ævar Arnfjörð Bjarmason
2021-02-15 15:50 ` [PATCH 1/2] " Ævar Arnfjörð Bjarmason
2021-02-15 18:47 ` René Scharfe.
2021-02-15 19:24 ` Ævar Arnfjörð Bjarmason
2021-02-15 21:17 ` René Scharfe.
2021-02-16 1:30 ` Junio C Hamano
2021-02-16 1:37 ` Junio C Hamano
2021-02-16 7:20 ` Johannes Sixt
2021-02-16 17:51 ` Junio C Hamano
2021-02-15 15:50 ` [PATCH 2/2] diff: test and document -W interaction with -U<n> Ævar Arnfjörð Bjarmason
2021-02-16 7:26 ` Johannes Sixt
2021-02-15 17:45 ` [PATCH v2 00/27] userdiff: refactor + test + doc + misc improvements Eric Sunshine
2021-02-15 20:03 ` Johannes Sixt
2021-02-24 19:50 ` Ævar Arnfjörð Bjarmason [this message]
2021-02-27 7:47 ` [PATCH v3 00/35] 20210215154427.32693-1-avarab@gmail.com Johannes Sixt
2021-02-28 11:04 ` Johannes Sixt
2021-02-28 16:07 ` Ævar Arnfjörð Bjarmason
2021-03-01 7:10 ` Johannes Sixt
2021-03-24 1:48 ` [PATCH v4 00/10] userdiff: refactor + test improvements Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 01/10] userdiff: refactor away the parse_bool() function Ævar Arnfjörð Bjarmason
2021-03-24 18:47 ` Jeff King
2021-03-24 1:48 ` [PATCH v4 02/10] userdiff style: re-order drivers in alphabetical order Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 03/10] userdiff style: declare patterns with consistent style Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 04/10] userdiff style: normalize pascal regex declaration Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 05/10] userdiff: add and use for_each_userdiff_driver() Ævar Arnfjörð Bjarmason
2021-03-24 4:50 ` Junio C Hamano
2021-03-24 19:12 ` Jeff King
2021-03-24 19:57 ` Junio C Hamano
2021-03-24 20:43 ` Jeff King
2021-03-24 23:05 ` Ævar Arnfjörð Bjarmason
2021-03-25 0:33 ` Jeff King
2021-03-25 1:26 ` Ævar Arnfjörð Bjarmason
2021-03-26 3:27 ` Jeff King
2021-04-09 19:44 ` Ævar Arnfjörð Bjarmason
2021-04-09 20:11 ` Jeff King
2021-04-09 22:37 ` Junio C Hamano
2021-04-10 12:30 ` Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 06/10] userdiff tests: explicitly test "default" pattern Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 07/10] userdiff tests: list builtin drivers via test-tool Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 08/10] userdiff: remove support for "broken" tests Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 09/10] blame tests: don't rely on t/t4018/ directory Ævar Arnfjörð Bjarmason
2021-03-24 1:48 ` [PATCH v4 10/10] blame tests: simplify userdiff driver test Ævar Arnfjörð Bjarmason
2021-03-24 17:19 ` [PATCH v4 00/10] userdiff: refactor + test improvements Johannes Sixt
2021-03-24 19:02 ` Junio C Hamano
2021-03-24 19:14 ` Jeff King
2021-04-08 15:04 ` [PATCH v5 0/9] " Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 1/9] userdiff style: re-order drivers in alphabetical order Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 2/9] userdiff style: declare patterns with consistent style Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 3/9] userdiff style: normalize pascal regex declaration Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 4/9] userdiff: add and use for_each_userdiff_driver() Ævar Arnfjörð Bjarmason
2021-04-08 19:29 ` Junio C Hamano
2021-04-08 15:04 ` [PATCH v5 5/9] userdiff tests: explicitly test "default" pattern Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 6/9] userdiff tests: list builtin drivers via test-tool Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 7/9] userdiff: remove support for "broken" tests Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 8/9] blame tests: don't rely on t/t4018/ directory Ævar Arnfjörð Bjarmason
2021-04-08 15:04 ` [PATCH v5 9/9] blame tests: simplify userdiff driver test Ævar Arnfjörð Bjarmason
2021-02-24 19:50 ` [PATCH v3 01/35] userdiff: refactor away the parse_bool() function Ævar Arnfjörð Bjarmason
2021-02-24 19:50 ` [PATCH v3 02/35] userdiff style: re-order drivers in alphabetical order Ævar Arnfjörð Bjarmason
2021-02-24 19:50 ` [PATCH v3 03/35] userdiff style: declare patterns with consistent style Ævar Arnfjörð Bjarmason
2021-02-24 19:50 ` [PATCH v3 04/35] userdiff style: normalize pascal regex declaration Ævar Arnfjörð Bjarmason
2021-02-24 19:50 ` [PATCH v3 05/35] userdiff: add and use for_each_userdiff_driver() Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 06/35] userdiff tests: explicitly test "default" pattern Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 07/35] userdiff tests: list builtin drivers via test-tool Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 08/35] userdiff: remove support for "broken" tests Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 09/35] blame tests: don't rely on t/t4018/ directory Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 10/35] blame tests: simplify userdiff driver test Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 11/35] userdiff tests: match full hunk headers Ævar Arnfjörð Bjarmason
2021-02-25 2:47 ` Junio C Hamano
2021-02-24 19:51 ` [PATCH v3 12/35] userdiff tests: change setup loop to individual test setup Ævar Arnfjörð Bjarmason
2021-02-25 2:52 ` Junio C Hamano
2021-02-25 18:28 ` Johannes Sixt
2021-02-25 19:06 ` Junio C Hamano
2021-02-24 19:51 ` [PATCH v3 13/35] userdiff tests: factor out test_diff_funcname() logic Ævar Arnfjörð Bjarmason
2021-02-25 2:57 ` Junio C Hamano
2021-02-24 19:51 ` [PATCH v3 14/35] userdiff tests: add alternative hunk header test infrastructure Ævar Arnfjörð Bjarmason
2021-02-28 11:12 ` Johannes Sixt
2021-02-24 19:51 ` [PATCH v3 15/35] userdiff tests: add a test with multiple tests in a LANG file Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 16/35] userdiff tests: do config teardown in test_diff_funcname() Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 17/35] userdiff tests: move custom patterns into one test file Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 18/35] userdiff tests: remove hack for "RIGHT" token Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 19/35] userdiff tests: do not do compile tests on "custom" pattern Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 20/35] userdiff tests: assert that new built-in drivers have tests Ævar Arnfjörð Bjarmason
2021-02-28 10:34 ` Johannes Sixt
2021-02-28 15:51 ` Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 21/35] userdiff tests + docs: document & test "diff.<driver>.x?funcname" Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 22/35] gitattributes doc: reword discussion of built-in userdiff patterns Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 23/35] userdiff tests: move perl tests to perl.sh Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 24/35] userdiff tests: move away from "RIGHT" in perl.sh Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 25/35] gitattributes doc: document multi-line userdiff patterns Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 26/35] userdiff tests: switch to -U0 by default Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 27/35] userdiff tests: remove "funcname" from custom3 test Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 28/35] userdiff tests: assert empty hunk header context on -U<large> Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 29/35] userdiff tests: test for a bug in 1dbf0c0ad6c Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 30/35] userdiff golang: simplify and correct matching regex Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 31/35] userdiff golang: don't over-match intented constructs Ævar Arnfjörð Bjarmason
2021-02-26 7:59 ` Johannes Sixt
2021-02-24 19:51 ` [PATCH v3 32/35] userdiff golang: add a rule to match "package" Ævar Arnfjörð Bjarmason
2021-02-26 8:03 ` Johannes Sixt
2021-02-24 19:51 ` [PATCH v3 33/35] userdiff golang: match multi-line "const" and "import" Ævar Arnfjörð Bjarmason
2021-02-24 19:51 ` [PATCH v3 34/35] userdiff tests: add basic test for ada Ævar Arnfjörð Bjarmason
2021-02-27 7:26 ` Johannes Sixt
2021-02-24 19:51 ` [PATCH v3 35/35] userdiff tests: add basic test for ruby Ævar Arnfjörð Bjarmason
2021-02-27 7:30 ` Johannes Sixt
2021-02-15 15:44 ` [PATCH v2 01/27] userdiff: refactor away the parse_bool() function Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 02/27] userdiff style: re-order drivers in alphabetical order Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 03/27] userdiff style: declare patterns with consistent style Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 04/27] userdiff style: normalize pascal regex declaration Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 05/27] userdiff: add and use for_each_userdiff_driver() Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 06/27] userdiff tests: explicitly test "default" pattern Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 07/27] userdiff tests: list builtin drivers via test-tool Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 08/27] userdiff: remove support for "broken" tests Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 09/27] userdiff tests: match full hunk headers Ævar Arnfjörð Bjarmason
2021-02-15 17:13 ` Johannes Sixt
2021-02-15 18:48 ` Ævar Arnfjörð Bjarmason
2021-02-16 18:32 ` Junio C Hamano
2021-02-16 21:45 ` Johannes Sixt
2021-02-17 1:27 ` Ævar Arnfjörð Bjarmason
2021-02-17 19:01 ` Junio C Hamano
2021-02-23 13:11 ` Ævar Arnfjörð Bjarmason
2021-02-23 21:02 ` Johannes Sixt
2021-02-24 11:12 ` Ævar Arnfjörð Bjarmason
2021-02-24 17:13 ` Johannes Sixt
2021-02-17 2:03 ` Junio C Hamano
2021-02-17 2:13 ` Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 10/27] blame tests: don't rely on t/t4018/ directory Ævar Arnfjörð Bjarmason
2021-02-16 23:49 ` Junio C Hamano
2021-02-15 15:44 ` [PATCH v2 11/27] blame tests: simplify userdiff driver test Ævar Arnfjörð Bjarmason
2021-02-15 17:23 ` Johannes Sixt
2021-02-17 1:33 ` Ævar Arnfjörð Bjarmason
2021-02-17 1:40 ` Junio C Hamano
2021-02-17 7:10 ` Johannes Sixt
2021-02-15 15:44 ` [PATCH v2 12/27] userdiff tests: rewrite hunk header test infrastructure Ævar Arnfjörð Bjarmason
2021-02-15 17:53 ` Johannes Sixt
2021-02-15 20:06 ` Ævar Arnfjörð Bjarmason
2021-02-15 20:29 ` Johannes Sixt
2021-02-16 18:35 ` Junio C Hamano
2021-02-15 15:44 ` [PATCH v2 13/27] userdiff tests: do config teardown in test_diff_funcname() Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 14/27] userdiff tests: move custom patterns into one test file Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 15/27] userdiff tests: remove hack for "RIGHT" token Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 16/27] userdiff tests: do not do compile tests on "custom" pattern Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 17/27] userdiff tests + docs: document & test "diff.<driver>.x?funcname" Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 18/27] gitattributes doc: reword discussion of built-in userdiff patterns Ævar Arnfjörð Bjarmason
2021-02-16 23:57 ` Junio C Hamano
2021-02-15 15:44 ` [PATCH v2 19/27] gitattributes doc: document multi-line " Ævar Arnfjörð Bjarmason
2021-02-15 18:18 ` Johannes Sixt
2021-02-15 19:01 ` Ævar Arnfjörð Bjarmason
2021-02-17 0:03 ` Junio C Hamano
2021-02-15 15:44 ` [PATCH v2 20/27] userdiff tests: remove "funcname" from custom3 test Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 21/27] userdiff tests: factor out test_diff_funcname() logic Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 22/27] userdiff tests: test hunk headers on accumulated files Ævar Arnfjörð Bjarmason
2021-02-15 18:29 ` Johannes Sixt
2021-02-15 15:44 ` [PATCH v2 23/27] userdiff tests: test hunk header selection with -U0 Ævar Arnfjörð Bjarmason
2021-02-15 19:09 ` Johannes Sixt
2021-02-15 15:44 ` [PATCH v2 24/27] userdiff tests: assert empty hunk header context on -U<large> Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 25/27] userdiff: match "package" in diff=golang Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 26/27] userdiff tests: add basic test for ada Ævar Arnfjörð Bjarmason
2021-02-15 15:44 ` [PATCH v2 27/27] userdiff tests: add basic test for ruby Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 01/20] userdiff: refactor away the parse_bool() function Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 02/20] userdiff: re-order builtin drivers in alphabetical order Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 03/20] userdiff: add and use for_each_userdiff_driver() Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 04/20] userdiff tests: explicitly test "default" pattern Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 05/20] userdiff tests: list builtin drivers via test-tool Ævar Arnfjörð Bjarmason
2021-02-15 1:24 ` Eric Sunshine
2021-02-15 0:52 ` [PATCH 06/20] userdiff: remove support for "broken" tests Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 07/20] userdiff tests: match full hunk headers Ævar Arnfjörð Bjarmason
2021-02-15 1:35 ` Eric Sunshine
2021-02-15 0:52 ` [PATCH 08/20] userdiff tests: rewrite hunk header test infrastructure Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 09/20] blame tests: don't rely on t/t4018/ directory Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 10/20] userdiff tests: move custom patterns into one test file Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 11/20] userdiff tests: remove hack for "RIGHT" token Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 12/20] userdiff: match "package" in diff=golang Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 13/20] userdiff tests + docs: document & test "diff.<driver>.x?funcname" Ævar Arnfjörð Bjarmason
2021-02-15 3:16 ` Eric Sunshine
2021-02-15 0:52 ` [PATCH 14/20] gitattributes doc: reword discussion of built-in userdiff patterns Ævar Arnfjörð Bjarmason
2021-02-15 3:26 ` Eric Sunshine
2021-02-15 0:52 ` [PATCH 15/20] gitattributes doc: document multi-line " Ævar Arnfjörð Bjarmason
2021-02-15 3:16 ` Chris Torek
2021-02-15 3:36 ` Eric Sunshine
2021-02-15 0:52 ` [PATCH 16/20] userdiff tests: remove "funcname" from custom3 test Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 17/20] userdiff tests: factor out test_diff_funcname() logic Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 18/20] userdiff tests: test hunk headers on accumulated files Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 19/20] userdiff tests: test hunk header selection with -U0 Ævar Arnfjörð Bjarmason
2021-02-15 0:52 ` [PATCH 20/20] userdiff tests: assert empty hunk header context on -U<large> Ævar Arnfjörð Bjarmason
2021-02-16 8:26 ` [PATCH] userdiff: add support for Emacs Lisp Protesilaos Stavrou
2021-02-16 11:13 ` Ævar Arnfjörð Bjarmason
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=20210224195129.4004-1-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=chris.torek@gmail.com \
--cc=git@adamspiers.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=jrnieder@gmail.com \
--cc=levraiphilippeblain@gmail.com \
--cc=peff@peff.net \
--cc=sunshine@sunshineco.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).