X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=helpers%2Fpreflight;h=9e87cbb46276b98c5e9742e44f45d01f0e67507c;hb=c5645b6dce3ebc1308814bd2f67e90c987eaaff3;hp=56e28307ea52566aa121f3d92398a2191cd2feb8;hpb=7b418de8a06fed447e6642cc3b905d187ba66a3c;p=p5sagit%2FDistar.git diff --git a/helpers/preflight b/helpers/preflight index 56e2830..9e87cbb 100755 --- a/helpers/preflight +++ b/helpers/preflight @@ -21,27 +21,27 @@ if (system("git rev-parse --quiet --verify v$version >$null") == 0) { die "Tag v$version already exists!"; } -for (scalar `"$make" manifest 2>&1 >$null`) { - $_ && die "$make manifest changed:\n$_ Go check it and retry"; -} - -for (scalar `git status`) { - /^(?:# )?On branch \Q$branch\E/ || die "Not on $branch. EEEK"; - /Your branch is behind|Your branch and .*? have diverged/ && die "Not synced with upstream"; -} +chomp(my $head = `git symbolic-ref -q HEAD`); +(my $current_branch = $head) =~ s{^refs/heads/}{}; +$head eq "refs/heads/$branch" + or die "Current branch is $current_branch, not $branch. EEEK!\n"; +chomp(my $upstream = `git for-each-ref --format="%(upstream)" $head`); +length $upstream + or die "No upstream branch configured for $branch!\n"; +my $base_rev = `git merge-base $upstream $head`; +my $upstream_rev = `git rev-parse --verify $upstream`; +$upstream_rev eq $base_rev + or die "Not synced with upstream!\n"; for (scalar `git diff`) { - length && die "Outstanding changes"; + length && die "Outstanding changes!\n"; } my $ymd = sprintf( "%i-%02i-%02i", (gmtime)[5]+1900, (gmtime)[4]+1, (gmtime)[3] ); my $changes_line = "$version - $ymd\n"; -my @cached = grep /^\+/, `git diff --cached -U0`; -@cached > 0 or die "Please add:\n\n$changes_line\nto $changelog and stage $changelog (git add $changelog)"; -@cached == 2 or die "All '$changelog' changes must be committed aside from version heading"; -$cached[0] =~ /^\+\+\+ .\/\Q$changelog\E\n/ or die "$changelog not changed"; -$cached[1] eq "+$changes_line" or die "$changelog new line should be: \n\n$changes_line "; - -{ no warnings 'exec'; `cpan-upload -h`; } -$? and die "cpan-upload not available"; +my @cached = grep /^\+/, `git diff --cached -U0 --no-prefix`; +@cached > 0 or die "Please add:\n\n$changes_line\nto $changelog and stage $changelog (git add $changelog)\n"; +@cached == 2 or die "All '$changelog' changes must be committed aside from version heading\n"; +$cached[0] =~ /^\+\+\+ \Q$changelog\E\n/ or die "$changelog not changed\n"; +$cached[1] eq "+$changes_line" or die "$changelog new line should be: \n\n$changes_line\n";