Source: dgit
Version: 9.12
Severity: normal
Tags: patch

Using --damp-run with push (to check it will work) writes the local
tag for the current version, but does not update the server.

A subsequent push will fail, because dgit assumes that tag-creation
and pushing to the dgit server is an atomic operation, so interprets
this as a previous push failing. It would be nice if it checked for
this case and just pushed so things get back in sync, but in the
meantime, or if that remains too hard, documenting this foible in the
man page would be helpful.

Attached is a patch for the --damp-run option so that it now says:
 Go through many more of the motions: do everything that doesn't
 involve either signing things, or making changes on the public
 servers. Note that when used with push this writes local tags but 
 not remote ones, which breaks dgit's assumptions about atomic operations, 
 so a subsequent dgit push will need --force-reusing-version to succeed.

It would probably be good to note this usage under --force-reusing-version too

Something like this:
--force-reusing-version
              Carry on even though this involves reusing a version
              number of a previous push or upload.  It is normally
              best to give different versions different
              numbers. However if --damp-run was used with push on
              this version then this option is appropriate to sync the
              local version with the dgit server.  Some servers
              (including, usually, the Debian server) will reject
              attempts to reuse or replace already-pushed versions.

(this latter change not in the patch)

-- System Information:
Debian Release: 10.6
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-debug'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-8-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
--- dgit.1~     2020-08-19 16:25:45.000000000 +0000
+++ dgit.1      2020-11-06 23:44:48.260816780 +0000
@@ -504,7 +504,9 @@
 .BR \-\-damp-run " | " \-L
 Go through many more of the motions: do everything that doesn't
 involve either signing things, or making changes on the public
-servers.
+servers. Note that when used with push this writes local tags but 
+not remote ones, which breaks dgit's assumptions about atomic operations, 
+so a subsequent dgit push will need --force-reusing-version to succeed.
 .TP
 .BI \-k keyid
 Use

Reply via email to