git: 50a6ae407596 - stable/12 - newvers.sh: Speed up git_tree_modified
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 06 Sep 2022 19:08:28 UTC
The branch stable/12 has been updated by emaste:
URL: https://cgit.FreeBSD.org/src/commit/?id=50a6ae40759607424052ca70ad0bf246c3ed6087
commit 50a6ae40759607424052ca70ad0bf246c3ed6087
Author: Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2020-12-17 00:00:21 +0000
Commit: Ed Maste <emaste@FreeBSD.org>
CommitDate: 2022-09-06 17:25:49 +0000
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 <nwf20@cl.cam.ac.uk>
Reviewed by: bdrewery, emaste, imp
Obtained from: CheriBSD
MFC after: 3 days
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D27646
PR: 252028
(cherry picked from commit 17eba5e32a2cf7a217bb9f1e5dcca351f2b71cfc)
---
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 e1aa29f8d98d..18ada43e0cbc 100644
--- a/sys/conf/newvers.sh
+++ b/sys/conf/newvers.sh
@@ -81,29 +81,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
- $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
}