X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=e9b2cd54e90a6d29d4d91552dba88516b6d6b713;hb=2193c15cf92d4765da004a310bf684b61718eedf;hp=c23ffa65758362c83b031e09474a75d59dbd8342;hpb=acb8139b0c7f4de6287ab2c347170c88da8c89ad;p=dgit.git diff --git a/dgit b/dgit index c23ffa65..e9b2cd54 100755 --- a/dgit +++ b/dgit @@ -53,7 +53,7 @@ use Debian::Dgit; our $our_version = 'UNRELEASED'; ###substituted### our $absurdity = undef; ###substituted### -our @rpushprotovsn_support = qw(4 5); # 5 drops tag format specification +our @rpushprotovsn_support = qw(6 5 4); # Reverse order! our $protovsn; our $cmd; @@ -300,6 +300,10 @@ sub deliberately_not_fast_forward () { sub quiltmode_splitting () { $quilt_mode =~ m/gbp|dpm|unapplied|baredebian/; } +sub format_quiltmode_splitting ($) { + my ($format) = @_; + return madformat_wantfixup($format) && quiltmode_splitting(); +} sub do_split_brain () { !!($do_split_brain // confess) } @@ -469,6 +473,7 @@ sub branch_is_gdr ($) { # > param head DGIT-VIEW-HEAD # > param csuite SUITE # > param tagformat new # $protovsn == 4 +# > param splitbrain 0|1 # $protovsn >= 6 # > param maint-view MAINT-VIEW-HEAD # # > param buildinfo-filename P_V_X.buildinfo # zero or more times @@ -973,9 +978,8 @@ sub notpushing () { parseopts_late_defaults(); } -sub determine_whether_split_brain () { - my ($format,) = get_source_format(); - +sub determine_whether_split_brain ($) { + my ($format) = @_; { local $access_forpush; default_from_access_cfg(\$splitview_mode, 'split-view', 'auto', @@ -985,7 +989,7 @@ sub determine_whether_split_brain () { printdebug "format $format, quilt mode $quilt_mode\n"; - if (madformat_wantfixup($format) && quiltmode_splitting()) { + if (format_quiltmode_splitting $format) { $splitview_mode ne 'never' or fail f_ "dgit: quilt mode \`%s' (for format \`%s')". " implies split view, but split-view set to \`%s'", @@ -993,8 +997,6 @@ sub determine_whether_split_brain () { $do_split_brain = 1; } $do_split_brain //= 0; - - return ($format); } sub supplementary_message ($) { @@ -4357,6 +4359,7 @@ sub push_mktags ($$ $$ $) { my $cversion = getfield $clogp, 'Version'; my $clogsuite = getfield $clogp, 'Distribution'; + my $format = getfield $dsc, 'Format'; # We make the git tag by hand because (a) that makes it easier # to control the "tagger" (b) we can do remote signing @@ -4679,6 +4682,7 @@ ENDT responder_send_command("param csuite $csuite"); responder_send_command("param isuite $isuite"); responder_send_command("param tagformat new"); # needed in $protovsn==4 + responder_send_command("param splitbrain $do_split_brain"); if (defined $maintviewhead) { responder_send_command("param maint-view $maintviewhead"); } @@ -4882,7 +4886,7 @@ sub cmd_fetch { sub cmd_pull { parseopts(); fetchpullargs(); - determine_whether_split_brain(); + determine_whether_split_brain get_source_format(); if (do_split_brain()) { my ($format, $fopts) = get_source_format(); madformat($format) and fail f_ <= 6) { + determine_whether_split_brain getfield $dsc, 'Format'; + $do_split_brain eq ($i_param{'splitbrain'} // '') + or badproto \*RO, + "split brain mismatch, $do_split_brain != $i_param{'split_brain'}"; + printdebug "rpush split brain $do_split_brain\n"; + } + } my @localpaths = i_method "i_want", $keyword; printdebug "[[ $keyword @localpaths\n"; @@ -5197,8 +5212,6 @@ sub i_resp_want ($) { print RI "files-end\n" or confess "$!"; } -our ($i_clogp, $i_version, $i_dscfn, $i_changesfn, @i_buildinfos); - sub i_localname_parsed_changelog { return "remote-changelog.822"; } @@ -5266,7 +5279,7 @@ sub i_want_signed_tag { die unless $i_param{'csuite'} =~ m/^$suite_re$/; $csuite = $&; - push_parse_dsc $i_dscfn, 'remote dsc', $i_version; + defined $dsc or badproto \*RO, "dsc (before parsed-changelog)"; my @tagwants = push_tagwants $i_version, $head, $maintview, "tag"; @@ -6569,7 +6582,8 @@ sub build_or_push_prep_early () { } sub build_or_push_prep_modes () { - my ($format,) = determine_whether_split_brain(); + my ($format) = get_source_format(); + determine_whether_split_brain($format); fail __ "dgit: --include-dirty is not supported with split view". " (including with view-splitting quilt modes)"