Gecko 1.9 is nearly here, and I’m looking forward to it. But there’s a catch… I have to make some fairly extensive changes to it, changes that will not live in the 1.9 repo on any branch. So I’m hoping a few people can point me to some nice freebie tools for applying patches in one repository to another repo’s code, and keeping the patches up to date. Or for handling cross-repository (and for that matter, cross-repository-platform) patches in general.
(The concept I have is that, following the new XULRunner build system, my app’s source would live in mozilla/verbosio – from a separate repository than the 1.9 code base.)
From my brief research, Mercurial Queues seems perfect for this – within Mercurial repositories anyway. Apparently, the 1.9 CVS stable branch will not be tracked in parallel on hg.mozilla.org after RC1 (grumble, grumble), so I’m not sure how MQ could be used in this scenario. Or I’d have to host the whole Moz code plus my project in hg, and do catch-up merges from CVS as new point releases come up. (If I go that route, I’ll have to be super-nice to the mozdev folks and bribe them to set up and host a clone…)
Believe me, it’s very little fun to try making two repo systems work together. The equivalents of CVS ignore are just the beginning of the pain.
Another question that comes to mind is: how do you make comments inside a GNU diff file? Do they support, like Perl does, a hash-begins-a-comment-line form of commenting, at least between files? That would make it easier for me to document these patches I’d keep.
I’m also hoping someone will take the time to publish a Mercurial guide in hardcopy. I really appreciate William Nagel’s “Subversion Version Control” — it’s much easier to understand than http://svnbook.red-bean.com/.
I can probably write some simple Perl code to apply the patches as I just mentioned, but maintenance is another issue. Please advise.