Thread (9 messages) 9 messages, 6 authors, 2021-01-15

Re: What's cooking in git.git (Jan 2021, #02; Fri, 8)

flat view

From: Junio C Hamano <hidden>
Date: 2021-01-15 06:37:39

Derrick Stolee [off-list ref] 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 &&
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help