Update: Re: bzr 0.6 commit problem: parent_id {blah} not in inventory
John Whitley
whitley at acm.org
Fri Nov 4 01:52:38 GMT 2005
On Nov 3, 2005, at 4:27 PM, Michael Ellerman wrote:
> For the record, I'm not suggesting that partial commits shouldn't
> be allowed,
> I just think they shouldn't be the default. You can emulate the
> commit-in-this-sub-tree behaviour with "bzr commit ." which is
> pretty easy.
> Although as John (I think) said, there might be some bugs lurking
> in there.
I'll suggest that the real problem is that Andrew (and others) have
come across a "submarine use case". That use case is one of several
semi-dependent modules or projects living within the same source
control tree. This was exactly the model that a *very* large
Perforce repository that I once worked with used. Logically, the
repository was broken up into many projects (deliniated by a hiearchy
which occupied the first few levels of the repository path), which
may or may not have had dependency relationships between them. But
the revision numbers were global across all developers for all of
these sub-projects. In practice, developers would check out one or
more packages into a local workspace for a particular development
effort. Related changes could span these projects and be checked in
as an atomic commit. For example, imagine related changes to:
1) a networked application client library
2) networked application server code
3) a shared library that needs extension work for the project
As a historical matter, this codebase had started off as a single
monolithic unit which had grown beyond the bounds of reason and
eventually been refactored into independent pieces over the years.
Nevertheless, some dependencies (due to use of various shared
framework code and/or client libraries) remained. At the time I was
there, the revision numbers had no global dependency meaning anymore
outside of a single project -- i.e. the model was the same as
multiple independent bzr branches.
An entirely separate package management layer was built on top of all
this to keep track of version dependencies between released versions
of various teams' packages. Referring to the example I provided
above, this package versioning layer prevented changes in shared
libraries or client libraries from "automatically" propagating to
other project codebases. A team had to explicitly request a version
update of their package dependencies, then build and test their app
with the updates before a release.
Hope all that wasn't too far afield. ;-) I thought telling that story
might help spark good ideas for bzr's present and future.
-- John
More information about the bazaar
mailing list