You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Matteo Tontini <il...@yahoo.it> on 2008/01/28 16:14:36 UTC

Partial checkout

Hello,

I'm writing to ask suggestions about how to manage our particular project structure.
We're developing with C# and Visual Studio 2005 professional.
We have a big solution made up of several groups of projects.
Different developers work on different sets of projects, organized in solutions that realize partitions
of the global solution.
In practice we're using the 'Partitioned single solution' model as illustrated in the following article:

http://msdn2.microsoft.com/en-us/library/ms998208.aspx

The problem is that our versioning system is Subversion.
With Subversion we've not been able to checkout partially the content of the root folder of the
repository.
If I want to work with a partial solution and I want to checkout only the solution file I need, and the related projects' dirs I'm forced to checkout each separate project directory by itself.
Let's see an example:

reposName/trunk
        project1Dir/
        project2Dir/
        project3Dir/
        globalSolution.sln
        partitionedSolution1.sln
        partitionedSolution2.sln
        
If I want to work with partitionedSolution1.sln, that is made up of project1 and project2 I have two kind of problems:

- I have to checkout separately project1Dir and project2Dir in 2 subdirectories of my working copy.
  But in this way I cannot commit or update globally the content of my working copy, I'm supposed to commit and   
  update all the projects separately, instead.

- I cannot checkout single files. So, if I want the partitionedSolution1.sln file, the only thing I can do is to
  checkout only the top folder just to get all the solution files instead of only the one I need.


Using externals doesn't allow users to easily add projects to subversion in the correct root folder  
  
Do someone know how can I workaround this behaviors of Subversion or how can I change the structure of my Application, having in mind the need for a partitioned-solution-like structure?


Matteo




      ___________________________________ 
L'email della prossima generazione? Puoi averla con la nuova Yahoo! Mail: http://it.docs.yahoo.com/nowyoucan.html

Re: Partial checkout

Posted by Matteo Tontini <il...@yahoo.it>.
Thank you very much John,

this is a very good news!
The only problem is that I should propose to use it in a Production environment.
If the new release won't be available soon definitely I'll compile the source code.
I will try and test immediately.
Thank you very much


Matteo

John Mylius <my...@pasemi.com> ha scritto: Matteo,

I've built svn from the latest source code and the sparse directory 
support seems to be full functional and reliable.  That's one option if 
you can't wait for the official 1.5 release.

John

       
---------------------------------

---------------------------------
L'email della prossima generazione? Puoi averla con la nuova Yahoo! Mail

Re: Partial checkout

Posted by John Mylius <my...@pasemi.com>.
Matteo,

I've built svn from the latest source code and the sparse directory 
support seems to be full functional and reliable.  That's one option if 
you can't wait for the official 1.5 release.

John

Ryan Schmidt wrote:

