in

Drowning In Technical Debt

C# | ASP.NET | SharePoint | SQL | Architecture | SOA |

David Strommer

Questioning Subversion Practices

I'm not sure if using the same blog title as David Brock is proper Blog Etiquette but his title captures the topic best.  

I too love Subversion and often questioned the tags folder in a conventional repository layout.

Reference - http://svnbook.red-bean.com/nightly/en/svn.reposadmin.planning.html#svn.reposadmin.projects.chooselayout

/project
    /trunk
    /branches
    /tags

David Brock's post - http://jroller.com/page/bokmann?entry=questioning_subversion_practices

I understood that the typical repository layout derived from CVS but I didn't realize how CVS vs. Subversion deffered in implementation.

"As a conversion from CVS, this convention makes perfect sense. You see, branches and tags in CVS are different things. But in subversion, they are the same - they are just copies of the trunk into one of those directories. In CVS, these events are temporal... that is, they affect a file at a given point in time. In Subversion, while they still apply to a particular version of a file, branches and tags are spatial... that is, they exist as copies of the trunk, just copied into a specially designated place."

While I like David's recommended layout I prefer the Tree metaphor.  Below is an example layout (notice the 'tags' folder is missing):

/project (your name here)
    /branches
        /v1.0
        /v1.5
    /trunk
        /build
        /codegentemplates
        /database
        /docs
        /referencedassemblies
        /solutions
        /tools

Just to clarify the intent of some of folders under trunk:

build - scripts and stuff for building your code
database - sql scripts and stuff.  further break this down into views, sprocs, tables, indexes, etc.
docs - project documentation, how to guide, etc
referencedassemblies - file references like entlib, nhibernate, internal helper assemblies, infragistics, etc.
solutions -  solution files and projects
tools - nunit, fxcop, etc.

Possibly the tools folder should go under the /project folder.

In the end, I'm not sure if it matters which approach you follow as long it is purposeful.

Published May 28 2007, 12:22 PM by David Strommer
Filed under:

Comments

 

royashbrook said:

preach it dave! 'the purpose driven svn' - by david strommer

May 29, 2007 9:44 AM
Powered by Community Server (Commercial Edition), by Telligent Systems