svn commit: r368709 - head/sys/conf

Brooks Davis brooks at FreeBSD.org
Thu Dec 17 00:00:21 UTC 2020


Author: brooks
Date: Thu Dec 17 00:00:21 2020
New Revision: 368709
URL: https://svnweb.freebsd.org/changeset/base/368709

Log:
  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 at 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

Modified:
  head/sys/conf/newvers.sh

Modified: head/sys/conf/newvers.sh
==============================================================================
--- head/sys/conf/newvers.sh	Wed Dec 16 22:25:40 2020	(r368708)
+++ head/sys/conf/newvers.sh	Thu Dec 17 00:00:21 2020	(r368709)
@@ -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


More information about the svn-src-head mailing list