I am currently happily using bzr with a 1.2Gb branch through judicious use of shared repositories and switching. Basically, I have one heavy-weight checkout of the 1.2Gb branch in a shared repository, where branches are created with no working trees by default. Then I switch the heavy-weight checkout between "features", before committing to the mainline. The obvious downside is that you can only work on X number of features at the same time (where X is the number of heavy-weight checkouts you have)... though switching this checkout between features is a very rapid operation (~10s on mine roughly).<br>
<br>Basic set up is:<br># Setup the shared bzr repo<br>cd /some/repo/<br>bzr init-repo --no-trees --default .<br><br># Make a clean branch of mainline<br>bzr branch /mainline/bzr/branch mainline<br><br># Make a feature to play with<br>
bzr branch mainline some-new-feature<br><br># Make a checkout to play with<br>bzr co some-new-feature working_1<br>*hack and play....*<br>*bzr commit etc.*<br><br># Make a new feature to play with<br>bzr branch mainline some-other-feature<br>
<br># Switch the heavy workout to the new feature DONT FORGET TO COMMIT FIRST (though bzr won't lose your changes... it's polite that way)<br>cd working_1<br>bzr switch ..\some-other-feature<br># Commits will now go to some-other-feature<br>
<br><br>To make this convenient on a day-to-day- basis, I've wrapped up common operations (like creating the branch and then binding the heavy checkout to the new feature branch) up in script files. So to start a new feature, I do "create-feature some-other-feature", and the scripts know my directory layout to take care of the branching etc.<br>
<br>Anywho... not sure if that is at all relevant to your use case, but it is working quite well here for ~8devs who have only just migrated from SVN... no data has been accidently lost yet either which is a bonus :). If it is relevant for you, I also have more information about how we mirror our branches onto a shared network repository and other such magics that go to making the setup work well for us.<br>
<br>Philip<br><br><div class="gmail_quote">On Wed, Jul 28, 2010 at 3:29 PM, Chris Hecker <span dir="ltr"><<a href="mailto:checker@d6.com">checker@d6.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Ah, sorry, I thought the whole .bzr directory was only 20mb and was confused!<br>
<br>
Very interested to hear responses!<br><font color="#888888">
<br>
Chris</font><div><div></div><div class="h5"><br>
<br>
<br>
On 2010/07/27 21:01, Michael Hope wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
'bzr revno 4.4' shows 93541 revisions. The mirror .bzr directory is<br>
549 MB. The 4.4 branch directory is 20 MB. The exported size is 559<br>
MB over 63000 files. It's reasonably big.<br>
<br>
-- Michael<br>
<br>
On Wed, Jul 28, 2010 at 3:57 PM, Chris Hecker<<a href="mailto:checker@d6.com" target="_blank">checker@d6.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
It seems like "large repository" means amount of history? 20mb is not very<br>
big at all for the .bzr, I think. How many revisions are there?<br>
<br>
My repo is 1k revisions, but 55mb, and operations are reasonably fast<br>
(creating a new working copy is a little pokey, 1300 files, but not too bad,<br>
maybe 10 seconds).<br>
<br>
I'm very interested in this topic. I have binary files in my repro (maya<br>
models and animations, photoshop psds, and audio files), and I'm worried<br>
about it blowing up in my face at some point, but so far it's been fine and<br>
I'm loving bzr relative to svn.<br>
<br>
Chris<br>
<br>
<br>
On 2010/07/27 19:40, Michael Hope wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Hi there. I'm working on the gcc-linaro branch which is stored under<br>
bzr and hosted on Launchpad. This is a fairly big branch as it was<br>
imported from upstream SVN and contains a large amount of history.<br>
<br>
Most of the work is day-to-day changes on topic branches. I also want<br>
to run a buildbot style program that continually updates and builds<br>
the latest.<br>
<br>
My issue is that the various operations are taking too long. Could<br>
anyone suggest tricks or a different work flow to speed things up?<br>
<br>
Some of the operations include:<br>
<br>
Creating a mirror branch by doing init-repo, branch lp:gcc-linaro/4.4.<br>
The finding revisions stage takes about 10 minutes at 1kB/s. The<br>
download stage is much faster.<br>
<br>
Day-to-day work is done on topic branches. Creating the branch takes<br>
46 s, 250 MB of RAM, and creates a 20 MB .bzr directory. Pushing this<br>
branch to LP for merging involves pushing the full 20 MB, but this is<br>
acceptable.<br>
<br>
Doing a bzr pull on the 4.4 mirror directory may more than half an<br>
hour and more than 500 MB of memory.<br>
<br>
Doing a bzr checkout takes over 20 minutes and 800 MB of memory on my<br>
fastest machine. On my netbook and ARM board this causes significant<br>
swapping. I've yet to complete a checkout on either.<br>
<br>
I'd also like to share the mirror with other local machines to skip<br>
downloading the same 500 MB many times. Running bzr serve and then<br>
checking out causes 100 % CPU usage for more than 10 minutes on the<br>
host.<br>
<br>
These numbers were with 2.2b4. 2.2 is significantly better than 2.1.<br>
<br>
-- Michael<br>
<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Philip Peitsch<br>Mob: 0439 810 260<br>