Ian Jackson writes ("Re: Bug#884646: No commands in dgit-maint-gbp appear to 
work with 3.0 (quilt) packages"):
> More when I have figured out what is going on.

So, my discoveries and some other facts:

The file
    debian/patches/0008-Add-support-for-Subversion-svnserve.patch
says
    diff --git a/conf_convert b/conf_convert
    new file mode 100755
    index 0000000..a47ecba

gbp pq import uses git to apply patches.  git honours the file mode.
This results in a git tree object containing an executable
conf_convert.

dpkg-source does not use git.  It does not honour the file mode (at
least in the version I have here).  So the source package, when
unpacked with dpkg-source, produces a non-executable conf_convert.

dgit --quilt=gbp build-source uses gbp pq import to generate the
"dgit view".

dgit push checks that the dgit view is identical to the .dsc, and
fails.

A hint was given by this series of messages:
 warning: dgit: gbp-pq import and dpkg-source disagree!
 dgit:  gbp-pq import gave commit 51b9594715c59e98e17207918996edbc160f5762
 dgit:  gbp-pq import gave tree a2f3c6124e1176af8e5eebcd7b1a378818f991f6
 dgit:  dpkg-source --before-build gave tree 
dc66d4bce760602ff12f5894baaf931caa2c01fa



Things that I think are wrong:

* Your package contains a patch which produces different results from
  dpkg-source to gbp pq import.  This is clearly undesirable and I
  think it is reasonable for dgit to fail here.  (In some cases this
  would mean the maintainer sending an unbuildable package to the
  archive, which builds when gbp pq import applies the patches, but
  not when using dpkg-source and no git tools.)

* dgit push printed this
    dgit: HEAD specifies a different tree to rssh_2.3.4-6.dsc:
    dgit:  conf_convert | 0
    dgit:  1 file changed, 0 insertions(+), 0 deletions(-)
  which is a terribly obtuse way of reporting a permission
  difference.

* dgit push printed this
    dgit:   ... To see a full diff, run
    dgit:   git diff dc66d4bce760602ff12f5894baaf931caa2c01fa HEAD
  but that is completely wrong and produces a bunch of irrelevant
  stuff.

  I think the bug is that the message says HEAD but of course the
  relevant diff is between the .dsc and the dgit view, not between the
  .dsc and HEAD, in split brain mode.  If I do this
     git diff dc66d4bce760602ff12f5894baaf931caa2c01fa 
4dcfadb60855855fa909fb1544c22af63084b4c0
  I get only the expected mention of the mode of conf_convert.
  (that hash came from "dgit view: found cached (commit id...)")

* dgit push printed this
    see dgit(7) for some hints
  but dgit(7) mentions nothing about this kind of problem.


I think if you fix the first problem (eg by manually editing the patch
to specify 644 as the mode, or with gbp pq and chmod and git-commit -a
--amend) you will be able to use dgit in future.

The others are problems with dgit.  I'll wait a bit to see what
everyone says, and then do some bug gardening and/or docs work.


I make no comment about the behaviour of dpkg-source, except to say
that having dpkg-source change, now, to honour the file mode, would be
undesirable, because it would change the meaning of existing source
packages.


Thanks,
Ian.


-- 
Ian Jackson <ijack...@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.

Reply via email to