> On Jan 29, 2008, at 05:57, Matteo Tontini wrote:
>
>> Ryan Schmidt ha scritto:
>>
>>> On Jan 28, 2008, at 10:14, Matteo Tontini wrote:
>>>
>>> > I'm writing to ask suggestions about how to manage our particular
>>> > project structure.
>>> > We're developing with C# and Visual Studio 2005 professional.
>>> > We have a big solution made up of several groups of projects.
>>> > Different developers work on different sets of projects, organized
>>> > in solutions that realize partitions
>>> > of the global solution.
>>> > In practice we're using the 'Partitioned single solution' model as
>>> > illustrated in the following article:
>>> >
>>> > http://msdn2.microsoft.com/en-us/library/ms998208.aspx
>>> >
>>> > The problem is that our versioning system is Subversion.
>>> > With Subversion we've not been able to checkout partially the
>>> > content of the root folder of the
>>> > repository.
>>> > If I want to work with a partial solution and I want to checkout
>>> > only the solution file I need, and the related projects' dirs I'm
>>> > forced to checkout each separate project directory by itself.
>>> > Let's see an example:
>>> >
>>> > reposName/trunk
>>> > project1Dir/
>>> > project2Dir/
>>> > project3Dir/
>>> > globalSolution.sln
>>> > partitionedSolution1.sln
>>> > partitionedSolution2.sln
>>> >
>>> > If I want to work with partitionedSolution1.sln, that is made up of
>>> > project1 and project2 I have two kind of problems:
>>> >
>>> > - I have to checkout separately project1Dir and project2Dir in 2
>>> > subdirectories of my working copy.
>>> > But in this way I cannot commit or update globally the content of
>>> > my working copy, I'm supposed to commit and
>>> > update all the projects separately, instead.
>>>
>>>
>>> This should work:
>>>
>>> svn checkout -N url://to/reposName/trunk
>>>
>>> (This will checkout all the files but none of the directories.)
>>>
>>> cd trunk
>>> svn up project1Dir project2Dir
>>>
>>> (This will bring in just those directories that you specify.)
>>>
>>> (It's a single working copy and you can do commits across all of it
>>> all at once, just like you want.)
>>>
>>>
>>> In Subversion 1.5, I believe there will be a different way to handle
>>> this (sparse directories feature).
>>
>>
>> Thank you very much Ryan,
>>
>> I tried in that way but I still got problems due to Issue 695 (non- 
>> recursive checkout bug).
>> In fact if another developer modifies 'project3Dir' (the directory  
>> that i didn't checked out) and commits
>> changes, the next time I update the root of my working copy I will  
>> get the following error:
>>
>> Error: Directory 'C:\develop\trunk\project3Dir' is missing
>> Error: Please execute the "Cleanup" command.
>>
>> After executing cleanup if I try to update the whole repository  
>> (under trunk) will be checked out
>> in my working copy.
>>
>> Did I miss anything?
>
>
> You probably didn't miss anything. It's long been said that the non- 
> recursive checkout feature is a bit broken, and you seem to be  
> running into one consequence of that. I guess you'll have to wait for  
> the sparse directory feature of 1.5 after all, for more reliable  
> operation.
>
>
> ---------------------------------------------------------------------
> 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: Partial checkout

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Jan 29, 2008, at 05:57, Matteo Tontini wrote:

> Ryan Schmidt ha scritto:
>
>> On Jan 28, 2008, at 10:14, Matteo Tontini wrote:
>>
>> > I'm writing to ask suggestions about how to manage our particular
>> > project structure.
>> > We're developing with C# and Visual Studio 2005 professional.
>> > We have a big solution made up of several groups of projects.
>> > Different developers work on different sets of projects, organized
>> > in solutions that realize partitions
>> > of the global solution.
>> > In practice we're using the 'Partitioned single solution' model as
>> > illustrated in the following article:
>> >
>> > http://msdn2.microsoft.com/en-us/library/ms998208.aspx
>> >
>> > The problem is that our versioning system is Subversion.
>> > With Subversion we've not been able to checkout partially the
>> > content of the root folder of the
>> > repository.
>> > If I want to work with a partial solution and I want to checkout
>> > only the solution file I need, and the related projects' dirs I'm
>> > forced to checkout each separate project directory by itself.
>> > Let's see an example:
>> >
>> > reposName/trunk
>> > project1Dir/
>> > project2Dir/
>> > project3Dir/
>> > globalSolution.sln
>> > partitionedSolution1.sln
>> > partitionedSolution2.sln
>> >
>> > If I want to work with partitionedSolution1.sln, that is made up of
>> > project1 and project2 I have two kind of problems:
>> >
>> > - I have to checkout separately project1Dir and project2Dir in 2
>> > subdirectories of my working copy.
>> > But in this way I cannot commit or update globally the content of
>> > my working copy, I'm supposed to commit and
>> > update all the projects separately, instead.
>>
>>
>> This should work:
>>
>> svn checkout -N url://to/reposName/trunk
>>
>> (This will checkout all the files but none of the directories.)
>>
>> cd trunk
>> svn up project1Dir project2Dir
>>
>> (This will bring in just those directories that you specify.)
>>
>> (It's a single working copy and you can do commits across all of it
>> all at once, just like you want.)
>>
>>
>> In Subversion 1.5, I believe there will be a different way to handle
>> this (sparse directories feature).
>
> Thank you very much Ryan,
>
> I tried in that way but I still got problems due to Issue 695 (non- 
> recursive checkout bug).
> In fact if another developer modifies 'project3Dir' (the directory  
> that i didn't checked out) and commits
> changes, the next time I update the root of my working copy I will  
> get the following error:
>
> Error: Directory 'C:\develop\trunk\project3Dir' is missing
> Error: Please execute the "Cleanup" command.
>
> After executing cleanup if I try to update the whole repository  
> (under trunk) will be checked out
> in my working copy.
>
> Did I miss anything?

You probably didn't miss anything. It's long been said that the non- 
recursive checkout feature is a bit broken, and you seem to be  
running into one consequence of that. I guess you'll have to wait for  
the sparse directory feature of 1.5 after all, for more reliable  
operation.


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

Re: Partial checkout

Posted by Matteo Tontini <il...@yahoo.it>.
Thank you very much Ryan,

I tried in that way but I still got problems due to Issue 695 (non-recursive checkout bug).
In fact if another developer modifies 'project3Dir' (the directory that i didn't checked out) and commits
changes, the next time I update the root of my working copy I will get the following error:

Error: Directory 'C:\develop\trunk\project3Dir' is missing  
Error: Please execute the "Cleanup" command.

After executing cleanup if I try to update the whole repository (under trunk) will be checked out
in my working copy.

Did I miss anything?

Matteo



Ryan Schmidt <su...@ryandesign.com> ha scritto: On Jan 28, 2008, at 10:14, Matteo Tontini wrote:

> I'm writing to ask suggestions about how to manage our particular  
> project structure.
> We're developing with C# and Visual Studio 2005 professional.
> We have a big solution made up of several groups of projects.
> Different developers work on different sets of projects, organized  
> in solutions that realize partitions
> of the global solution.
> In practice we're using the 'Partitioned single solution' model as  
> illustrated in the following article:
>
> http://msdn2.microsoft.com/en-us/library/ms998208.aspx
>
> The problem is that our versioning system is Subversion.
> With Subversion we've not been able to checkout partially the  
> content of the root folder of the
> repository.
> If I want to work with a partial solution and I want to checkout  
> only the solution file I need, and the related projects' dirs I'm  
> forced to checkout each separate project directory by itself.
> Let's see an example:
>
> reposName/trunk
>         project1Dir/
>         project2Dir/
>         project3Dir/
>         globalSolution.sln
>         partitionedSolution1.sln
>         partitionedSolution2.sln
>
> If I want to work with partitionedSolution1.sln, that is made up of  
> project1 and project2 I have two kind of problems:
>
> - I have to checkout separately project1Dir and project2Dir in 2  
> subdirectories of my working copy.
>   But in this way I cannot commit or update globally the content of  
> my working copy, I'm supposed to commit and
>   update all the projects separately, instead.


This should work:

svn checkout -N url://to/reposName/trunk

(This will checkout all the files but none of the directories.)

cd trunk
svn up project1Dir project2Dir

(This will bring in just those directories that you specify.)

(It's a single working copy and you can do commits across all of it  
all at once, just like you want.)


In Subversion 1.5, I believe there will be a different way to handle  
this (sparse directories feature).



       
---------------------------------

---------------------------------
L'email della prossima generazione? Puoi averla con la nuova Yahoo! Mail

Re: Partial checkout

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Jan 28, 2008, at 10:14, Matteo Tontini wrote:

> I'm writing to ask suggestions about how to manage our particular  
> project structure.
> We're developing with C# and Visual Studio 2005 professional.
> We have a big solution made up of several groups of projects.
> Different developers work on different sets of projects, organized  
> in solutions that realize partitions
> of the global solution.
> In practice we're using the 'Partitioned single solution' model as  
> illustrated in the following article:
>
> http://msdn2.microsoft.com/en-us/library/ms998208.aspx
>
> The problem is that our versioning system is Subversion.
> With Subversion we've not been able to checkout partially the  
> content of the root folder of the
> repository.
> If I want to work with a partial solution and I want to checkout  
> only the solution file I need, and the related projects' dirs I'm  
> forced to checkout each separate project directory by itself.
> Let's see an example:
>
> reposName/trunk
>         project1Dir/
>         project2Dir/
>         project3Dir/
>         globalSolution.sln
>         partitionedSolution1.sln
>         partitionedSolution2.sln
>
> If I want to work with partitionedSolution1.sln, that is made up of  
> project1 and project2 I have two kind of problems:
>
> - I have to checkout separately project1Dir and project2Dir in 2  
> subdirectories of my working copy.
>   But in this way I cannot commit or update globally the content of  
> my working copy, I'm supposed to commit and
>   update all the projects separately, instead.


This should work:

svn checkout -N url://to/reposName/trunk

(This will checkout all the files but none of the directories.)

cd trunk
svn up project1Dir project2Dir

(This will bring in just those directories that you specify.)

(It's a single working copy and you can do commits across all of it  
all at once, just like you want.)


In Subversion 1.5, I believe there will be a different way to handle  
this (sparse directories feature).


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

RE: Partial checkout

Posted by Matteo Tontini <il...@yahoo.it>.
First of all thank's a lot, David, for your answer,

actually you're right: changing the layout as you say could enhance the situation but still there would be two problems:

1)
we have different partial solutions that share some projects:
e.g., "/subproj/proj1", "/subproj/proj2", "/subproj/proj3"
were both mysln1.sln and mysln2.sln need to be in "/subproj" because both use two out of three of the projects.
So the problem is not completely fixed in this way but it is still a good enahncement because it allows us to reduce the number of unused projects in our working copies.
2)
but there is also a usability issue:
each developer should be informed about were each solution file is placed or
try to browse the repository to find it.
This could lead to not finding the solution and to create a new one elsewhere thus duplicating a solution file and some projects.

The reason why I decided to put all the solution files in the root directory is that:
because of point 1) the other choice does not provide me the perfect solution to the problem (though a very good one) then I preferred to keep all solution files immediately visible thus avoiding point 2).

