{"thread":{"id":"21967","subject":"elegant(?) debian topgit workflow?","startedAt":"2009-12-16T10:13:38Z","lastAt":"2009-12-24T16:34:10Z","messageCount":3,"participants":["Thomas Koch","Felipe Contreras","David Greaves"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"129987","messageId":"200912161113.38396.thomas@koch.ro","threadId":"21967","inReplyTo":null,"subject":"elegant(?) debian topgit workflow?","fromName":"Thomas Koch","fromEmail":"thomas@koch.ro","sentAt":"2009-12-16T10:13:38Z","receivedAt":"2009-12-16T10:13:38Z","isPatch":false,"sender":{"key":"thomas@koch.ro","avatar":null},"body":"CC (FYI) to git and debian-devel. see http://vcs-pkg.org\n\nHi,\n\nwould you be so kind to review my workflow proposal?\n\nbranches\n--------\n\nupstream\ndebian/*, fixes/*, features/* - topgit branches based on upstream\npatches - the hero\nmaster - contains the debian/ dir and is the branch we build from\n\nAll topgit branches are integrated in the patches branch, which is afterwards \nmerged into master. The magic is, that the integration is not a regular merge, \nbut a handcrafted merge and commit with quilt and git plumbing.\n\nworkflow\n--------\n\nEvery merge starts with reseting \"patches\" to the state of upstream:\n\n#> git checkout upstream\n(for the first time: git checkout -b patches, otherwise:)\n#> git symbolic-ref HEAD refs/heads/patches\n\nNow we're on branch patches with the working tree and index in the pristine \nstate of upstream. We can now integrate the topgit branches:\n\n#> tg export --quilt debian/patches \\\n -b debian/use-debian-java-libraries,debian/disable-tests-that-break-on-buildd\n\n#> quilt push -a\n#> git add debian/\n#> rm -rf .pc\n#> git add -u\n\nNow let's create the commit and specify, which topgit branches were manually \nmerged:\n\n#> TREE=$(git write-tree)\n\n#> COMMIT=$(git commit-tree $TREE \\\n     -p debian/use-debian-java-libraries \\\n     -p debian/disable-tests-that-break-on-buildd)\n\n#> git update-ref refs/heads/patches $COMMIT\n\nNow I can happily merge patches into master.\n\nadvantages\n----------\n\n- The commits of all ever merged topgit branches are preserved, even after tg \ndelete\n\n- easy to understand, non cluttered history\n\n- Easy to retire topgit branches\n\n- Easy to work on old package versions(?): just make a branch from master at \ndesired version, eventually also branch patches branch to work on old patches\n\n- The quilt patches are used and therefore tested in the same way, as dpkg-\nsource uses them in version 3\n\n- Integrates with git-buildpackage\n\n- Doesn't need anything, that topgit hasn't ATM\n\nTodo\n----\n\ndiscuss, test, script\n\nBest regards,\n\nThomas Koch, http://www.koch.ro\n"},{"id":"130312","messageId":"94a0d4530912240714y798085d8r3bf88011e8ec782b@mail.gmail.com","threadId":"21967","inReplyTo":"200912161113.38396.thomas@koch.ro","subject":"Re: elegant(?) debian topgit workflow?","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2009-12-24T15:14:40Z","receivedAt":"2009-12-24T15:14:40Z","isPatch":false,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"On Wed, Dec 16, 2009 at 12:13 PM, Thomas Koch <thomas@koch.ro> wrote:\n> branches\n> --------\n>\n> upstream\n\nI would call it 'master'. That's how upstream would call it.\n\n> debian/*, fixes/*, features/* - topgit branches based on upstream\n> patches - the hero\n> master - contains the debian/ dir and is the branch we build from\n\nThink about other systems, like Ubuntu and Maemo, it would be nice to\nhave branches both for Maemo and Debian on the same repo:\ndebian - what you call 'master'\ndebian-patches - what you call 'patches'\nmaemo5 - contains the debian/ dir, but for Maemo 5\nmaemo5-patches - patches for Maemo 5, might be based on top of debian-patches\n\n-- \nFelipe Contreras\n"},{"id":"130313","messageId":"4B339802.7040003@dgreaves.com","threadId":"21967","inReplyTo":"94a0d4530912240714y798085d8r3bf88011e8ec782b@mail.gmail.com","subject":"Re: elegant(?) debian topgit workflow?","fromName":"David Greaves","fromEmail":"david@dgreaves.com","sentAt":"2009-12-24T16:34:10Z","receivedAt":"2009-12-24T16:34:10Z","isPatch":false,"sender":{"key":"david@dgreaves.com","avatar":"https://gravatar.com/avatar/ca67bad50999edcdd137c9a65da2381557d175bea99ae956afdabc5785e42b79?d=mp&s=160"},"body":"Felipe Contreras wrote:\n> On Wed, Dec 16, 2009 at 12:13 PM, Thomas Koch <thomas@koch.ro> wrote:\n>> branches\n>> --------\n>>\n>> upstream\n> \n> I would call it 'master'. That's how upstream would call it.\n> \n>> debian/*, fixes/*, features/* - topgit branches based on upstream\n>> patches - the hero\n>> master - contains the debian/ dir and is the branch we build from\n> \n> Think about other systems, like Ubuntu and Maemo, it would be nice to\n> have branches both for Maemo and Debian on the same repo:\n> debian - what you call 'master'\n> debian-patches - what you call 'patches'\n> maemo5 - contains the debian/ dir, but for Maemo 5\n> maemo5-patches - patches for Maemo 5, might be based on top of debian-patches\n\nI've been touting for feedback on this for a while :)\n\nhttp://wiki.maemo.org/Mer/Build/UsingGitorious\n\nDavid\n\n-- \n\"Don't worry, you'll be fine; I saw it work in a cartoon once...\"\n"}]}