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 <nw...@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
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to