Les Mikesell <firstname.lastname@example.org> wrote on
08/14/2013 02:49:38 PM:
> On Wed, Aug 14, 2013 at 4:23 PM, <email@example.com>
> > Now, in our case, we do stuff for aircraft,... wouldn't it be
> > maintain living pedigrees with all similar models of aircraft?
Fix an issue
> > in one place and advertise it to all the others. File externals
> > this. It fits very well into the embedded safety critical
world in the
> > "don't touch that code unless you have to" and "let's
fix it once".
> > Refactoring code in this world just can't happen as often as
> > also a chance to reinject bugs).
> > Hope this helps!
> So the point is to intentionally pull the HEAD revision of a whole
> bunch of files together where each is located arbitrarily and
> change independently? I guess that's about the opposite of
the way I
> think of version control, so I can't suggest anything else.
> there enough different 'top level' collections or a fast enough change
> that you can't simply copy the right files into place instead of
> having external references there?
No HEAD revisions, all files are pegged.
For example, if everyone is linked to a common file
(foo.c, revision 20, project A "pedigree") and a bug is fixed,
each project will see that a fix has been made. Each project has
to make a decision: to remain on the current revision (no budget or schedule
to update), update to the latest (if they have budget and schedule), or
to "fork" (if they don't like the fix and have to implement a
new feature). This can happen any time, not necessarily when the
file is committed.
Each new project inherits the externals from their
baseline (they do not create new links or go out and search for reuse -
that'd be a pain!) So until a project decides to "fork"
a file, they see (but not automatically receive) all the changes made to
that file. Nothing happens to your project without explicit action.
Each file lives in a special area of the repository
that identifies its pedigree. Code your project writes automatically
becomes usable by any other project.
This is the same approach Rational CMVC takes.
Hope this helps,