svn commit: r342774 - head/sys/conf

Andrew Gallatin gallatin at FreeBSD.org
Fri Jan 4 18:38:29 UTC 2019


Author: gallatin
Date: Fri Jan  4 18:38:27 2019
New Revision: 342774
URL: https://svnweb.freebsd.org/changeset/base/342774

Log:
  Limit git history searches in newvers.sh
  
  newvers.sh takes upwards of 4-5 seconds to complete on trees checked
  out from github, due to searching the entire history for non-existent
  git-svn metadata. Similarly, if one does not check out notes, we
  again search the entire history for notes. That makes newvers.sh very
  slow for many github users.
  
  To fix this in a fair way, limit the history search to the last 10K
  commits: if you're more than 10K commits out of sync, then you've
  forked the project, and our SVN rev is no longer very important to you.
  
  Due to how git implements --grep in conjunction with -n, --grep has been
  removed for performance reasons (git does not seem to limit its search
  to the -n limit in this case, and takes just as long as it did with no
  limit).
  
  Reviewed by:	emaste, imp
  Sponsored by:	Netflix
  Differential Revision:	https://reviews.freebsd.org/D18745

Modified:
  head/sys/conf/newvers.sh

Modified: head/sys/conf/newvers.sh
==============================================================================
--- head/sys/conf/newvers.sh	Fri Jan  4 18:35:25 2019	(r342773)
+++ head/sys/conf/newvers.sh	Fri Jan  4 18:38:27 2019	(r342774)
@@ -243,11 +243,15 @@ if [ -n "$git_cmd" ] ; then
 		svn=" r${gitsvn}"
 		git="=${git}"
 	else
-		gitsvn=`$git_cmd log --grep '^git-svn-id:' | \
+#		Log searches are limited to 10k commits to speed up failures.
+#		We assume that if a tree is more than 10k commits out-of-sync
+#		with FreeBSD, it has forked the the OS and the SVN rev no
+#		longer matters.
+		gitsvn=`$git_cmd log -n 10000 |
 		    grep '^    git-svn-id:' | head -1 | \
 		    sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
 		if [ -z "$gitsvn" ] ; then
-			gitsvn=`$git_cmd log --format='format:%N' | \
+			gitsvn=`$git_cmd log -n 10000 --format='format:%N' | \
 			     grep '^svn ' | head -1 | \
 			     sed -n 's/^.*revision=\([0-9][0-9]*\).*$/\1/p'`
 		fi


More information about the svn-src-head mailing list