Still I'm considering changing the layout but I hope Subversion 1.5 will be fast enough to solve the problem.

Matteo



"Bicking, David (HHoldings, IT)" <Da...@thehartford.com> ha scritto:  


>We have a big solution made up of several groups of projects.
>Different developers work on different sets of projects, organized in 
>solutions that realize partitions of the global solution.
>In practice we're using the 'Partitioned single solution' model as
illustrated 
>in the following article:

>http://msdn2.microsoft.com/en-us/library/ms998208.aspx

>The problem is that our versioning system is Subversion.

Well, not really, but I understand what you mean.

>With Subversion we've not been able to checkout partially the content
of the root 
>folder of the repository.
>If I want to work with a partial solution and I want to checkout only
the solution file I need, 
>and the related projects' dirs I'm forced to checkout each separate
project directory by itself.

The next version will have "sparse folders" (or some such name) which
will allow you to check out pieces of a folder structure.  This might
alleviate some of the problems.
        
>If I want to work with partitionedSolution1.sln, that is made up of
project1 and 
>project2 I have two kind of problems:

>- I have to checkout separately project1Dir and project2Dir in 2
subdirectories of my working copy.
>  But in this way I cannot commit or update globally the content of my
working copy, I'm supposed to commit and   
>  update all the projects separately, instead.

