X-Git-Url: https://git.exim.org/buildfarm-client.git/blobdiff_plain/8a0e7f5c13b0abdccb8445939cebd5f55d8a1916..13a8b801ba0f0e39bc0af6b8c420857eb111d7c9:/run_branches diff --git a/run_branches b/run_branches index bf377fb..8ee1f9f 100755 --- a/run_branches +++ b/run_branches @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl =comment @@ -85,23 +85,27 @@ if (not exists $EximBuild::Conf{auto_update} or $EximBuild::Conf{auto_update}) die "$0: auto-update not possible: need write permissions in @{[cwd]}\n" if not -w '.'; + # Get information about our remote and calculate the chance for a + # successfull auto-updat. Based on: # http://stackoverflow.com/questions/3258243/check-if-pull-needed-in-git system("git fetch $remote") == 0 or die $? >> 8; my ($upstream, $local, $base) = qx'git rev-parse ...@{upstream}'; die $? >> 8 if $?; $base =~ s/^\^//; if ($upstream ne $local) { - die "$0: the merge base is not local anymore. Refusing to `git pull`\n" - if $base ne $local; - say "Doing git pull ..." if $verbose; - - # if we're the merge base, the ff-only should workkkkkk - system 'git pull --ff-only' == 0 or die $? >> 8; - say "$0: re-execute after update"; - chdir $CALLED{cwd} or die "$0: Can't chdir to $CALLED{cwd}: $!\n"; - exec $CALLED{argv0}, @{$CALLED{argv}}; - die "Can't re-exec\n"; + if ($base ne $local) { + warn "$0: the merge base is not local anymore. Refusing to `git pull`\n" + } + else { + # if we're the merge base, the ff-only should work + system('git pull --ff-only') == 0 or die $? >> 8; + + say "$0: re-execute after update"; + chdir $CALLED{cwd} or die "$0: Can't chdir to $CALLED{cwd}: $!\n"; + exec $CALLED{argv0}, @{$CALLED{argv}}; + die "Can't re-exec\n"; + } } }