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.