On Mon, Jul 9, 2018 at 10:53 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Elijah Newren <newren@xxxxxxxxx> writes: > >> When a merge succeeds, we expect the resulting contents to depend only >> upon the trees and blobs of the branches involved and of their merge >> base(s). Unfortunately, there are currently about half a dozen cases >> where the contents of a "successful" merge depend on the relative >> commit timestamps of the merge bases. Document these with testcases. >> >> (This series came out of looking at modifying how file collision >> conflict types are handled, as discussed at [1]. I discovered these >> issues while working on that topic.) > > I have a topic branch for this series but not merged to 'pu' as > test-lint gives these: > > t6036-recursive-corner-cases.sh:1222: error: "export FOO=bar" is not portable (please use FOO=bar && export FOO): echo "export PATH=~/bin:$PATH" >source_me.bash && > t6036-recursive-corner-cases.sh:1227: error: "export FOO=bar" is not portable (please use FOO=bar && export FOO): echo "export PATH=~/bin:$PATH" >source_me.bash && > Makefile:77: recipe for target 'test-lint-shell-syntax' failed > make: *** [test-lint-shell-syntax] Error 1 > > Arguably these are false positives because "source_me.bash" file is > a mere payload to go through the merge process to be munged and we > never intend to actually execute its contents with bash, but then > the test payload probably does not even have to be a string that > triggers such a false positive to begin with ;-) Oh, I didn't know about test-lint. Is there a place that documents the various checks you run, so I can avoid slowing you down? Ones I know about: Already documented: * `make DEVELOPER=1` (from CodingGuidelines) * running tests (from SubmittingPatches) Stuff I've seen you mention in emails over time: * linux/scripts/checkpatch.pl * git grep -e '\<inline\>' --and --not -e 'static inline' -- \*.h * make -C t/ test-lint Are there others? Also, here's a fixup to the topic; as you pointed out, the exact contents of the script being written were actually irrelevant; it was just an input to a merge. -- 8< -- Subject: [PATCH] fixup! t6036: add a failed conflict detection case: regular files, different modes --- t/t6036-recursive-corner-cases.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/t6036-recursive-corner-cases.sh b/t/t6036-recursive-corner-cases.sh index f8f7b30460..5a8fe061ab 100755 --- a/t/t6036-recursive-corner-cases.sh +++ b/t/t6036-recursive-corner-cases.sh @@ -1219,12 +1219,12 @@ test_expect_success 'setup conflicting modes for regular file' ' git tag A && git checkout -b B A && - echo "export PATH=~/bin:$PATH" >source_me.bash && + echo "command_to_run" >source_me.bash && git add source_me.bash && git commit -m B && git checkout -b C A && - echo "export PATH=~/bin:$PATH" >source_me.bash && + echo "command_to_run" >source_me.bash && git add source_me.bash && test_chmod +x source_me.bash && git commit -m C && -- 2.18.0.135.gd4ea5491ab