Describe your workflow
Spencer Chastain
sechastain at gmail.com
Thu Jun 26 03:19:15 BST 2008
We recently moved my development team (~10-14 core developers, many internal
customer user/developers, distributed across multiple sites) to bzr.
We have a shared repository created per site, with a primary site mirroring
our mainline integration branch to other sites.
Right now we use a cron job to push+update nightly for mirroring. It'd be
nice if there was a single command for this task that the mainline
integration engineer can use at his option.
Developers are encouraged to branch per feature within their site's shared
repo - some opt to work on their personal machines. The only restrictions
we make here is a branch naming convention - mostly to ease sorting out what
branches are stable for customer use and/or released and which branches are
feature development.
Our project regularly requires that you be testing on multiple machines at
once - and not all test machines have access to the same filesystems. So we
encourage our developers to make use of checkout in this case, though I'm
wondering if a pull/up-load system may work better. There does seem to be
some level of unneeded overhead when you want to keep 2 branches synched.
Trying to educate my developers on what they're doing and why they're doing
it seems ... overburdensome. It's an easy concept, it should be an easy
use-case. Maybe I'm missing something.
Occasionally developers get pulled in to lend a hand with another
developer's feature/bug. In these cases, the primary/original developer
creates a treeless branch and everyone will work on personal a checkout
against that. Once the primary developer's hurdle has been jumped, the
check-out is closed to the other developers (i.e. permission changes).
We're very touchy about how many changes go into a patch and who's
responsible, and checkouts seem to easily grow feature and change wise.
When a feature is complete and/or ready for testing, a patch is created and
placed in a change control system. Integration engineers merge the patches
into the mainline, test the patch for readiness, and commit/release or
revert/reject as appropriate. Developers are expected to merge against the
mainline integration branch as appropriate - at a minimum, they must merge
prior to submitting a patch. More regularly is encouraged. Developers can
merge other feature changes in early at their discretion.
Our project tree looks like this:
build-name/
+ ada/
+ cpp/
+ java/
+ makefile
+ MakeSupport/
+ mdbXmlRepo/
+ platforms/
+ scripts/
+ xml/
The build-name is either a build id or a development feature name.
Most of the time, people don't need the entire tree, but we decided it was
more important to track changes to the project as a whole than it was to try
to track the different parts of the project. The inability to do partial
checkouts is cumbersome. For some sister projects, this inability is a deal
breaker.
My workflow pretty much encompasses all of the above. Depending on what I'm
doing - development, review, assistance - and who I'm working with tends to
keep things not exactly consistent. But as a general rule, I always work
from my main machine, keep a pulled copy of integration local, branch
locally per feature, push then checkout to a branch on the shared
repository, bind to the remote branch, and manage between local and remote
as necessary. Complicated? Yes. Does Bazaar make things easier?
Absolutely. I just cannot begin to tell you the nightmare this was before
Bazaar. Bazaar gives me confidence and speed in my development and revision
control that I simply did not have prior to this.
To be honest, I like the workflow (or somewhat lack thereof) a lot - because
it's something that I can continually adapt to my immediate needs. But I'll
be the first to admit that it is a bit ... complicated. I do think it could
be made simpler - specifically, keeping two branches in synch. Making this
simpler would make the lives of some of my developers simpler as well.
So - that's the workflow of my team and myself. I hope it provides some
useful information.
--Spencer
On Wed, Jun 25, 2008 at 8:50 PM, Martin Albisetti <argentina at gmail.com>
wrote:
> On Wed, Jun 25, 2008 at 9:32 PM, Colin D Bennett <colin at gibibit.com>
> wrote:
> > I have attached my loggerhead.conf. Perhaps I have things configured
> > wrong. My repository is owned by the 'bzr' user, who loggerhead is
> > running as.
>
> Could you check if "/bzr/.bzr/loggerhead-files" exists, and if it has
> a "filechanges.sql" file in it?
>
> If it doesn't, can you make sure you have python-sqlite installed, and
> maybe add the cache path to each individual branch on loggerhead.conf,
> in addition to the project?
>
> It should work perfectly fine with that size branch and hardware, so
> we're clearly missing something (probably the cache is not being
> generated).
>
>
>
> Cheers,
>
>
> Martin
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/bazaar/attachments/20080625/7921f67b/attachment.htm
More information about the bazaar
mailing list