[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Sparse Directories vs Externals

From: Les Mikesell <lesmikesell_at_gmail.com>
Date: Tue, 24 Feb 2009 08:10:21 -0600

John Waycott wrote:
> You've answered my concern about separate release cycles. Each project
> should be able to pull the version of the engine that it needs. If the
> projects are released separately, they will likely use different
> revisions of the Engine.
> I do have an issue with using the -r as the only reference to an
> external library; It complicates the refactoring of the repositories
> as the projects grow. If you ever decide to separate the engine into
> its own repository, revision numbers could end up changing after a few
> svnadmin dump/loads.

Renumbering revisions affects all of your bug-tracking history and any
other references you might have to when changes were done, so it is a
drastic step any way you look at it. Better to let filtering operations
leave empty revs if there is any reason to preserve your prior references.

> We have a huge source and documentation base - about 2 million unique
> files, over 1000 projects and still support 15-year old software - so
> that gives you an idea where I'm coming from. With code bases that big
> you start to pull your hair out trying to keep it organized!

You probably want tags so you can give them a more descriptive name, but
a revision number is just as specific.

> See above :-) I made the assumption that the externals and projects
> were all one project.

Generally the reason for separating out externals would be that the
components at least potentially have different uses, and perhaps
different developers, and different release cycles. If you don't
separate them you may have an awkward situation where the trunk versions
of an application and its libraries don't work together and you have to
maintain branches or back-rev parts of a workspace to deal with it.

>> The process of creating a tag without externals is obviously more
>> convenient, since you do not first have to edit the externals and
>> then create the branch (tag). Without externals it's a 1 step
>> process, and I think that's really important to him. For what its
>> worth, I could create a python script to create tags for us if he
>> wants it to be a one step process, but maybe there's a better way.
> I don't see adding a revision to an externals tag as being any more
> error prone than editing some code. That seems like an excuse to
> me :-) I agree creating scripts is really the way to go. SVN is not an
> SCM system, it is just version control and you have to develop your
> processes around it.

The problem is that during some phases of development you may want to
let the externals float with the trunk of the components if they are
both changing to accommodate each other - but, if you are doing frequent
tags and test builds you'll want these to be repeatable so you have to
keep changing the trunk to pin the external reference before making the
tag and undoing it for more development work. Is there some automated
way to make sure the tag copies are pinned without needing the extra
changes in the trunk?

   Les Mikesell
To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_subversion.tigris.org].
Received on 2009-02-24 15:11:24 CET

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.