Hi.

Sean Whitton writes ("Bug#1025451: dgit: incorrectly tries to export patch 
queue without explicit --quilt=nofix"):
> https://salsa.debian.org/emacsen-team/xref-el, reset master to 885455a.
> 
> If you try to run dgit commands, it invokes git-debrebase to export a
> broken patch queue.

So it does.  I think I have a fix for this in my working tree.
However:

>  The work around is to supply --quilt=nofix.

With my fix, and with this workaround:

zealot:xref-el> git checkout 885455a && dgit -wgf --quilt=nofix quilt-fixup
HEAD is now at 885455a d/changelog : update timestamp, mark ready for upload
Format `3.0 (quilt)', need to check/update patch stack
examining quilt state (multiple patches, nofix mode)
gzip: warning: GZIP environment variable is deprecated; use an alias or script
dgit: base trees orig=095082ae50ef2cf481ba o+d/p=095082ae50ef2cf481ba
dgit: quilt differences: src:  ## orig ==     gitignores:  == orig ==
dgit: quilt differences:      HEAD ## o+d/p               HEAD == o+d/p
starting quiltify (multiple patches, nofix mode)

dgit: error: quilt fixup required but quilt mode is `nofix'
dgit: HEAD commit 885455aaddb1d8290be5517bfd1835cbe4f2ccf6 differs from tree 
implied by debian/patches (tree object 095082ae50ef2cf481ba62d0186652fe64fc8963)
zealot:xref-el>

I'm not sure, but I wonder;

Maybe, in situations where the tree really doesn't need fixing up, the
git-debrebase invocation would be skipped and therefore the lossage
wouldn't occur.

However, that is not an answer to this bug because there might well be
situations where this git-debrebase invocation would make garbage
patches when dgit's internal algorithm would DTRT.  Happily the
resulting package can't be uploaded with dgit, but we do need to get
this lossage sorted.

Patch below.  I haven't yet got a test case and there are a few other
bugs I'm looking at so I won't upload just yet.

Ian.

commit 7669e0729230ca93b83f6a4c52f07403557c0de4
Author: Ian Jackson <ijack...@chiark.greenend.org.uk>
Date:   Sat Dec 10 18:52:13 2022 +0000

    FIX
    
    Signed-off-by: Ian Jackson <ijack...@chiark.greenend.org.uk>

diff --git a/dgit b/dgit
index d7db0460b..4597412ef 100755
--- a/dgit
+++ b/dgit
@@ -443,9 +443,13 @@ sub branch_is_gdr ($) {
            !defined git_cat_file "$walk~:debian" and
            !quiltify_trees_differ "$walk~", $walk
           ) {
-           # (gdr classification of parent: BreakwaterStart
+           # (gdr classification of parent: BreakwaterStart We cannot
+           # process this using git-debrebase, because this can misrecognise
+           # other kinds of branch contents, eg as in #1025451.  Not doing
+           # this via gdr is OK, because the normal quilt linearisation will
+           # do - doing it via gdr is just an optimisation.
            printdebug "branch_is_gdr  $walk unmarked BreakwaterStart YES\n";
-           return 1;
+           return 0;
        }
        # (gdr classification: Upstream Packaging Mixed Changelog)
        printdebug "branch_is_gdr  $walk plain\n"

-- 
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