You can work around this by changing the way you layout your solution's
folder structures.  Each subsection that has its own solution should go
into a single folder (e.g., "/subproj/proj1", "/subproj/proj2", where
mysln.sln is in "/subproj").  The "real" solution would reference all
those together, so if there are three subsections, there will be three
"top level" folders.

>- I cannot checkout single files. So, if I want the
partitionedSolution1.sln file, the only thing I can do is to
>  checkout only the top folder just to get all the solution files
instead of only the one I need.

This isn't a problem if you follow my instructions.

>Matteo

David
--
All developers are lazy as evidenced by the amount of time and effort
spent in making a computer do the work. 


*************************************************************************
This communication, including attachments, is
for the exclusive use of addressee and may contain proprietary,
confidential and/or privileged information.  If you are not the intended
recipient, any use, copying, disclosure, dissemination or distribution is
strictly prohibited.  If you are not the intended recipient, please notify
the sender immediately by return e-mail, delete this communication and
destroy all copies.
*************************************************************************



       
---------------------------------

---------------------------------
L'email della prossima generazione? Puoi averla con la nuova Yahoo! Mail

RE: Partial checkout

Posted by "Bicking, David (HHoldings, IT)" <Da...@thehartford.com>.
 


>We have a big solution made up of several groups of projects.
>Different developers work on different sets of projects, organized in 
>solutions that realize partitions of the global solution.
>In practice we're using the 'Partitioned single solution' model as
illustrated 
>in the following article:

>http://msdn2.microsoft.com/en-us/library/ms998208.aspx

>The problem is that our versioning system is Subversion.

Well, not really, but I understand what you mean.

>With Subversion we've not been able to checkout partially the content
of the root 
>folder of the repository.
>If I want to work with a partial solution and I want to checkout only
the solution file I need, 
>and the related projects' dirs I'm forced to checkout each separate
project directory by itself.

The next version will have "sparse folders" (or some such name) which
will allow you to check out pieces of a folder structure.  This might
alleviate some of the problems.
        
>If I want to work with partitionedSolution1.sln, that is made up of
project1 and 
>project2 I have two kind of problems:

>- I have to checkout separately project1Dir and project2Dir in 2
subdirectories of my working copy.
>  But in this way I cannot commit or update globally the content of my
working copy, I'm supposed to commit and   
>  update all the projects separately, instead.

You can work around this by changing the way you layout your solution's
folder structures.  Each subsection that has its own solution should go
into a single folder (e.g., "/subproj/proj1", "/subproj/proj2", where
mysln.sln is in "/subproj").  The "real" solution would reference all
those together, so if there are three subsections, there will be three
"top level" folders.

>- I cannot checkout single files. So, if I want the
partitionedSolution1.sln file, the only thing I can do is to
>  checkout only the top folder just to get all the solution files
instead of only the one I need.

This isn't a problem if you follow my instructions.

>Matteo

David
--
All developers are lazy as evidenced by the amount of time and effort
spent in making a computer do the work. 


*************************************************************************
This communication, including attachments, is
for the exclusive use of addressee and may contain proprietary,
confidential and/or privileged information.  If you are not the intended
recipient, any use, copying, disclosure, dissemination or distribution is
strictly prohibited.  If you are not the intended recipient, please notify
the sender immediately by return e-mail, delete this communication and
destroy all copies.
*************************************************************************


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