From: Ævar Arnfjörð Bjarmason Date: Fri, 5 Nov 2021 14:08:05 +0000 (+0100) Subject: generate-cmdlist.sh: stop sorting category lines X-Git-Tag: v2.35.0-rc0~116^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8d5be8b421cf525a2fa61cb77921c74be7090c0a;p=thirdparty%2Fgit.git generate-cmdlist.sh: stop sorting category lines In a preceding commit we changed the print_command_list() loop to use printf's auto-repeat feature. Let's now get rid of get_category_line() entirely by not sorting the categories. This will change the output of the generated code from e.g.: - { "git-apply", N_("Apply a patch to files and/or to the index"), 0 | CAT_complete | CAT_plumbingmanipulators }, To: + { "git-apply", N_("Apply a patch to files and/or to the index"), 0 | CAT_plumbingmanipulators | CAT_complete }, I.e. the categories are no longer sorted, but as they're OR'd together it won't matter for the end result. This speeds up the generate-cmdlist.sh a bit. Comparing HEAD~ (old) and "master" to this code: 'sh generate-cmdlist.sh command-list.txt' ran 1.07 ± 0.33 times faster than 'sh generate-cmdlist.sh.old command-list.txt' 1.15 ± 0.36 times faster than 'sh generate-cmdlist.sh.master command-list.txt' Suggested-by: Jeff King Signed-off-by: Ævar Arnfjörð Bjarmason Signed-off-by: Junio C Hamano --- diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh index a1ab2b1f07..f50112c50f 100755 --- a/generate-cmdlist.sh +++ b/generate-cmdlist.sh @@ -9,11 +9,6 @@ command_list () { eval "grep -ve '^#' $exclude_programs" <"$1" } -get_category_line () { - tr ' ' '\012' | - LC_ALL=C sort -u -} - category_list () { command_list "$1" | cut -c 40- | @@ -67,7 +62,7 @@ print_command_list () { while read cmd rest do printf " { \"$cmd\", $(get_synopsis $cmd), 0" - printf " | CAT_%s" $(echo "$rest" | get_category_line) + printf " | CAT_%s" $rest echo " }," done echo "};"