From: Junio C Hamano <gitster@pobox.com>
To: Derrick Stolee <stolee@gmail.com>
Cc: Emily Shaffer <emilyshaffer@google.com>, git@vger.kernel.org
Subject: Re: What's cooking in git.git (Jan 2021, #02; Fri, 8)
Date: Thu, 14 Jan 2021 22:36:50 -0800 [thread overview]
Message-ID: <xmqqr1mmu2nx.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: 15237c6c-98eb-0d1f-e6d5-2dda91c0ce09@gmail.com
Derrick Stolee <stolee@gmail.com> writes:
> Perhaps it would be better to have a --fixed-value patch on top
> of the merge that combines the two topics?
Thanks. That is how we usually handle this kind of fallouts from
multiple topics.
In fact, there already are conflicting hunks in t/t7900 when the
topic is merged into the current 'master', and rerere database knows
about them; I'll need to teach "--fixed-value" to these places.
Here is how eventual merge of the topic into 'master' would resolve
conflicts. The straight merge chain from master..seen would have
such a merge with the resolution shown below, but 'next' already has
a mismerge, so I'll be applying a single-parent commit to fix the
mismerge directly on 'next' (which I'll send in a separate message).
Thanks, all, for all the help.
diff --cc t/t7900-maintenance.sh
index 99bf0c7582,135505f619..0000000000
--- i/t/t7900-maintenance.sh
+++ w/t/t7900-maintenance.sh
@@@ -406,23 -380,11 +419,23 @@@ test_expect_success 'register and unreg
test_cmp before actual
'
+test_expect_success !MINGW 'register and unregister with regex metacharacters' '
+ META="a+b*c" &&
+ git init "$META" &&
+ git -C "$META" maintenance register &&
+ git config --get-all --show-origin maintenance.repo &&
+ git config --get-all --global --fixed-value \
+ maintenance.repo "$(pwd)/$META" &&
+ git -C "$META" maintenance unregister &&
+ test_must_fail git config --get-all --global --fixed-value \
+ maintenance.repo "$(pwd)/$META"
+'
+
test_expect_success 'start from empty cron table' '
- GIT_TEST_CRONTAB="test-tool crontab cron.txt" git maintenance start &&
+ GIT_TEST_MAINT_SCHEDULER="crontab:test-tool crontab cron.txt" git maintenance start &&
# start registers the repo
- git config --get --global maintenance.repo "$(pwd)" &&
+ git config --get --global --fixed-value maintenance.repo "$(pwd)" &&
grep "for-each-repo --config=maintenance.repo maintenance run --schedule=daily" cron.txt &&
grep "for-each-repo --config=maintenance.repo maintenance run --schedule=hourly" cron.txt &&
@@@ -430,13 -392,13 +443,13 @@@
'
test_expect_success 'stop from existing schedule' '
- GIT_TEST_CRONTAB="test-tool crontab cron.txt" git maintenance stop &&
+ GIT_TEST_MAINT_SCHEDULER="crontab:test-tool crontab cron.txt" git maintenance stop &&
# stop does not unregister the repo
- git config --get --global maintenance.repo "$(pwd)" &&
+ git config --get --global --fixed-value maintenance.repo "$(pwd)" &&
# Operation is idempotent
- GIT_TEST_CRONTAB="test-tool crontab cron.txt" git maintenance stop &&
+ GIT_TEST_MAINT_SCHEDULER="crontab:test-tool crontab cron.txt" git maintenance stop &&
test_must_be_empty cron.txt
'
@@@ -446,22 -408,89 +459,105 @@@ test_expect_success 'start preserves ex
grep "Important information!" cron.txt
'
+test_expect_success 'magic markers are correct' '
+ grep "GIT MAINTENANCE SCHEDULE" cron.txt >actual &&
+ cat >expect <<-\EOF &&
+ # BEGIN GIT MAINTENANCE SCHEDULE
+ # END GIT MAINTENANCE SCHEDULE
+ EOF
+ test_cmp actual expect
+'
+
+test_expect_success 'stop preserves surrounding schedule' '
+ echo "Crucial information!" >>cron.txt &&
- GIT_TEST_CRONTAB="test-tool crontab cron.txt" git maintenance stop &&
++ GIT_TEST_MAINT_SCHEDULER="crontab:test-tool crontab cron.txt" git maintenance stop &&
+ grep "Important information!" cron.txt &&
+ grep "Crucial information!" cron.txt
+'
+
+ test_expect_success 'start and stop macOS maintenance' '
+ # ensure $HOME can be compared against hook arguments on all platforms
+ pfx=$(cd "$HOME" && pwd) &&
+
+ write_script print-args <<-\EOF &&
+ echo $* | sed "s:gui/[0-9][0-9]*:gui/[UID]:" >>args
+ EOF
+
+ rm -f args &&
+ GIT_TEST_MAINT_SCHEDULER=launchctl:./print-args git maintenance start &&
+
+ # start registers the repo
- git config --get --global maintenance.repo "$(pwd)" &&
++ git config --get --global --fixed-value maintenance.repo "$(pwd)" &&
+
+ ls "$HOME/Library/LaunchAgents" >actual &&
+ cat >expect <<-\EOF &&
+ org.git-scm.git.daily.plist
+ org.git-scm.git.hourly.plist
+ org.git-scm.git.weekly.plist
+ EOF
+ test_cmp expect actual &&
+
+ rm -f expect &&
+ for frequency in hourly daily weekly
+ do
+ PLIST="$pfx/Library/LaunchAgents/org.git-scm.git.$frequency.plist" &&
+ test_xmllint "$PLIST" &&
+ grep schedule=$frequency "$PLIST" &&
+ echo "bootout gui/[UID] $PLIST" >>expect &&
+ echo "bootstrap gui/[UID] $PLIST" >>expect || return 1
+ done &&
+ test_cmp expect args &&
+
+ rm -f args &&
+ GIT_TEST_MAINT_SCHEDULER=launchctl:./print-args git maintenance stop &&
+
+ # stop does not unregister the repo
- git config --get --global maintenance.repo "$(pwd)" &&
++ git config --get --global --fixed-value maintenance.repo "$(pwd)" &&
+
+ printf "bootout gui/[UID] $pfx/Library/LaunchAgents/org.git-scm.git.%s.plist\n" \
+ hourly daily weekly >expect &&
+ test_cmp expect args &&
+ ls "$HOME/Library/LaunchAgents" >actual &&
+ test_line_count = 0 actual
+ '
+
+ test_expect_success 'start and stop Windows maintenance' '
+ write_script print-args <<-\EOF &&
+ echo $* >>args
+ while test $# -gt 0
+ do
+ case "$1" in
+ /xml) shift; xmlfile=$1; break ;;
+ *) shift ;;
+ esac
+ done
+ test -z "$xmlfile" || cp "$xmlfile" "$xmlfile.xml"
+ EOF
+
+ rm -f args &&
+ GIT_TEST_MAINT_SCHEDULER="schtasks:./print-args" git maintenance start &&
+
+ # start registers the repo
- git config --get --global maintenance.repo "$(pwd)" &&
++ git config --get --global --fixed-value maintenance.repo "$(pwd)" &&
+
+ for frequency in hourly daily weekly
+ do
+ grep "/create /tn Git Maintenance ($frequency) /f /xml" args &&
+ file=$(ls .git/schedule_${frequency}*.xml) &&
+ test_xmllint "$file" || return 1
+ done &&
+
+ rm -f args &&
+ GIT_TEST_MAINT_SCHEDULER="schtasks:./print-args" git maintenance stop &&
+
+ # stop does not unregister the repo
- git config --get --global maintenance.repo "$(pwd)" &&
++ git config --get --global --fixed-value maintenance.repo "$(pwd)" &&
+
+ printf "/delete /tn Git Maintenance (%s) /f\n" \
+ hourly daily weekly >expect &&
+ test_cmp expect args
+ '
+
test_expect_success 'register preserves existing strategy' '
git config maintenance.strategy none &&
git maintenance register &&
next prev parent reply other threads:[~2021-01-15 6:37 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-08 19:22 What's cooking in git.git (Jan 2021, #02; Fri, 8) Junio C Hamano
2021-01-09 10:55 ` Ævar Arnfjörð Bjarmason
2021-01-09 21:28 ` Junio C Hamano
2021-01-09 22:05 ` brian m. carlson
2021-01-09 23:20 ` Junio C Hamano
2021-01-11 1:53 ` brian m. carlson
2021-01-11 19:04 ` Junio C Hamano
2021-01-12 14:00 ` Ævar Arnfjörð Bjarmason
2021-01-14 23:52 ` Emily Shaffer
2021-01-14 23:56 ` Emily Shaffer
2021-01-15 7:22 ` Junio C Hamano
2021-01-15 0:29 ` brian m. carlson
2021-01-15 1:44 ` Junio C Hamano
2021-01-16 16:23 ` Ævar Arnfjörð Bjarmason
2021-01-17 17:15 ` Jeff King
2021-01-17 20:22 ` Ævar Arnfjörð Bjarmason
2021-01-10 19:00 ` Ævar Arnfjörð Bjarmason
2021-01-11 0:21 ` Junio C Hamano
2021-01-09 21:38 ` David Aguilar
2021-01-09 23:08 ` Junio C Hamano
2021-01-14 23:06 ` Emily Shaffer
2021-01-15 1:50 ` Junio C Hamano
2021-01-15 2:24 ` Taylor Blau
2021-01-15 2:44 ` Taylor Blau
2021-01-15 2:36 ` Derrick Stolee
2021-01-15 2:54 ` Derrick Stolee
2021-01-15 6:36 ` Junio C Hamano [this message]
2021-01-15 6:38 ` Junio C Hamano
2021-01-15 11:36 ` Derrick Stolee
2021-01-15 19:44 ` Junio C Hamano
2021-01-15 20:08 ` Emily Shaffer
2021-01-15 20:59 ` Junio C Hamano
2021-01-15 19:52 ` Jeff King
2021-01-15 21:40 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqr1mmu2nx.fsf@gitster.c.googlers.com \
--to=gitster@pobox.com \
--cc=emilyshaffer@google.com \
--cc=git@vger.kernel.org \
--cc=stolee@gmail.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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).