Les Mikesell <lesmikesell_at_gmail.com> wrote on 08/14/2013 02:49:38 PM:
> On Wed, Aug 14, 2013 at 4:23 PM, <dlellis_at_rockwellcollins.com> wrote:
> >
> > Now, in our case, we do stuff for aircraft,... wouldn't it be nice to
> > maintain living pedigrees with all similar models of aircraft? Fix an
issue
> > in one place and advertise it to all the others. File externals give
you
> > 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 you'dlike
(its
> > 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 can
> change independently? I guess that's about the opposite of the way I
> think of version control, so I can't suggest anything else. Are
> 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,
Dan
Received on 2013-08-15 00:15:33 CEST