diff options
-rwxr-xr-x | dgit | 5 | ||||
-rw-r--r-- | dgit.1 | 5 | ||||
-rwxr-xr-x | infra/dgit-repos-policy-trusting | 46 | ||||
-rwxr-xr-x | tests/tests/debpolicy-newreject | 2 |
4 files changed, 55 insertions, 3 deletions
@@ -165,8 +165,9 @@ sub deliberately ($) { } sub deliberately_not_fast_forward () { - deliberately('not-fast-forward') || - deliberately('TEST-not-fast-forward-dgit-only'); + foreach (qw(not-fast-forward fresh-repo)) { + return 1 if deliberately($_) || deliberately("TEST-dgit-only-$_"); + } } #---------- remote protocol support, common ---------- @@ -278,6 +278,11 @@ option after verifying that: none of the rejected-from-NEW (or never-accepted) versions in the git history of your current push, were rejected by ftpmaster for copyright or redistributability reasons. .TP +.BR --deliberately-fresh-repo +Declare that you are deliberately rewinding history and want to +throw away the existing repo. Not relevant when pushing to Debian, +as the Debian server will do this automatically when necessary. +.TP .BR --quilt=linear When fixing up source format `3.0 (quilt)' metadata, insist on generating a linear patch stack. If such a stack cannot be generated, diff --git a/infra/dgit-repos-policy-trusting b/infra/dgit-repos-policy-trusting new file mode 100755 index 0000000..b550d01 --- /dev/null +++ b/infra/dgit-repos-policy-trusting @@ -0,0 +1,46 @@ +#!/bin/bash +set -e + +case "$DGIT_DRS_DEBUG" in +''|0) exec 3>/dev/null ;; +1) exec 3>&2 ;; +*) exec 3>&2; set -x ;; +esac + +distro=$1 ; shift +reposdir=$1 ; shift +livedir=$1 ; shift +distrodir=$1 ; shift +action=$1 ; shift + +echo >&3 "dgit-repos-policy-trusting: action=$action" + +case "$action" in +push|push-confirm) ;; +*) exit 0 ;; +esac + +package=$1 ; shift +version=$1 ; shift +suite=$1 ; shift +tagname=$1 ; shift +delibs=$1 ; shift + +bitmask=0 + +policyflags () { + perl -e 'use Debian::Dgit qw(:policyflags); print '$1',"\n"' +} + +set -e + +case "$action//,$delibs," in +push//*,--deliberately-fresh-repo,*) + bitmask=$(( bitmask | `policyflags 'NOFFCHECK|FRESHREPO'` )) + ;; +push//*,--deliberately-not-fast-forward,*) + bitmask=$(( bitmask | `policyflags 'NOFFCHECK'` )) + ;; +esac + +exit $bitmask diff --git a/tests/tests/debpolicy-newreject b/tests/tests/debpolicy-newreject index c1192d1..b2bf6be 100755 --- a/tests/tests/debpolicy-newreject +++ b/tests/tests/debpolicy-newreject @@ -70,7 +70,7 @@ t-expect-fail "HEAD is not a descendant of the archive's version" \ t-dgit push t-expect-fail "Package is in NEW and has not been accepted or rejected yet" \ -t-dgit --deliberately-TEST-not-fast-forward-dgit-only push +t-dgit --deliberately-TEST-dgit-only-not-fast-forward push t-dgit --deliberately-not-fast-forward push |