?discover and lock branches

Maritza Mendez martitzam at gmail.com
Sat Apr 11 17:31:51 BST 2009


Thank you Aaron.  I made notes below. - M

On Sat, Apr 11, 2009 at 6:07 AM, Aaron Bentley <aaron at aaronbentley.com>wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Maritza Mendez wrote:
> > It looks like I can use b.b.BzrDir:find_branches or
> > b.r.Repository:find_branches to recursively find all the repos under
> > some base.   But some branches are standalone and others are shared.
>
> But don't you want to lock all of them?
>

Usually, yes.  Sometimes it would be good to selectively back up one branch
or repo instead of all.  If I want to backup a shared repo and I have
already locked all of its branches (children) then it seems like asking for
a lock on the shared repo (parent) might be an error.  I have just started
looking at the code and I'm trying to understand the semantics and use it
right.

If not, the code of Repository.find_branches will tell you how to
> distinguish them.  The ``using`` argument determines whether all
> branches are returned or just the ones that use the repository.
>

> > Some might be nested,
>
> That should have no bearing at all.


Good.


> > Can someone please point me to the right section
> > of the API to evaluate the branches I get back to  see what kind they are
> > and so what order of locking I should use?  Am I even going in a good
> > direction?  Maybe there is already a tool for this and I am wasting time!
>
> We only take exclusive locks for write operations.  There's no problem
> with one client reading a branch while the other writes to it.  Since
> backing up is a read operation, I think you're going about this the
> wrong way.
>

  I begin to understand.


> If you're doing filesystem operations, all you need to do is make sure
> you process repositories after branches.  Shared repositories will be in
> parent directories.  Unshared repositories have a .bzr/repository
> directory, while branches have a .bzr/branch directory, so repositories
> sort alphabetically lower than branches.
>

Let me make sure I understand.
The .bzr directory of a standalone barnch has 'branch' and 'repository'
directories.
The .bzr directory of a shared repo has a 'repository' directory (and no
'branch' directory).
The .bzr directory of a branch in a shared repo has a 'branch' directory
(bit no 'repository' directory).
Every .bzr directory has a 'branch-lock' directory.
I just tried it, and that seems right.

So if I want backup just a single branch (shared or standalone) all I need
to do is lock it and copy it.
If I want to back up a shared repo, I need to lock all of its "children"
branches first, then lock itself and then copy them all.

Did I get that right?

I really appreciate your help!

-M
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/bazaar/attachments/20090411/822391cd/attachment.htm 


More information about the bazaar mailing list