bzr and centralised repositories
Benno
benjl at cse.unsw.edu.au
Wed Apr 27 10:33:44 BST 2005
On Wed Apr 20, 2005 at 17:31:09 +1000, Martin Pool wrote:
>On Tue, 2005-04-19 at 14:45 -0500, Nicholas Nethercote wrote:
>> Hi,
>>
>> I'm following the Bazaar-NG development with interest. I've read through
>> the design documents, but I'm a bit unclear about how it would support
>> centralised repositories (I have no experience with decentralised VCS).
>> Basically I'm interested in knowing how I could use Bazaar-NG for the
>> projects I work on now, which is entirely selfish, but perhaps what
>> follows might also provide a useful use-case for the Bazaar-NG developers.
>>
>> The main project I work on is Valgrind. We just switched from CVS to
>> Subversion, which wasn't a very big change. We have a centralised
>> repository, of course. There are about 7 developers who have commit
>> access, 3-4 of whom do most of the development. Most development is done
>> on the HEAD. We only use branches for maintaining stable releases, and
>> only bug fixes go into those branches. (And so such bug fixes have to get
>> merged into both the stable branch and the HEAD, which is a chore.) We
>> can get away with this because there are few enough developers. One
>> consequence is that we have stable releases and development releases, and
>> the development releases often get way ahead of the stable releases
>> (because the development pace is quite fast and so large architectural
>> changes still occur quite often), which is not ideal.
>>
>> So that's how we work as a group. My personal way of working with SVN is
>> that I usually have several versions of the HEAD checked out into several
>> workspaces, which I call head1, head2, head3, etc. I have multiple
>> workspaces because I often work on more than one change at a time. One
>> nice thing is that I can just use "svn update" to keep these workspaces
>> up-to-date with changes that are committed into the head. This way I can
>> run the regression tests just before committing and be fairly confident
>> that my change hasn't broken anything. An important thing is that when I
>> run the regression tests in any of these directories, I'm testing the HEAD
>> plus a single changeset. I like doing that before committing, rather than
>> testing and committing multiple changesets at once (which I think
>> decentralised VCS systems might encourage, but I'm not sure).
>
>You can think of these checkouts as being a kind of degenerate private
>branch: you can work in parallel in each of them until your changes are
>ready to merge back to the rest of the world. But they're degenerate
>branches because you can't version your own changes until you're ready
>to publish them. In bzr you have the option of doing versioning in your
>own private branch before publishing your work.
Currently the way we are working with rsync, we actually get a copy of
your whole working, once bzr is totally up and running what would you see
as the `right way' for this to work? I would expect (coming from baz) to
be:
$ bzr branch bzr--mainline ./bzr-mywork
$ cd bzr-mywork
$ while <stuff_to_do>; do <stuff>; bzr commit; done
$ bzr send
And bzr-mywork could be a private bound branch, *or* could be independant.
FWIW, I prefer having my archive and working directory in different
places. (E.g: one is backed up, one isn't, one is deleted often, one
isn't, one I have only one copy of, one I sometimes have multiple
copies of, one is publicly accessible, one isn't). I guess other
people work differently though.
Benno
More information about the bazaar
mailing list