chiark / gitweb /
For non-Debian distros, debiantag() uses distro name a la DEP-14.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 4 Jul 2015 17:06:29 +0000 (18:06 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 4 Jul 2015 18:24:47 +0000 (19:24 +0100)
Debian/Dgit.pm
debian/changelog
dgit
infra/dgit-repos-policy-debian
infra/dgit-repos-server
tests/lib
tests/tests/debpolicy-dbretry
tests/tests/debpolicy-newreject
tests/tests/drs-push-rejects
tests/tests/trustingpolicy-replay

index 37cbc51..2938ae1 100644 (file)
@@ -101,10 +101,10 @@ sub debugcmd {
     printcmd(\*DEBUG,$debugprefix.$extraprefix,@_) if $debuglevel>0;
 }
 
-sub debiantag ($) { 
-    my ($v) = @_;
+sub debiantag ($$) { 
+    my ($v,$distro) = @_;
     $v =~ y/~:/_%/;
-    return "debian/$v";
+    return "$distro/$v";
 }
 
 sub server_branch ($) { return "$branchprefix/$_[0]"; }
index 333ad3d..ef2c842 100644 (file)
@@ -90,6 +90,7 @@ dgit (0.23~) unstable; urgency=low
   * Manpages: Other clarifications and improvements.
   * Change realpath dependency to `coreutils (>= 8.23-1~) | realpath'
     (Closes:#786955.)
+  * For non-Debian distros, debiantag() uses distro name a la DEP-14.
 
  --
 
diff --git a/dgit b/dgit
index f0f1651..265978e 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -1570,7 +1570,7 @@ sub push_parse_changelog ($) {
 
     $package = getfield $clogp, 'Source';
     my $cversion = getfield $clogp, 'Version';
-    my $tag = debiantag($cversion);
+    my $tag = debiantag($cversion, access_basedistro);
     runcmd @git, qw(check-ref-format), $tag;
 
     my $dscfn = dscfn($cversion);
index b21f797..0774f17 100755 (executable)
@@ -106,7 +106,7 @@ sub specific_suite_has_vsn_in_our_history ($) {
     foreach my $entry (@$in_suite) {
        my $vsn = $entry->{version};
        die "$pkg ?" unless defined $vsn;
-       my $tagref = "refs/tags/".debiantag $vsn;
+       my $tagref = "refs/tags/".debiantag $vsn, $distro;
        printdebug " checking history suite=$suite vsn=$vsn tagref=$tagref\n";
        $?=0; my $r = system qw(git show-ref --verify --quiet), $tagref;
        return 1 if !$r;
index a6f57be..ae25aaa 100755 (executable)
@@ -62,7 +62,7 @@ $SIG{__WARN__} = sub { die $_[0]; };
 #   as a result of this the stunt pre-receive hook runs; it does this:
 #    + understand what refs we are allegedly updating and
 #      check some correspondences:
-#        * we are updating only refs/tags/debian/* and refs/dgit/*
+#        * we are updating only refs/tags/DISTRO/* and refs/dgit/*
 #        * and only one of each
 #        * and the tag does not already exist
 #      and
@@ -323,7 +323,7 @@ sub movetogarbage () {
 
     ensuredir "$dgitrepos/_removed-tags";
     open PREVIOUS, ">>", removedtagsfile or die removedtagsfile." $!";
-    git_for_each_ref('refs/tags/'.debiantag('*'), sub {
+    git_for_each_ref('refs/tags/'.debiantag('*',$distro), sub {
        my ($objid,$objtype,$fullrefname,$reftail) = @_;
        print PREVIOUS "\n$objid $reftail .\n" or die $!;
     }, $real);
@@ -458,7 +458,7 @@ sub readupdates () {
        printdebug " upd.| $_\n";
        m/^(\S+) (\S+) (\S+)$/ or die "$_ ?";
        my ($old, $sha1, $refname) = ($1, $2, $3);
-       if ($refname =~ m{^refs/tags/(?=debian/)}) {
+       if ($refname =~ m{^refs/tags/(?=$distro/)}) {
            reject "pushing multiple tags!" if defined $tagname;
            $tagname = $'; #';
            $tagval = $sha1;
@@ -773,11 +773,9 @@ sub checks () {
     tagh1('object') eq $commit or reject "tag refers to wrong commit";
     tagh1('tag') eq $tagname or reject "tag name in tag is wrong";
 
-    my $v = $version;
-    $v =~ y/~:/_%/;
-
-    printdebug "translated version $v\n";
-    $tagname eq "debian/$v" or die;
+    my $expecttagname = debiantag $version, $distro;
+    printdebug "expected tag $expecttagname\n";
+    $tagname eq $expecttagname or die;
 
     lockrealtree();
 
index 055d5fa..a397425 100644 (file)
--- a/tests/lib
+++ b/tests/lib
@@ -370,7 +370,7 @@ t-refs-notexist () {
 }
 
 t-v-tag () {
-       echo refs/tags/debian/${v//\~/_}
+       echo refs/tags/test-dummy/${v//\~/_}
 }
 
 t-pushed-good () {
index 1b98f76..d9c2ea2 100755 (executable)
@@ -22,7 +22,7 @@ t-commit 'Make something to autotaint'
 t-dgit build
 t-dgit push --new
 
-autotaint=`t-git-get-ref "refs/tags/debian/$v"`
+autotaint=`t-git-get-ref "refs/tags/test-dummy/$v"`
 
 git reset --hard start
 t-commit 'Thing which will autotaint'
index c238a5a..6987ef3 100755 (executable)
@@ -50,7 +50,7 @@ t-git-dir-check enoent
 t-commit 'should require --deliberately...questionable'
 t-dgit build
 
-t-expect-push-fail E:"tag debian/${vanished//./\\.} referred to this object.*all previously pushed versions were found to have been removed" \
+t-expect-push-fail E:"tag test-dummy/${vanished//./\\.} referred to this object.*all previously pushed versions were found to have been removed" \
 t-dgit push --new
 t-git-dir-check enoent
 
@@ -101,7 +101,7 @@ t-commit 'Check taint is no longer there'
 t-dgit build
 t-dgit push
 
-git checkout -b stoats debian/$vanished
+git checkout -b stoats test-dummy/$vanished
 t-commit 'Simulate accidentally building on rejected version'
 t-dgit build
 t-expect-push-fail "HEAD is not a descendant of the archive's version" \
index 3a70947..3ce1447 100755 (executable)
@@ -31,7 +31,7 @@ prep () {
        cp $tmp/masters/* $tmp/.
        tag_signer='-u Senatus'
        tag_message="$p release $version for $suite ($csuite) [dgit]"
-       tag_name=debian/$version
+       tag_name=test-dummy/$version
        push_spec1="HEAD:refs/dgit/$csuite"
        push_spec2="refs/tags/$tag_name"
        push_spec="$push_spec1 $push_spec2"
@@ -101,7 +101,7 @@ mustfail 'push is missing tag ref update' $push_spec1
 mustfail 'push is missing head ref update' +$push_spec2
 mustfail 'pushing unexpected ref' $push_spec HEAD:refs/wombat
 mustfail 'pushing multiple heads' $push_spec HEAD:refs/dgit/wombat
-mustfail 'pushing multiple tags' $push_spec HEAD:refs/tags/debian/wombat
+mustfail 'pushing multiple tags' $push_spec HEAD:refs/tags/test-dummy/wombat
 
 prep unstable sid
 mktag
@@ -128,11 +128,11 @@ mktag HEAD~:
 mustfail 'tag refers to wrong kind of object' $push_spec
 
 prep unstable sid
-tag_name=debian/wombat
+tag_name=test-dummy/wombat
 mktag
-#git update-ref debian/$version debian/wombat
+#git update-ref test-dummy/$version test-dummy/wombat
 mustfail 'tag name in tag is wrong' \
-       refs/tags/debian/wombat:refs/tags/debian/$version $push_spec1
+       refs/tags/test-dummy/wombat:refs/tags/test-dummy/$version $push_spec1
 
 prep unstable sid
 mktag
index 2736a52..f2a7043 100755 (executable)
@@ -20,7 +20,7 @@ t-dgit build
 t-dgit push
 
 t-rm-dput-dropping
-git checkout debian/1.0
+git checkout test-dummy/1.0
 t-dgit build
 t-dgit push --deliberately-fresh-repo
 
@@ -28,8 +28,8 @@ remote="`git config dgit-distro.test-dummy.git-url`/$p.git"
 
 t-expect-push-fail 'Replay of previously-rewound upload' \
 git push "$remote" \
-       debian/1.1 \
-       debian/1.1~0:refs/dgit/sid
+       test-dummy/1.1 \
+       test-dummy/1.1~0:refs/dgit/sid
 
 git checkout master
 
@@ -57,11 +57,11 @@ prepare-replay () {
 
 attempt-replay () {
        local mpat=$1
-       git show debian/$replayv | grep -e $delib
+       git show test-dummy/$replayv | grep -e $delib
        t-expect-push-fail "$mpat" \
        git push "$remote" \
-               debian/$replayv \
-               +debian/$replayv~0:refs/dgit/sid
+               test-dummy/$replayv \
+               +test-dummy/$replayv~0:refs/dgit/sid
 }
 
 prepare-replay --deliberately-fresh-repo
@@ -77,7 +77,7 @@ t-commit 'later version to stop not fast forward rewinding'
 t-dgit build
 t-dgit push
 
-attempt-replay "does not declare previously tags/debian/$v"
+attempt-replay "does not declare previously tags/test-dummy/$v"
 
 
 echo ok.