(Not logged on) | Register | Log On

You can subscribe to this discussion group using an RSS feed reader. The Joel on Software Discussion Group

A place to discuss Joel on Software

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Source Control and VS.NET

Hi All,

We are working to standardize our source control trees. Currently we store everything in CVS, but there is no standardization to the source trees. We are about to switch to Subversion, and are wondering how others have set up their source control trees to play nicely with VS.NET.

Specifically, lets say I have a solution that is going to contain 4 projects. 2 of the projects are custom to the solution, and 2 are shared libraries that are common to several other solutions. The proposed tree we have looks like:

/
|- /Projects
|  |- /Projects/MySolution
|  |  |- /Projects/MySolution/MySolution.sln
|  |  |- /Projects/MySolution/BizObjProject
|  |  |  |- Project Files
|  |  |- /Projects/MySolution/DAL
|  |    |- DAL Files
|  |- /Projects/SharedLibraries
|    |- CommonLib1
|    |- CommonLib2
|- /Tools
  |- Tools1
  |- Tools2

Then, we would just bind the projects in the solution to the different folder locations.

Anyone else have better thoughts about how to structure this?
Cory Foy Send private email
Monday, August 15, 2005
 
 
The basic structure looks ok, however, it should start at /trunk instead of /. Bear in mind that branches are just directories in Subversion, so you need to allow for that.
comp.lang.c refugee
Monday, August 15, 2005
 
 
Thanks. What about gotchas from VS.NET? Has anyone had experiences dealing with projects being bound to different locations?

Also, why /trunk? What else would go under /?
Cory Foy Send private email
Monday, August 15, 2005
 
 
recommend:

/trunk
  /---existing structure would goes here
/tags
  /---think "labels" (in VSS parlance)
  /proj1
    /builds
      /050618
      /050619
      /050620
    /RC1
    /RC2
    /RC2.1
    /GOLD
/branches
  /---branches from trunk
  /Proj1-Rel2
  /Proj2-Rel3

This worked well for me ~ I found it somewhere (I think?) in the svn documentation.
Aaron Backer Send private email
Monday, August 15, 2005
 
 
Take a look at "How to Set up a .NET Development Tree" at

http://mikeroberts.thoughtworks.net/blog/archive/Tech/ArticlesandPapers/Howtosetupa.NETDevelopmentTree.html

There's also a tool out there called TreeSurgeon that sets up  trees according to this scheme.

Even if you don't adopt it, there's some good ideas in there.
Chris Tavares Send private email
Monday, August 15, 2005
 
 
Oh, and I have SVN set up at home, and when using it with VS.NET 2003 I don't even bother with integration. I just use TortoiseSVN from windows explorer when I need to do a commit or update, and it works like a charm.

None of the source control binding crap that you have to deal with in sortasafe.
Chris Tavares Send private email
Monday, August 15, 2005
 
 
TortoiseSVN is a much, much better client than the SCC integration in VS.NET. Don't bother with in-VS.NET source control.
Khalim Fasibov Send private email
Tuesday, August 16, 2005
 
 
+1 for the trunk, branch and tag structure. It means you can checkout the whole lot under / (trunk, all branches and tags), or just the trunk or a specific branch/tag.

Use TortoiseSVN for the user interface, it's nicely integrated into the Windows Shell (Explorer). It's also useful on the server, even if just for creating repositories.

Don't forget to set the Subversion exclude/ignore pattern (bin, obj, .user, .suo + whatever else). You can set this is TortoiseSVN individually, or in the Subversion configuration.

Read, at the very least, the TortoiseSVN manual (http://tortoisesvn.berlios.de/?q=doc_release), ideally also the Subversion manual (http://svnbook.red-bean.com/).

This has some useful hints http://mikeroberts.thoughtworks.net/blog/archive/Tech/ArticlesandPapers/Howtosetupa.NETDevelopmentTreeWrapup.html, although I don't agree with all the details.

If you're doing web projects, there's a bug in VS2003 that prevents TortoiseSVN/Subversion working properly. Either use the unsupported version of TortoiseSVN, or do get rid of web projects and use class library projects instead. I do this, it's much nicer anyway. Look at this http://pluralsight.com/wiki/default.aspx/Fritz.AspNetWithoutWebProjects
el
Tuesday, August 16, 2005
 
 
I forgot, install Apache on the server for repository access, install Apache first and the Subversion installer will ask you to integrated into Apache. However, you will need to modify the http.conf file. The Tortoise manual gives a quick overview of the necessary modifications, and how to set up authentication.

You can use port 8080 if it's a conflict with IIS, but shut down IIS whilst installing, setting port 80 in the Apache installation dialog, otherwise Apache won't install properly. Then edit the http.conf file to port 8080.
el
Tuesday, August 16, 2005
 
 
httpd.conf not http.conf!!! Wake up.
el
Tuesday, August 16, 2005
 
 
WOW

Thanks el!
A "not lost anymore" dev
Tuesday, August 16, 2005
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz