Ok, so I have looked at both gbp-pq and git-dpm.

To me, the key difference is different way they store the patches. There
are minor differences in user interfaces, etc, however I don't consider
these to be so important.

(apologies if this has already been said or contradicted, I am finding it
hard to keep up with these threads)


gbp-pq
---------
Tutorial: https://honk.sigxcpu.org/piki/development/debian_packages_in_git/

In gbp-pq, the authoritative source is always the patches in
debian/patches. The patch-queue is just for convenience, so you can update
patches with standard git commands. There is no history kept of the
patch-queue branch. Possibly the patch-queue branch shouldn't be pushed to
remote repositories, because rebasing is expected. This makes it simple.
History is kept of debian/patches. It is not possible to refer to patches
with commit id, because this won't last a rebase or reedit. However,
comparing different Debian versions with patches applied won't be so easy,
you will have to check out two copies, manually apply the patches, and then
do a diff.

git-dpm
----------
Tutorial: http://git-dpm.alioth.debian.org/examples.html

git-dpm keeps every version of every patch in git. As a result, every patch
in debian/patches has a hash referencing the git commit. After merged into
the Debian branch, this hash will not disappear even if the patch is
deleted or changed. You can provide the commit id of the patch, if ever
required (most cases the latest patch file might be better choice). As
above, history is also kept of the debian/patches directory. I believe if
you do a diff between two debian tags you will get the patches included.

summary
-----------
There are two options I haven't looked at: dgit and git-debcherry (or is
that got-debcherry?) - mainly because I can't find these using Google.

gbp-pq and git-dpm are not compatible methods. It is not possible to
use git-dpm or a gbp-pq repostory or vis versa. If you use gbp-pq on
a git-dpm repository, it will work, however, you will not preserve the
patches in git where git-dpm expects to find them. So git-dpm will get
confused and do the wrong thing the next time it is run.

Somebody mentioned the ease of bisect. If you bisect a gbp-pq tree, you
won't get the patches applied unless your testing does this. If you bisect
the git-dpm tree, you will get the patches applied. bisecting on the Debian
branch should be easy enough I think, despite the extra merges. I haven't
done this myself.

I am tending to side towards the git-dpm, because I like the idea of every
git commit being preserved.

gbp-pq feels to me like a version of quilt enhanced to support git for
making local changes. As such if you want to work locally on a project
without git-dpm support, and you don't want to change that, gbp-pq might be
the best choice. Which is a lot better then basic quilt, however not as
good as git-dpm for distributed development.

I hope I haven't made too many mistakes :-)
-- 
Brian May <br...@microcomaustralia.com.au>

Reply via email to