svn commit: r259075 - svnadmin/hooks/scripts

Peter Wemm peter at FreeBSD.org
Sat Dec 7 18:46:26 UTC 2013


Author: peter
Date: Sat Dec  7 18:46:25 2013
New Revision: 259075
URL: http://svnweb.freebsd.org/changeset/base/259075

Log:
  Add a -t / -r mode so it can be run on either a proto-txn or an existing
  rev for testing.  Update explanation text.

Modified:
  svnadmin/hooks/scripts/detect-mergeinfo-bloat.pl

Modified: svnadmin/hooks/scripts/detect-mergeinfo-bloat.pl
==============================================================================
--- svnadmin/hooks/scripts/detect-mergeinfo-bloat.pl	Sat Dec  7 18:27:21 2013	(r259074)
+++ svnadmin/hooks/scripts/detect-mergeinfo-bloat.pl	Sat Dec  7 18:46:25 2013	(r259075)
@@ -65,9 +65,10 @@ my $svnlook = "/usr/bin/svnlook";
 ######################################################################
 # Initial setup/command-line handling.
 
-&usage unless @ARGV == 2;
+&usage unless @ARGV == 3;
 
 my $repos        = shift;
+my $mode         = shift;
 my $txn          = shift;
 
 unless (-e $repos) {
@@ -100,12 +101,12 @@ chdir($tmp_dir)
 my $state = 0;
 my $path;
 my @errors;
-foreach my $line (&read_from_process($svnlook, 'diff', $repos, '-r', $txn)) {
+foreach my $line (&read_from_process($svnlook, 'diff', $repos, $mode, $txn)) {
   #printf "line: %s, current state %d\n", $line, $state;
   if ($state == 0 && $line =~ /^Property changes on: (.*)$/) {
     $path = $1;
     given ($path) {
-      when (/stable\/([0-9]+)/) { if ($1 >= 10) { $state = 1; } else { $state = 0; } }
+      when (/stable\/([0-9]+)\//) { if ($1 >= 10) { $state = 1; } else { $state = 0; } }
       default { $state = 0; }
     }
     #printf "path: %s, state %d\n", $path, $state;
@@ -119,7 +120,7 @@ foreach my $line (&read_from_process($sv
   if ($state == 2) {
     given ($line) {
       when (/^Added: svn:mergeinfo/) {
-	push @errors, "$path : svn:merginfo added at somewhere other than root";
+	push @errors, "$path : svn:merginfo ADDED";
       }
       when (/^================/) { $state = 0; }
     }
@@ -131,9 +132,16 @@ foreach my $line (&read_from_process($sv
 # and will not see this verbose message more than once.
 if (@errors) {
     warn "$0:\n\n", join("\n", @errors), "\n\n", <<EOS;
-    svn merge should be done at the root directory to prevent
-    spread of stray mergeinfo records.  This commit adds new
-    mergeinfo.
+    If you use "svn merge" then it must be done at the top directory
+    directory to prevent spread of mergeinfo records.  Resulting
+    commits must ALSO be done from the root directory.
+
+    This applies to the stable/10 or higher branches.
+
+    This commit was aborted because it would have added NEW mergeinfo
+    records elsewhere, somehow.
+
+    merges with --ignore-ancestry or diff | patch do not require this.
 EOS
   exit 1;
 } else {
@@ -143,7 +151,7 @@ EOS
 sub usage
 {
   warn "@_\n" if @_;
-  die "usage: $0 REPOS TXN-NAME\n";
+  die "usage: $0 REPOS [-r REV] | [-t TXN-NAME]\n";
 }
 
 sub safe_read_from_pipe


More information about the svn-src-svnadmin mailing list