chiark / gitweb /
Use force flag when pushing tags
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 23 Jun 2015 12:16:23 +0000 (13:16 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 23 Jun 2015 13:14:09 +0000 (14:14 +0100)
Newer versions of git push will not overwrite an existing tag unless
the client specifies + on the refspec (or --force).  (This is a
client-side check.)

So add this flag where appropriate, both in dgit itself, and in the
test suite.

dgit
tests/tests/drs-push-rejects

diff --git a/dgit b/dgit
index c84fb80..fdc922e 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -1693,7 +1693,7 @@ sub dopush ($) {
        create_remote_git_repo();
     }
     runcmd_ordryrun @git, qw(push),access_giturl(),
-        $forceflag."HEAD:".rrref(), "refs/tags/$tag";
+        $forceflag."HEAD:".rrref(), $forceflag."refs/tags/$tag";
     runcmd_ordryrun @git, qw(update-ref -m), 'dgit push', lrref(), 'HEAD';
 
     if ($we_are_responder) {
index e80620d..3a70947 100755 (executable)
@@ -98,7 +98,7 @@ mustfail 'sid != sponge' HEAD:refs/dgit/sponge $push_spec2
 prep unstable sid
 mktag
 mustfail 'push is missing tag ref update' $push_spec1
-mustfail 'push is missing head ref update' $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
@@ -139,11 +139,11 @@ mktag
 mustsucceed $push_spec # succeeds
 
 mktag
-mustfail 'push is missing head ref update' $push_spec
+mustfail 'push is missing head ref update' $push_spec1 +$push_spec2
 
 git commit --allow-empty -m 'Dummy update'
 mktag
-mustfail 'not replacing previously-pushed version' $push_spec
+mustfail 'not replacing previously-pushed version' +$push_spec1 +$push_spec2
 git reset --hard HEAD~
 
 prep_dm_mangle () {