You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Tom Malia <to...@ttdsinc.com> on 2007/03/09 13:45:24 UTC

Externals with a different directory name?

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?

 

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

 

 


Re: Externals with a different directory name?

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Mar 9, 2007, at 09:12, Tom Malia wrote:

> How would I reference the necessary "tag"/"version" of the 3rd  
> party code
> without using subdirectories in the URL?
>
> My 3rd party vendor repository looks like:
>
>   VENDOR_REPO_ROOT
>   |_Solomon
>     |_versions
>        |_V55
>        |  |_{Version 55 source files}
>        |_V60
>        |  |_{Version 60 source files}
>
>
> My internal/common source code repository looks like:
>   MY_SOLOMON_PROJ_REPO_ROOT
>   |_Project_Nbr1
>     |_{Common Code and Project file}
>
>
> So my externals property to bring in the desired version of the  
> third party
> code, assume would have to use a URL like:
> Svn:localhost/VENDOR_REPO_ROOT/Solomon/Version/V55
>
> Because what I want to try to do is check out the content of that V55
> subdirectory in the repository to a Directory named "Solomon" in my  
> working
> directory.... so I have to include the "subdirectories" in my URL  
> don't I?

The syntax for svn:externals is:

<localname> <remoteurl>

So you could set the svn:externals property of the appropriate  
directory to the following value:

Solomon svn://localhost/VENDOR_REPO_ROOT/Solomon/Version/V55

This will check out the code in svn://localhost/VENDOR_REPO_ROOT/ 
Solomon/Version/V55 into a directory in your project called Solomon,  
which it will create for you.


-- 

To reply to the mailing list, please use your mailer's Reply To All  
function


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

RE: Externals with a different directory name?

Posted by Tom Malia <to...@ttdsinc.com>.
Paul,

How would I reference the necessary "tag"/"version" of the 3rd party code
without using subdirectories in the URL?

My 3rd party vendor repository looks like:

  VENDOR_REPO_ROOT
  |_Solomon
    |_versions
       |_V55
       |  |_{Version 55 source files}
       |_V60
       |  |_{Version 60 source files}


My internal/common source code repository looks like:
  MY_SOLOMON_PROJ_REPO_ROOT
  |_Project_Nbr1
    |_{Common Code and Project file}


So my externals property to bring in the desired version of the third party
code, assume would have to use a URL like:
Svn:localhost/VENDOR_REPO_ROOT/Solomon/Version/V55

Because what I want to try to do is check out the content of that V55
subdirectory in the repository to a Directory named "Solomon" in my working
directory.... so I have to include the "subdirectories" in my URL don't I?


-----Original Message-----
From: Paul [mailto:alabamapaul@gmail.com] 
Sent: Friday, March 09, 2007 10:05 AM
To: Tom Malia
Cc: users@subversion.tigris.org
Subject: Re: Externals with a different directory name?

Tom,
What you are describing *should* work.

The only reason the svn:externals would create a sub-directory is if
the URL provided has a sub-directory.

Have you verified the structure of your vendor repository matches what
you're providing here ?

Regards,
Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Externals with a different directory name?

Posted by Paul <al...@gmail.com>.
Tom,
What you are describing *should* work.

The only reason the svn:externals would create a sub-directory is if
the URL provided has a sub-directory.

Have you verified the structure of your vendor repository matches what
you're providing here ?

Regards,
Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

RE: Externals with a different directory name?

Posted by Tom Malia <to...@ttdsinc.com>.
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

Re: Externals with a different directory name?

Posted by Duncan Murdoch <mu...@stats.uwo.ca>.
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