On Tue, Mar 15, 2011 at 11:53 PM, Andrew Stubbs <andrew.stu...@linaro.org> wrote: > Richard may know all this, but I'm just going to post anyway in case some > people reading can benefit from some tips. > > I find that bzr is slow - there's no getting around it, but there are some > tricks that can help. > > On 14/03/11 11:12, Richard Sandiford wrote: >> >> My concern was that, again with my way of working, the process is: >> >> 1) develop fix >> 2) branch trunk (creating a whole new gcc source tree, so quite slow) > > This is going to take a short while however you cut it, but doing it the > naive way is *very* slow. > > So, make sure you use "init-repo". This creates a top-level ".bzr" directory > that can be shared between many branches. This cuts down on network usage, > and speeds up local branching also. > > To set it up: > > mkdir my_work_dir > cd my_work_dir > bzr init-repo . > bzr branch lp:gcc-linaro my_1st_branch > bzr branch lp:gcc-linaro my_2nd_branch > .... > > Basically, any branches you create within sub-directories of "my_work_dir" > have shared history, so there's no need to waste time duplicating it. > > I believe hard-linking should be a win too, but I don't use it much: > > bzr branch --hardlink my_1st_branch my_2nd_branch > > You might also try experimenting with local stacked branches (so the new one > has only shallow history), but I'm not sure there's any advantage if you use > a shared repo: > > bzr branch --stacked my_1st_branch my_2nd_branch > >> 3) apply fix to new branch, with ChangeLog entry >> 4) publish new branch in laucnhpad > > I find "bzr push" is quite fast, but there's a special gotcha - it always > stacks new feature branches on top of the gcc-linaro/4.5 branch (more > accurately, the "focus of development" branch), and if you're working with > 4.4 or 4.6, that means there quite a lot of difference to upload. > > You can fix this by telling it what branch to stack on: > > bzr push > --stacked-on=bzr+ssh://bazaar.launchpad.net/~linaro-toolchain-dev/gcc-linaro/4.6 > lp:~<user>/gcc-linaro/<newbranch> > > Unfortunately, the "lp:..." form doesn't work with --stacked-on. :( > >> 5) wait for branch to be processed by launchpad (only a few minutes, >> nothing major) >> 6) ask for a review >> 7) merge to trunk (with the inevitable ChangeLog merge failure >> that you mentioned). >> >> whereas the upstream way would be: >> >> 1) develop fix >> 2) ask for a review, attaching patch >> 3) apply patch to trunk, with ChangeLog entry >> >> The upstream way feels much simpler, and avoids the merge failure hassle. > > True. If you prefer, by all means include the ChangeLog entry in the merge > request, and it can be inserted into ChangeLog.linaro at merge time. > > It makes no real difference to me, but it does mean that if there is anybody > out there pulling toolchains from feature branches, the ChangeLogs won't be > helpful. I doubt that anybody does that??? > >>> Short story is that we have a better tool than svn, so feature >>> branches may make some use cases overall easier and more transparent. >> >> Well, as you say, the size of GCC and its history is pushing the limits >> of bzr a bit. For bug-fixing and committing, I actually find quilt+svn >> to be a fair bit more productive than bzr, and that's even with Andrew >> doing the heavy work on merging. > > I'd say that calling bzr a better tool than svn is pushing it a bit. It has > some nice features, and it works better than svn for launchpad's purposes, > but I'd still rather use SVN or, better still, git. If bzr wasn't such a dog > to use (for large projects), it would be as good as SVN or GIT, but it would > not be "better" - just different. (Svn was lacking a good merge tool, but I > believe that's fixed now?)
I prefer bzr over svn for this project for reasons that are better discussed over a beer... I've updated the BzrTips page on the wiki: https://wiki.linaro.org/WorkingGroups/ToolChain/BzrTips with links out to Andrew's, Loic's, and Martin's emails. If these tips work for you, please edit the wiki. I've also updated the BzrIssues page at: https://wiki.linaro.org/MichaelHope/Sandbox/BzrIssues with the performance numbers from earlier in the thread. -- Michael _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev