The Bazaar team blog is moving to a new location in our own domain: blog.bazaar.canonical.com.
August 29, 2011
June 2, 2011
It works by looking at previous revisions where the file was changed,
and seeing what test files were changed at the same time. You can
specify the files, or it will autodetect them by looking at your working
May 27, 2011
As the final step of consolidating all of the official Bazaar PPAs on Launchpad under one Launchpad team, the Bazaar Beta PPA formerly found at https://launchpad.net/~bzr-beta-ppa/+archive/ppa has moved to live under the main ~bzr team at https://launchpad.net/~bzr/+archive/beta. If you are a user and tester of Bazaar beta releases via this PPA, you will need to update your APT sources.list lines – you can see the new sources.list lines under the “Technical details about this PPA” section at the above link.
Last week was the Bazaar sprint, which was fantastic and tiring. Somehow even the people who’d been at UDS just before made it through five packed days of fixing bugs, preparing releases, and debugging package imports. We were most hospitably hosted at the Canonical offices a long way up Millbank tower. But even those who couldn’t be there in person to enjoy the view were part of the experience. At home in the Ukraine Alexander wore his Bazaar shirt in support during the first day. On IRC larstiq and santagada ran the test suite on pypy and investigated incompatibilities. And all week we had a small robot John sitting in the middle of the table on the line from the Netherlands, working on performance bugs and offering helpful advice.
There were two new faces introduced. Max has been a stalwart maintaining the ~bzr PPAs and getting daily builds working. Jonathan is joining the Bazaar team on rotation from Kubuntu, which is very exciting for fans of qbzr. He started getting to know bzrlib by taking on some bugs tagged ‘easy’ and pair programming on harder ones. It was a bit tough to keep track of everything going on, but good progress was made on the Ubuntu Distributed Development front, the translation framework branches Naoki put together were landed, and lots of pet bugs were fixed. Download bzr 2.4b3 now to see the rest of the results for yourself.
After these long days in front of screens a nice meal out was a welcome treat. Over dinner we even managed to get on to topics other than code on occasion. On Thursday evening everyone went to As You Like It at the Globe as groundlings. Even with the language barrier to overcome for some of the sprinters, the comedy lived up to the categorisation. Trying to use the cycle hire scheme to travel there and back proved more of an obstacle. The bikes themselves were fine, provided you could get past the terrible computer interface and persuade the system to let you rent them. Now, if only they took patches for that…
May 17, 2011
The last of my patches is queued up to land, so I figured I’d post an update about the performance improvements I’ve been working on. I’m also just excited about how well it has all come together.
There were essentially 3 changes that mattered for performance on large trees.
- Fixing iter_entries_by_dir() to preload the data in Repository- optimal ordering rather than by-request ordering. In large trees this was causing us to thrash and become pathologically slow. In the 70,000-file test tree, thrashing took about 3 minutes, the preloading version takes about 15s. This affected a lot of our commands, though I guess the next two fixes would actually reduce the number of commands affected by this.
- Fixing several code paths to use optimized iter_changes() rather than the generic iter_changes(). The generic path walks both inventories iter_entries_by_dir() and compares them. Our 2a format Repository can do iter_changes without loading the whole tree. (It internally uses a hash_trie to store the inventory, and so nodes with matching sub-trees can be skipped for comparison.) This generally shows up as something that was taking 15s (to load the whole inventory) dropping to <2s for the improved comparison. (bzr revert and bzr pull were both directly impacted here)
- Changing WT.set_parent_trees([one_tree]) to update itself using current_basis.iter_changes(one_tree), rather than setting the state from scratch. This basically adds another case where we can avoid reading the whole inventory state again, which is another 15s to <2s sort of change. This only showed up after fixing (2), because once the tree is loaded, the other actions are generally pretty quick. (bzr up, bzr pull)
This is the chart I put together for “whats-new-in-2.4.txt”. bzr-2.3.2 will have fix (1), but not (2) or (3), to give a feel for how much of an impact different fixes have had.
bzr-2.3.1 bzr-2.3.2 bzr-2.4 action 3m39s 1m08s 1m03s bzr co --lightweight 38s 8s 2s bzr revert (in a clean tree) 4m47s 3m56s 15s bzr merge 4m45s 20s 3s bzr pull 4m58s 3m00s 2s bzr up 9m33s 21s 19s bzr uncommit (including a merge) 4m44s 17s 2s bzr uncommit (simple commit)
So yes, some operations that were taking almost 5 minutes have now dropped down to taking <3s.
You won’t see that dramatic of an improvement for smaller trees, though most cases will have a pleasant improvement. Here is a short list for the ‘Launchpad‘ tree (with ~8k items).
bzr-2.3.1 bzr-2.4 action 5.3s 5.2s bzr co --lightweight 0.9s 0.3s bzr revert 1.4s 0.4s bzr pull 3.9s 3.7s bzr uncommit (with merge) 0.9s 0.3s bzr uncommit (without merge)
Anyway, I’m quite happy about how much better bzr-2.4 will be in large trees.
May 5, 2011
Iwata is working on a new GUI for interactively shelving and unshelving changes, which is a way in Bazaar for temporarily setting aside some changes from your working tree. (At the moment there is an interactive text interface for shelving.)
May 2, 2011
Thanks to our contributors we have a plenty of new exciting features and improvements in upcoming 0.21 release. I would like to give you a short tour over some of new features.
qdiff dialog now has new look and feel based on the nice toolbar (similar toolbar Gary has added for qannotate in past releases):
As you can see qdiff now has Find text feature, you can invoke this mode clicking by “Find” button on toolbar (or using Ctrl+F hotkey):
qdiff options are in View Options submenu on toolbar, you’ll find there “Complete” knob (to see full-text for all changed files), encoding selectors (for every pane) and even new knob: Ignore whitespace changes.
You can also force option “Ignore whitespace changes” from command-line with new qdiff command-line option –ignore-whitespace (short form -w).
Also, now you can control the size of tab characters in qdiff, qannotate and qcat windows via configurable option (tab_width). You can set this option either in bazaar.conf or individually for branches in their branch.conf. Global option can be edited via qconfig dialog:
Other improvements in upcoming release also include changes to qinfo dialog (it now shows the same information as CLI bzr info), qcommit now remembers “Show non-versioned” knob state, you can open files in their native applications while browsing treeless branches (or branches on remote servers) and other changes (see NEWS.txt for the full list of improvements and bugfixes).
Many thanks to all people who help us make new QBzr release awesome, especially: A. S. Budden, Dorin Scutarașu, Glen Mailer and many others, see NEWS.txt for details.
April 13, 2011
Hugues Delorme has added support for Bazaar into Qt Creator 2.2 beta.
April 12, 2011
Bazaar nightly Ubuntu packages are available from ppa:bzr/daily. The old ppa, ppa:bzr-nightly-ppa/ppa was out of date and has just been deleted.
To get nightly bzr builds on Ubuntu, say:
sudo add-apt-repository ppa:bzr/daily
sudo apt-get update
sudo apt-get install bzr
and as of today you should get a 2.4 beta snapshot.
January 31, 2011
A new plugin bzr-wincrypt stores passwords encrypted in the Windows CryptoAPI keyring.