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]"; }
* 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.
--
$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);
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;
# 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
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);
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;
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();
}
t-v-tag () {
- echo refs/tags/debian/${v//\~/_}
+ echo refs/tags/test-dummy/${v//\~/_}
}
t-pushed-good () {
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'
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
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" \
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"
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
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
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
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
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
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.