Bazaar

Bazaar

 




Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Differences between revisions 2 and 12 (spanning 10 versions)
Revision 2 as of 2006-03-07 04:00:20
Size: 1956
Comment:
Revision 12 as of 2009-05-14 18:27:01
Size: 2585
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Big Note =
This is very new in Bazaar-NG. Expect some heavy bumps in order to play with this feature. In particular:

Robert Collins:
{{{
Users using the 0.8pre 'checkout' feature, or 'repository' features may need to adjust their .bzr dirs to have a lockdir of the type just introduced. I don't have instructions for that, but I will as soon as I do the dogfood upgrade myself.
}}}
Martin Pool:
{{{
It should be enough to replace the file called "lock" with an empty
directory of the same name. Just to be clear: this doesn't affect
old-format branches created with bzr 0.8.
}}}
Robert Collins:
{{{
Yup that works, except it seems that only the .bzr/repository lock has been updated - .bzr/branch/lock still needs to be a standard file.
}}}
Line 21: Line 4:

Bound branches in bzr take the place of remote 'checkouts' in systems like CVS or SVN and we refer to them as 'checkouts'. (bzr also supports "lightweight checkouts", which are like local checkouts, and aren't branches at all.)
Line 29: Line 14:
 * cd into the branch that you want to bind to the remote branch
 * run the bzr bind LOCATION-OF-OTHER-BRANCH command
== Example of how to setup bound branches ==
 * run `bzr checkout LOCATION-OF-REMOTE-BRANCH` to get a checkout of the remote branch.

== Examples of how to set up bound branches ==

To checkout a branch over SFTP.
{{{
 $ bzr checkout sftp://me@here.com//home/me/somebranch
}}}

To turn a regular branch into a checkout:
Line 34: Line 26:
 $ bzr push sftp://me@here.com//home/me/newbranch
$ bzr bind sftp://me@here.com//home/me/newbranch/
 $ bzr bind sftp://me@here.com//home/me/somebranch/
Line 37: Line 28:
From now on, commits to the local branch will go to the other branch first.
= How to make a branch unbound =
One can unbind a branch by changing into the working tree of a bound branch and running:

= Committing when the location you are bound to is offline =

Several commands such as 'commit' accept a `--local` parameter which will cause them to perform a local operation, *temporarily* unbinding the branch for the duration of that one command.

{{{
 $ bzr commit --local -m 'do something offline'
}}}

= Updating the remote branch after --local commits =

When a checkout is rebound to the master branch, all local revisions will be pushed. If both branches have diverged, you need to merge and commit the remote changes first.

= If you want the branch to stop being bound at all =

One can unbind a branch by changing into the directory of a bound branch and running:
Line 43: Line 47:


= Questions & answers =

== mutually bound branches ==

Is it possible/recommanded to have mutually bound branches? For example, working on two different machines, and keeping the branches synchronized.

madduck:
{{{
I would love to see this feature. It would get me one step further to the endeavour of synchronising $HOME.}}}

RobertCollins - no, it is not possible, and not planned. We decided that it was too complex to clearly document to the user to have chains of bound branches, let alone the coding headaches in getting it robust and right in terms of transactionality etc.

Description

Bound branches are a way to make sure that both a local branch and a remote branch have the same revisions. This is particularly useful if one likes to work on two machines or if one works on a laptop and then pushes a branch into a public place.

Bound branches in bzr take the place of remote 'checkouts' in systems like CVS or SVN and we refer to them as 'checkouts'. (bzr also supports "lightweight checkouts", which are like local checkouts, and aren't branches at all.)

Bound branches can be stated in simpler terms. When a branch is bound to another branch, the commits for the branch will be applied to the other branch first.

How do I use bound branches?

General description of setting up bound branches

The general workflow looks something like this:

  • Push a branch to somewhere else, perhaps your ISP.
  • Make sure the pushed branch is up to date
  • run bzr checkout LOCATION-OF-REMOTE-BRANCH to get a checkout of the remote branch.

Examples of how to set up bound branches

To checkout a branch over SFTP.

 $ bzr checkout sftp://me@here.com//home/me/somebranch

To turn a regular branch into a checkout:

 $ cd somebranch/
 $ bzr bind sftp://me@here.com//home/me/somebranch/

Committing when the location you are bound to is offline

Several commands such as 'commit' accept a --local parameter which will cause them to perform a local operation, *temporarily* unbinding the branch for the duration of that one command.

 $ bzr commit --local -m 'do something offline'

Updating the remote branch after --local commits

When a checkout is rebound to the master branch, all local revisions will be pushed. If both branches have diverged, you need to merge and commit the remote changes first.

If you want the branch to stop being bound at all

One can unbind a branch by changing into the directory of a bound branch and running:

$ bzr unbind

Questions & answers

mutually bound branches

Is it possible/recommanded to have mutually bound branches? For example, working on two different machines, and keeping the branches synchronized.

madduck:

I would love to see this feature. It would get me one step further to the endeavour of synchronising $HOME.

RobertCollins - no, it is not possible, and not planned. We decided that it was too complex to clearly document to the user to have chains of bound branches, let alone the coding headaches in getting it robust and right in terms of transactionality etc.