chiark / gitweb /
dgit: aptget: un-disable cache clean
[dgit.git] / infra / dgit-repos-policy-debian
index 62a275ac837478f10da61ec898f9b6909b19fbc2..48a42d93ea132e96d41353da10240286d2443d54 100755 (executable)
@@ -1,8 +1,24 @@
 #!/usr/bin/perl -w
 # dgit repos policy hook script for Debian
+#
+# Copyright (C) 2015-2016  Ian Jackson
+#
+#    This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 use strict;
 
+use Debian::Dgit::Infra; # must precede Debian::Dgit; - can change @INC!
 use Debian::Dgit qw(:DEFAULT :policyflags);
 setup_sigwarn();
 
@@ -109,12 +125,20 @@ sub apiquery ($) {
 sub vsn_in_our_history ($) {
     my ($vsn) = @_;
 
-    my $tagref = "refs/tags/".debiantag_old $vsn, $distro;
-    printdebug " checking history  vsn=$vsn tagref=$tagref\n";
-    $?=0; my $r = system qw(git show-ref --verify --quiet), $tagref;
-    return 1 if !$r;
-    return 0 if $r==256;
-    die "$pkg tagref $tagref $? $!";
+    # Eventually, when we withdraw support for old-format (DEP-14
+    # namespace) tags, we will need to change this to only look
+    # for debiantag_new.  See the commit
+    #   "Tag change: Update dgit-repos-policy-debian"
+    # (reverting which is a good start for that change).
+
+    my @tagrefs = map { "refs/tags/".$_ } debiantags $vsn, $distro;
+    printdebug " checking history  vsn=$vsn tagrefs=@tagrefs\n";
+    open F, "-|", qw(git for-each-ref), @tagrefs;
+    $_ = <F>;
+    close F;
+    return 1 if defined && m/\S/;
+    die "$pkg tagrefs @tagrefs $? $!" if $?;
+    return 0;
 }
 
 sub specific_suite_has_suitable_vsn ($$) {