This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document why bisect.pl can't be in the checkout used for bisecting.
authorNicholas Clark <nick@ccl4.org>
Wed, 5 Oct 2011 16:19:37 +0000 (18:19 +0200)
committerNicholas Clark <nick@ccl4.org>
Wed, 5 Oct 2011 16:20:58 +0000 (18:20 +0200)
Add a sanity test to catch this case.

Porting/bisect-runner.pl
Porting/bisect.pl

index 1e31764..95427fa 100755 (executable)
@@ -126,6 +126,17 @@ Because the test case is the complete argument to C<system>, it is easy to
 run something other than the F<perl> built, if necessary. If you need to run
 the perl built, you'll probably need to invoke it as C<./perl -Ilib ...>
 
+You need a clean checkout to run a bisect, and you can't use the checkout
+which contains F<Porting/bisect.pl> (because C<git bisect>) will check out
+a revision before F<Porting/bisect-runner.pl> was added, which
+C<git bisect run> needs). If your working checkout is called F<perl>, the
+simplest solution is to make a local clone, and run from that. I<i.e.>:
+
+    cd ..
+    git clone perl perl2
+    cd perl2
+    ../perl/Porting/bisect.pl ...
+
 =head1 OPTIONS
 
 =over 4
index f3ae566..98cd127 100755 (executable)
@@ -16,6 +16,14 @@ $runner =~ s/bisect\.pl/bisect-runner.pl/;
 
 die "Can't find bisect runner $runner" unless -f $runner;
 
+{
+    my ($dev0, $ino0) = stat $0;
+    die "Can't stat $0: $!" unless defined $ino0;
+    my ($dev1, $ino1) = stat 'Porting/bisect.pl';
+    die "Can't run a bisect using the directory containing $runner"
+      if defined $dev1 && $dev0 == $dev1 && $ino0 == $ino1;
+}
+
 system $^X, $runner, '--check-args', @ARGV and exit 255;
 
 # We try these in this order for the start revision if none is specified.