Bug#1032105: pkg-perl-tools: [dpt prepare] gitddiff shouldn't use last tag but last tag in current branch

gregor herrmann gregoa at debian.org
Tue Feb 28 16:26:53 GMT 2023


On Tue, 28 Feb 2023 07:39:15 +0400, Yadd wrote:

> > thanks for this powerful tool. When using `dpt prepare` on a package
> > that have backports, it shows the difference with last backport, not
> > last unstable upload. You can try for example with lemonldap-ng.

Indeed, I've encountered this too, and it's annoying :)

Any help in finding an improvement is very welcome.

> > In lib/dpt-lib.sh, maybe you could replace
> >    TAG=$(git rev-list -n1 --tags)
> or simply
>   TAG=$(git describe --abbrev=0)

I have a hunch that this doesn't work in all cases, and before
testing it, I even hit another issue:

Example: libsql-translator-perl

  % git tag | grep debian/1\.
  archive/debian/1.60-1
  archive/debian/1.61-1
  archive/debian/1.62-1
  debian/1.60-1
  debian/1.61-1
  debian/1.62-1
  debian/1.62-2
  debian/1.62-3

  % git rev-list -n1 --tags=debian
  ed7aa767edfdb042a5bbc4a19722236e17afd891

[matches tag: debian/1.62-3]

  % git describe --abbrev=0
  archive/debian/1.62-1

Ehm, no; first we don't want the archive/debian/* tag (from a
previous dgit upload) -- although maybe they are the same in
practice? -- , and second we want the -3 upload.


Maybe like this:

  % git describe --abbrev=0 --tags                   
  debian/1.62-3


Not like this:

  % git describe --abbrev=0 --match "debian/*" 
  debian/1.62-1


But maybe this:

  % git describe --abbrev=0 --match "debian/*" --tags
  debian/1.62-3


Anyway, now to my actual question:
This gitddiff function is used for 2 purposes / on 2 occasions in the
dpt-* code:
- before working on a package, for whatever reason, after pulling,
  to check what happened in the repo since the last upload;
  that's the dpt-prepare case
- after importing a new upstream release, to see all changes since
  the last upload and to know what we need to change (that's in
  dpt-import-orig)
- (I also have a git alias:
  ddiff  = "!git diff --ignore-space-at-eol $(if [ \"$(dpkg-source --print-format .)\" != \"3.0 (native)\" ]; then git rev-list -n1 --tags=debian; else git rev-list -n1 --tags; fi)"
  so `git ddiff' does basically the same at any time)

I'm wondering that `git describe …' will do after `dpt-import-orig',
so let's try with our example package libsql-translator-perl:

  `dpt import-orig' …

  % git rev-list -n1 --tags=debian
  ed7aa767edfdb042a5bbc4a19722236e17afd891

(still the same debian/1.62-3)

  % git describe --abbrev=0                          
  upstream/1.63

Ha, that's what I suspected :)

  % git describe --abbrev=0 --tags
  upstream/1.63

Same …

But this works:

  % git describe --abbrev=0 --match "debian/*" --tags # [1]
  debian/1.62-3


So this looks quite well.

Maybe, in order to git rid of the separation between native and
non-native package, something funky as

  % git describe --abbrev=0 --match "$(gbp config DEFAULT.debian-tag | sed -e 's/%(version)s/*/g;')" --tags # [2]
  debian/1.62-3


:)


Alright, maybe we all try out either [1] or [2] a bit?
I've updated my .gitconfig and my local version of
scripts/lib/dpt-lib.sh to use [2].


Cheers,
gregor

-- 
 .''`.  https://info.comodo.priv.at -- Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe
   `-   
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 963 bytes
Desc: Digital Signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-perl-maintainers/attachments/20230228/8ce55bf9/attachment-0001.sig>


More information about the pkg-perl-maintainers mailing list