> >
> > 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.
> 
> Then what makes the collection of pegged externals easier to manage
> than explicitly copying specific revisions into the top level where
> the reference makes it appear and subsequently merging changes or
> deleting files and copying in the updated version.  Those operations
> are relatively efficient with svn and copies carry along the revision
> history.
> 
> I don't follow how each project 'sees' that fixes have been made - you
> shouldn't see that through a pegged external.

We have a tool that mimics explorer.  It queries the repo for the latest 
revision on each file external (yes a bit talky with the server).  If they 
are not identical, it displays revision x of y.  It also displays the 
pedigree (or "history"" in CMVC lingo).  You can select each file, and 
graphically decide to "fork" to a different pedigree/history, or peg to a 
different revision.

> > 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.
> 
> You'd get roughly the same effect with an 'svn cp' of a baseline - the
> equivalent of a branch or tag even if you name it something else.

I don't think this will do what we want.

> 
> > 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.
> 
> None of that would need to change regardless of whether you copy a
> revision into a different folder of reference it directly with an
> external.   As long as you aren't floating to the HEAD version you
> have to do something to bump the revisions - why not just copy it in
> the repo where remote revision checks will be fast?

Once you copy, you break the link.  If you were to make a change to the 
copy, no one else would then see it. 

You are correct, you could replicate all of this many different ways. When 
we did our study, externals (aside from the performance issue) was the 
best answer.

I wish I could give a quick tour of the process/tool.  It'd answer so many 
questions.

Thanks,
Dan

Reply via email to