-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I'm trying to solicit feedback about how Quilt v3 packages should be
handled by the package importer.

First I'll start by describing my understanding of the format, so people
can correct me if I'm understanding things incorrectly.

Basically, in v3 format, you end up with

a) debian/patches/*
   Individual patch files, each describing a change to the orig.tar.gz
b) .pc/
   A directory managed by Quilt, which describes those patches in the
   format the Quilt understands.
c) The working tree is also modified relative to the orig.tar.gz.
   Eg, upstream has a file "foo" with the content "hello\n". There is a
   patch which has:
     hello
    +world

   Then there would be a debian/patches/01-add-world and some sort of
   corresponding patch in .pc and the content of 'foo' in the working
   tree would be "hello\nworld\n"


Some further thoughts

a) At the moment, when working on Quilt v3 format package, you need the
   .pc directory around. However, there is a way to build it from
   scratch if necessary.

b) Merging .patch files is a bit error prone, and certainly hard to
   debug.

c) There is a whole lot of redundancy in this system. Since the
   debian/patches files are somewhat replicated in the .pc directory,
   which is also reflected in the state of the file contents.

d) How often is it that patches are directly layered on top of
   each other (textually)? So patch 1 makes it 'hello\nworld\n' and
   patch 2 changes it to "hello world\n". Or some other "patch 1 must \
   be applied before patch 2 makes *any* sense"

   Because if they all are textually different, then it is strictly
   redundant. But otherwise it is possible for one to introduce state
   that another mutates, which wouldn't be reflected in the working
   state.

e) looms, still a bit of a question how this interacts with everything
   else.



Now that I've described the state as I understand it, here are some
questions.

1) As I understand it, most people are in favor of *not* versioning the
   .pc directory. So that when you do "bzr branch lp:ubuntu/foo" you'll
   get a tree with:
     a) debian/patches/* still intact
     b) Those patches applied to the working tree
     c) no .pc directory

2) Doesn't that mean that you have to rebuild the .pc directory right
   after you get the checkout? Wouldn't it be easier to get it from the
   beginning? Or is it just introducing an extra place to get conflicts
   when trying to merge.

   That said, if you did end up merging 2 branches that didn't have .pc
   directories, how would you get the .pc directory rebuilt? (Since
   presumably the patch series need to be combined in some way, and
   modifications to the source tree also need to be replicated into the
   patches themselves.)


All this may change again if we switch the importer to use looms, since
then you can do stuff like merge the patches one-by-one up the stack
until you get to the top, without having to deal with conflicts in .diff
format.

John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk1MJ9UACgkQJdeBCYSNAAN1/wCgpACZF2Co2VLsD+C4QqM7Uthy
frIAn2x31OTAJhHe24Y9DlH2RtEQ4DE6
=1DAg
-----END PGP SIGNATURE-----

-- 
ubuntu-distributed-devel mailing list
ubuntu-distributed-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-distributed-devel

Reply via email to