Sean Whitton writes ("Bug#977845: dgit: unhelpful behavior in case previous 
upload contained new upstream release"):
> It can't distinguish between stuck in some dak queue vs. actually
> rejected, though?

dgit doesn't currently distinguish that.  Mostly because I thought the
information is not available.

> I must be missing something here, because I don't see why the rejected
> orig.tar is needed.  apt-get source will get you the orig.tar for the
> version actually in the archive, which is what you want to base your
> work off?

Well, that depends.  dgit (currently) takes the view that in this
situation you should start from the version in git rather than the
version in the archive.

This is in large part because if you do "dgit clone" in the period
between "dgit push" and archive publication, you probably didn't want
to revert what the last uploader did.

I hesitate to put it like this, but: it is difficult to represent the
Debian archive in something moderately sensible like the git data
model, because the Debian archive is slow[1], opaque[2],
capricious[3], and racy[4].

Ideally the situation I would like is that if someone does dgit push,
and has the package REJECTed for some reason, their co-maintainer
should be able to fix it without having to do more than "dgit fetch",
hack hack hack, "dgit push".  For this the co-maintainer needs the new
orig, not the one in the archive.

If a dgit-clone-using NMUer wants to upload from the last ACCEPTed,
either the git history has to diverge (and then what?), or the NMUer
has to make a pseudomerge which effectively reverts the
new-source-package upload.

This is all quite a mess.  I think it's a worse mess to try to go
backwards, than to treat the uploaded-but-REJECTed version as the
baseline.

Ian.

[1] Several hours from upload to visibility in ftpmaster data API, in
    the best case.  Significant fractions of a year in the worst.

[2] As I understand it, you can't tell what's queued and whether
    things are held back, or rejected, or what.

[3] Software can only do a very poor job of predicting whether a
    particular package will go via the fast path, or the slow path of
    NEW, or the very slow path of sitting in NEW for months while
    people procrastinate and/or argue.

[4] Proper use of the Debian archive data model requires external
    synchronisation on a per-source-package basis, to avoid lost
    updates.  This is because the update operation does not guarantee
    that of multiple concurrent updates, at most one will return
    "success" for the synchronous result of the upload attempt.  In
    dgit's data model, this synchronisation is provided by the
    dgit-repos git server.  In the trad Debian data model this is
    provided by unstructured and manual human coordination.

-- 
Ian Jackson <ijack...@chiark.greenend.org.uk>   These opinions are my own.  

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

Reply via email to