git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 15, 2021, 06:36 UTC
Message-ID
<xmqqr1mmu2nx.fsf@gitster.c.googlers.com>
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 &&
Previous: Derrick StoleeNext: Junio C Hamano
Message 27 of 34 in “What's cooking in git.git (Jan 2021, #02; Fri, 8)”
  1. Junio C HamanoJan 8, 2021
  2. Ævar Arnfjörð BjarmasonJan 9, 2021
  3. Junio C HamanoJan 9, 2021
  4. brian m. carlsonJan 9, 2021
  5. Junio C HamanoJan 9, 2021
  6. brian m. carlsonJan 11, 2021
  7. Junio C HamanoJan 11, 2021
  8. Ævar Arnfjörð BjarmasonJan 12, 2021
  9. Emily ShafferJan 14, 2021
  10. Emily ShafferJan 14, 2021
  11. Junio C HamanoJan 15, 2021
  12. brian m. carlsonJan 15, 2021
  13. Junio C HamanoJan 15, 2021
  14. Ævar Arnfjörð BjarmasonJan 16, 2021
  15. Jeff KingJan 17, 2021
  16. Ævar Arnfjörð BjarmasonJan 17, 2021
  17. Ævar Arnfjörð BjarmasonJan 10, 2021
  18. Junio C HamanoJan 11, 2021
  19. David AguilarJan 9, 2021
  20. Junio C HamanoJan 9, 2021
  21. Emily ShafferJan 14, 2021
  22. Junio C HamanoJan 15, 2021
  23. Taylor BlauJan 15, 2021
  24. Taylor BlauJan 15, 2021
  25. Derrick StoleeJan 15, 2021
  26. Derrick StoleeJan 15, 2021
  27. Junio C HamanoJan 15, 2021
  28. Junio C HamanoJan 15, 2021
  29. Derrick StoleeJan 15, 2021
  30. Junio C HamanoJan 15, 2021
  31. Emily ShafferJan 15, 2021
  32. Junio C HamanoJan 15, 2021
  33. Jeff KingJan 15, 2021
  34. Junio C HamanoJan 15, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.