Shared Branches using Bazaar and Launchpad

Earlier, David Allouche described how to host Bazaar branches on Launchpad. At the end, he alluded to the ability to create branches that can be committed to by anyone on a team. I'll describe how this works here. Launchpad Teams Launchpad allows people to organise themseleves into teams. Most of the things people can do in Launchpad can also be done by teams, including owning branches. You can create a new team at the following page: https://launchpad.net/people/+newteam There are three different membership policies you can choose from: Open: anyone can join. Choosing this sort of team effectively gives everyone write access to branches owned by the team. Moderated: new memberships must be approved by one of the administrators (this is the default policy). This makes it easy for people to request commit access to the branch while still requiring approval from a team administrator.. Restricted: new members can only be added by the team administrators. This is appropriate if new members shouldn't be able to propose themselves normally. Once the team has been created, members of the team can create the branches. Uploading a Team Owned Branch Now that you are a member of a team, you can upload branches to that team's directory on bazaar.launchpad.net. This is done in the same way as uploading personal branches described in David's article: cd branchdir bzr push --create-prefix sftp://bazaar.launchpad.net/~teamname/product/branchname When the command completes, the team owned branch will have been created. Now you can treat this branch like a personal branch, but once someone else pushes a commit to the branch, "bzr push" will tell you that the branch has diverged, and not let you push your changes until you merge them to your branch. An alternative model is to use checkouts, which provide a workflow closer to CVS and Subversion without losing Bazaar's ability to work while disconnected. Bazaar Checkouts A Bazaar checkout is a local working copy bound to a remote branch such that changes are committed to the remote location. The remote branch data is also cached locally to speed up local operations and allow you to work while disconnected from the network. A checkout of the previously created team branch can be created with the following command: bzr checkout sftp://bazaar.launchpad.net/~teamname/product/branchname team-branch cd team-branch Alternatively if you still have the local branch used to create the team branch, it can be converted to a checkout with the "bzr bind" command: cd branchdir bzr bind sftp://bazaar.launchpad.net/~teamname/product/branchname You can then make commits to the checkout as you would with any other branch, provided the checkout is up to date with the remote branch. If another team member has committed to the branch in the mean time though, you will be prompted to update your checkout to the head of the latest version of the remote branch. If this happens, the checkout can be updated by issuing the "bzr update" command. You can then retry the commit, after fixing any conflicts that are reported. Disconnected Operation with Checkouts If you are disconnected…

Back from London

I got back from London on Sunday from the Launchpad infrastructure sprint. Because of the terrorism scare, Heathrow was chaos (more so than usual). The bus service from the tube station to Terminal 4 ended up in a traffic jam. There were a lot of people milling around outside the terminal who were not being allowed in because they'd arrived too early (it was around 9am, and some of them had afternoon flights). It took a while to find the end of the checkin queue because another queue (passport control) had extended in front of it. I got to the end of this other queue and was told that I needed to go to the other end of the terminal section to queue up. After an hour or so, I got to the head of the queue and was able to check in my luggage, saying good bye to my laptop, phone and other stuff I'd normally be carrying on board. I'd padded my bag with a few pillows and got the checkin lady to put "fragile" stickers over the bag, which was about as good as I could hope for. Passengers queuing for checkin My clear plastic bag of hand luggage Now it was time to queue for passport control. This queue had now extended out the door of the terminal and round the corner. The queue moved fairly slowly and it became apparent why once I got through: the security screening line started on the other side of the door and there wasn't much room for new people to queue. By the time I got to the security screening, it was almost midday. The screening involved X-raying of my clear plastic bag of hand luggage, belt and shoes. After walking through the metal detector, I got a pat down. At this point, they were confiscating dangerous contraband that people were trying to smuggle onto the plane such as glasses cases. This left only about five minutes before the flight's boarding was scheduled to close. Before boarding, they were checking people's hand luggage to make sure passengers had receipts for any magazines or books from the airport bookshop, confiscating the items if the receipt couldn't be found. The actual flight ended up leaving about one and a half hours late after waiting for everyone to arrive (they ended up unpacking about 5 people's luggage). I was resigned to the fact that I'd have to wait around Singapore airport for the next flight, since there was only one hour between landing and my connecting flight. Thankfully, Qantas delayed the flight to Perth though, so it was straight from one gate to another. Things were pretty uneventful on getting back to Australia. There were no nasty surprises on opening my luggage — I assume the baggage handlers had been instructed to take special care of everyone's luggage due to the UK restrictions. Royal Victoria Dock, a few days before my flight. The towers at Canary Warf is visible on the horizon.