From e9b079afc8a69ddaecc917891593c123e0298cae Mon Sep 17 00:00:00 2001 From: brooks Date: Thu, 17 Dec 2020 00:00:21 +0000 Subject: [PATCH] newvers.sh: Speed up git_tree_modified We're looking for file content differences, so ask the question of git more directly. This helps a lot, saving tens of thousands of fork()s, when the builder and editor see different stat() results (e.g., UIDs), as they might with containers. Submitted by: Nathaniel Wesley Filardo Reviewed by: bdrewery, emaste, imp Obtained from: CheriBSD MFC after: 3 days Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D27646 --- sys/conf/newvers.sh | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 8e41fcfa94a..f5e34b4946a 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -162,29 +162,7 @@ findvcs() git_tree_modified() { - # git diff-index lists both files that are known to have changes as - # well as those with metadata that does not match what is recorded in - # git's internal state. The latter case is indicated by an all-zero - # destination file hash. - - local fifo - - fifo=$(mktemp -u) - mkfifo -m 600 $fifo || exit 1 - $git_cmd --work-tree=${VCSTOP} diff-index HEAD > $fifo & - while read smode dmode ssha dsha status file; do - if ! expr $dsha : '^00*$' >/dev/null; then - rm $fifo - return 0 - fi - if ! $git_cmd --work-tree=${VCSTOP} diff --quiet -- "${file}"; then - rm $fifo - return 0 - fi - done < $fifo - # No files with content differences. - rm $fifo - return 1 + $git_cmd "--work-tree=${VCSTOP}" -c core.checkStat=minimal -c core.fileMode=off diff --quiet } LC_ALL=C; export LC_ALL -- 2.45.0