From: Ian Jackson Date: Sun, 17 May 2015 13:16:23 +0000 (+0100) Subject: dgit: Allow --deliberately-not-fast-forward to override dgit's fast forward check X-Git-Tag: debian/0.30~147 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=5f9258f673404e784b450631b39ba433a1fda945;ds=sidebyside dgit: Allow --deliberately-not-fast-forward to override dgit's fast forward check --- diff --git a/dgit b/dgit index 5d239d69..3d362809 100755 --- a/dgit +++ b/dgit @@ -1658,7 +1658,8 @@ sub sign_changes ($) { } } -sub dopush () { +sub dopush ($) { + my ($forceflag) = @_; printdebug "actually entering push\n"; prep_ud(); @@ -1737,7 +1738,6 @@ sub dopush () { responder_send_command("param head $head"); responder_send_command("param csuite $csuite"); - my $forceflag = deliberately('not-fast-forward') ? '+' : ''; if ($forceflag && defined $lastpush_hash) { git_for_each_tag_referring($lastpush_hash, sub { my ($objid,$fullrefname,$tagname) = @_; @@ -1902,17 +1902,27 @@ sub cmd_push { if (check_for_git()) { git_fetch_us(); } + my $forceflag = ''; if (fetch_from_archive()) { - is_fast_fwd(lrref(), 'HEAD') or + if (is_fast_fwd(lrref(), 'HEAD')) { + # ok + } elsif (deliberately('not-fast-forward') || + deliberately('TEST-not-fast-forward-dgit-only')) { + $forceflag = '+'; + } else { fail "dgit push: HEAD is not a descendant". " of the archive's version.\n". - "$us: To overwrite it, use git merge -s ours ".lrref()."."; + "$us: To overwrite its contents,". + " use git merge -s ours ".lrref().".\n". + "$us: To rewind history, if permitted by the archive,". + " use --deliberately-not-fast-forward"; + } } else { $new_package or fail "package appears to be new in this suite;". " if this is intentional, use --new"; } - dopush(); + dopush($forceflag); } #---------- remote commands' implementation ----------