Thanks for the suggestion. I considered this approach. However, my issue
is I'm trying to "sell" the idea of using Subversion to my own internal
development staff as well as some colleagues/competitors and most of these
folks REALLY don't want to add any unnecessary complexity to their source
code management. So, my logic for creating the "virtual project" that
consists of pretty much nothing but externals is that, If I set things up
correctly on the back end then the only thing the actual developers will
need to learn how to do is a single project check out and a single project
update/diff and commit. The procedures for all of these operations "should"
be really simple if I use the "virtual project" idea. Also, if I setup sets
of the "virtual projects" on the back end for each of our projects (so when
we start a new project, I would always setup a separate virtual project for
that project for each of the different versions of Solomon we need to
support) then my developers should find it pretty easy to check out the
correct version of the project they need to work on and wont have to do
something like: "Ok, I need to work on Project_Nbr1 for Solomon version 55..
so first I check out Project_Nbr1.... then I have to build a Solomon
subfolder... then I have to go to that folder and checkout the "correct"
version of the Solomon source files...." Instead, they would just check out
the project named "Project_Nbr1_Solomon_Ver55" and the externals would
automatically check out the correct stuff for them to all the correct
locations.
-----Original Message-----
From: Duncan Murdoch [mailto:murdoch@stats.uwo.ca]
Sent: Friday, March 09, 2007 8:58 AM
To: Tom Malia
Cc: users@subversion.tigris.org
Subject: Re: Externals with a different directory name?
On 3/9/2007 8:45 AM, Tom Malia wrote:
> Please accuse the newbie questions (but I'm afraid there may be a bunch
more
> coming.sorry)
>
>
>
> Is it possible to "map" the contents of a directory in my repository to a
> different directory name in my working folder via externals?
I don't know the answer to that question, but I'd suggest a simpler
approach. Keep your first two repositories as described below (or even
make them different parts of the same repository), but don't bother with
externals. Just check out your source code into a working copy
directory named something like Project_Nbr1_SolomonVer55, and check out
the appropriate branch of the Solomon source into a subdirectory named
Solomon. I'd also suggest making notes or even a script to do the
checkouts properly, since you're not using Subversion to set up the
structure properly.
Subversion won't mind having one working copy as a subdirectory of
another. When you ask the status of the first, it will ignore the
nested one, treating it as an unversioned item.
Duncan Murdoch
>
>
>
> Here's my scenario:
>
>
>
> Given:
>
> A) I've got VB6 projects that use source code files from a 3rd party
vendor
> product.
>
> B) I need to create different version of my programs that support
different
> versions of the 3rd party product.
>
> C) VB6 using a "project" file to maintain the set of source files needed
to
> create an EXE and that file uses relative file paths to locate the source
> files.
>
> D) The source code for my projects are exactly the same for all supported
> version of the 3rd party product except that the correct version of the
3rd
> party files (which are all named the same in each version) need to be
> compiled in.
>
>
>
> My Plan:
>
> I was hoping to create:
>
> 1) A repository for the 3rd party product source files with tags for each
> version. For example (note, the 3rd party product is called "Solomon"):
>
> VENDOR_REPO_ROOT
>
> |_Solomon
>
> |_versions
>
> |_V55
>
> | |_{Version 55 source files}
>
> |_V60
>
> | |_{Version 60 source files}
>
> |_V65
>
> | |_{Version 65 source files}
>
>
>
> 2) A repository of my source code that is common across all version of the
> 3rd party product. For example:
>
> Note that in this code, I would include the VB "Project" file which is
where
> the relatively pathed list of source files is located. All "Solomon"
source
> code would be assumed to be located in a subdirectory of the project
> directory named "Solomon".
>
> MY_SOLOMON_PROJ_REPO_ROOT
>
> |_Project_Nbr1
>
> |_{Common Code and Project file}
>
>
>
> 3) A Version specific repository made up of all externals. For example:
>
> MY_SOLOMON_PROJECT_VERSPEC_ROOT
>
> |_Project_Nbr1_SolomonVer55
>
> | |_{svn:externals MyProject_Nbr1
> svn://localhost/MY_SOLOMON_PROJ_REPO_ROOT/Project_Nbr1}
>
> | |_ {svn:externals Solomon
> svn://localhost/VENDOR_REPO_ROOT/Solomon/Version/V55}
>
> |_Project_Nbr1_SolomonVer60
>
> | |_{svn:externals MyProject_Nbr1
> svn://localhost/MY_SOLOMON_PROJ_REPO_ROOT/Project_Nbr1}
>
> | |_ {svn:externals Solomon
> svn://localhost/VENDOR_REPO_ROOT/Solomon/Version/V60}
>
> |_ etc. Etc.
>
>
>
> When I "check out" a version specific project I want to end up with a
> directory structure that looks like:
>
>
>
> |_Project_Nbr1
>
> |_ {My source code files}
>
> |_Solomon
>
> |_ {The source code files for the particular version of Solomon I need}
>
>
>
> My problem is, when I define my externals for the 3rd party files and I
> check them out, it always creates a directory with the name of the
directory
> it came from. So for example, what I end up with is:
>
> |_Project_Nbr1
>
> |_ {My source code files}
>
> |_Solomon
>
> |_V55
>
> |_ {The source code files for the particular version of Solomon I
> need}
>
>
>
>
>
> Isn't there some way that I can check out the files in a particular
> directory in the repository to a directory with a different name in my
> working folder? Or am I going to have to have my third party repository
> look something like this instead?
>
>
>
> VENDOR_REPO_ROOT
>
> |_Solomon
>
> |_versions
>
> |_V55
>
> | |_Solomon
>
> | |_{Version 55 source files}
>
> |_V60
>
> | |_Solomon
>
> | |_{Version 60 source files}
>
> |_V65
>
> | |_Solomon
>
> | _{Version 65 source files}
>
>
>
>
>
>
>
> And then create my "virtual" projects like this:
>
>
>
> MY_SOLOMON_PROJECT_VERSPEC_ROOT
>
> |_Project_Nbr1_SolomonVer55
>
> | |_{svn:externals MyProject_Nbr1
> svn://localhost/MY_SOLOMON_PROJ_REPO_ROOT/Project_Nbr1}
>
> | |_ {svn:externals Solomon
> svn://localhost/VENDOR_REPO_ROOT/Solomon/Version/V55/Solomon}
>
> |_Project_Nbr1_SolomonVer60
>
> | |_{svn:externals MyProject_Nbr1
> svn://localhost/MY_SOLOMON_PROJ_REPO_ROOT/Project_Nbr1}
>
> | |_ {svn:externals Solomon
> svn://localhost/VENDOR_REPO_ROOT/Solomon/Version/V60/Solomon}
>
> |_ etc. Etc.
>
>
>
> Thanks in advance,
>
> Tom Malia
>
>
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Fri Mar 9 15:07:21 2007