<p>As implemented today, 'bzr branches' is evaluated 'client side' by reading the filesystem and walking over it. It would certainly be possible to hangs it into an RPC call, it was just never done. We could certainly give you pointers on how to do it, and it could even he implemented in a plugin if you needed support on older versions of bzr.</p>
<p>John<br>
=:-></p>
<div class="gmail_quote">On Jul 24, 2012 6:28 PM, "Bosco Rama" <<a href="mailto:bzr@boscorama.com">bzr@boscorama.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
We have a relatively simple centralized main-line that consists<br>
of a single shared-repo of about 500MB. The structure resembles<br>
the following:<br>
repo (bzr init-repo --no-trees)<br>
+- proj1 (bzr init --no-tree --append-revisions-only)<br>
+- proj2 (bzr init --no-tree --append-revisions-only)<br>
+- proj3 (bzr init --no-tree --append-revisions-only)<br>
+- proj4 (bzr init --no-tree --append-revisions-only)<br>
+- tools<br>
+- tool1 (bzr init --no-tree --append-revisions-only)<br>
+- tool2 (bzr init --no-tree --append-revisions-only)<br>
+- tool3 (bzr init --no-tree --append-revisions-only)<br>
+- tool4 (bzr init --no-tree --append-revisions-only)<br>
<br>
In addition to our devs we have a 'backup' process that is implemented<br>
as a user (don't ask) that needs to be able to find new branches and<br>
add them to its local repo.<br>
<br>
The first thing we noticed is that 'bzr branches repo' doesn't return<br>
the top-level branches as we expected. Maybe we misunderstand what the<br>
command is meant to do.<br>
<br>
We've also come up against a performance issue with the 'branches' command<br>
when run over SSH remotely. We tested within the dir, ssh to localhost<br>
and from a remote site. Here are the timings (averaged over 3 runnings):<br>
<br>
Within repo dir:<br>
$ time bzr branches -R repo >/dev/null<br>
real 0m1.077s<br>
user 0m0.960s<br>
sys 0m0.060s<br>
<br>
SSH on same host/LAN:<br>
$ time bzr branches -R bzr+ssh://bzr@localhost/repo >/dev/null<br>
real 0m3.806s<br>
user 0m1.380s<br>
sys 0m0.050s<br>
<br>
SSH from remote host (avg ping ~40ms):<br>
$ time bzr branches -R bzr+ssh://bzr@remote-svr/repo >/dev/null<br>
real 0m53.457s<br>
user 0m0.670s<br>
sys 0m0.210s<br>
<br>
It seems like a rather large factor increase for what we thought would<br>
be a relatively low consumption operation. We can only assume that the<br>
command is actually transferring structural data of some sort instead of<br>
having the server-side perform the operation and return the results. It<br>
also seems to adversely affect qbzr. Is there anything we can do on our<br>
end to speed this operation up?<br>
<br>
Any help understanding these would be greatly appreciated.<br>
<br>
(BTW, this is using BZR 2.5.1 on Lucid).<br>
<br>
TIA.<br>
<br>
Bosco.<br>
<br>
</blockquote></div>