[Debian-med-packaging] dgit repos history rewritten: upgrade your dgit, and rewrite!

Ian Jackson ijackson at chiark.greenend.org.uk
Sat Jan 7 13:57:00 UTC 2017


Ian Jackson writes ("dgit repos history to be rewritten for some packages"):
> At between 13:00 and 14:00 UTC tomorrow, 7th January, I will rewrite
> the histories of all affected repositories on the dgit git server.
> (During that time I will disable pushes.)

This has now been done.

Before doing touching (even with `dgit fetch') affected packages[1]:

 * Upgrade to dgit >= 2.16 (preferably, 2.16.2).

 * Run `dgit-badcommit-fixup --real' in all working trees and repos.
   This includes any repos (eg on alioth) that might have received
   dgit-generated pseudomerges.

The dgit-badcommit-fixup script is in dgit >= 2.16 (currently in sid)
but does not depend on the rest of the dgit package.  You can copy
just that script to an affected server, and run it there.  The version
in dgit 2.16.2 is best as it has some minor improvements.  In 2.16.2,
you can use `dgit-badcommit-fixup --check' to see if a tree is
tainted, without making any changes.  The script is a no-op if there
are no bad commits.


If you accidentally use an older version of dgit, or operate in an
unconverted repo, you may reintroduce the bad commits and stitch them
into your history.  You will then not be able to push - you'll get a
message about `corrupted objects' from the server.

If this happens to you please contact me and I will try to help.
But, in case I'm not around: there are two recovery strategies:

1. Try to discard affected history, for example by deleting the dgit
remote tracking branch refs/remotes/dgit/dgit/sid; rewinding any
affected local branches; and so on.

2. Run `dgit-badcommit-fixup --real' in the affected repo.  You may
need to `git update-ref -d refs/dgit-badcommit/...' first.  Then,
optionally, you may want to strip off spurious merge commits from
refs/remotes/dgit/dgit/sid (or other affected branches).  Such a
spurious merge will have been rewritten by the fixup into one which
has two identical parents and makes no change to the tree.

If you're lucky the merges introducing bad commits may be only in the
dgit quilt cache and your version tags, in which case you can run the
fixup script, bump the package version number, and redo the push with
dgit >= 2.16.


My apologies once again for all this inconvenience.

Regards,
Ian.

[1] Affected packages:
   a2jmidid
   aggressive-indent-mode
   classic-theme-restorer
   clipit
   dh-elpa
   ebib
   edid-decode
   flycheck
   git-phab
   helm
   keysafe
   ncbi-tools6
   network-manager-strongswan
   numpydoc
   pkg-info-el
   sympathy
   ublock-origin
   verilog-mode
   wpa
   xen
   xtrkcad
   yasnippet-snippets
   yasnippet
   zxcvbn-c

-- 
Ian Jackson <ijackson at chiark.greenend.org.uk>   These opinions are my own.

If I emailed you from an address @fyvzl.net or @evade.org.uk, that is
a private address which bypasses my fierce spamfilter.



More information about the Debian-med-packaging mailing list