Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How good is this svn structure?

Tags:

svn

enter image description here

Above is the mock of structure I plan to use for java projects in my organization. What do you guys think about it? Does it look conventional? Also, if you take project1, under tags, you can see, 1.0.1, 1.0.2 and so on - these are release tags, created post release. Now, what kind of tags would exist under Dev branch? When would they be created? Should I create branches under DevBranch for each developer? I am confused.

like image 277
Jay Avatar asked Aug 08 '12 15:08

Jay


2 Answers

What do you guys think about it?

Not OK. Usually, branches does not contain further tags, trunk, branches. Branch is like trunk but a parallel development stream. Usually, you create a branch by copying from trunk or from tag or from another branch. Apart from that it's OK.

Does it look conventional?

Yes, it is.

Now, what kind of tags would exist under Dev branch?

By tags you mean names. You can give them a little descriptive names.. like or project1_new_caching_mechanism or project1_1.1_spot_fixes -- indicating this is probably copied from release 1.1 tag to fix some of the issues in the release. When you release this branch, you will like to merge these fixes to other parallel running branches and trunk.

When would they be created?

Whenever you find parallel development scenario. Like you wanted to improve the performance by load testing and adding improved code to it without hampering the main development branch. Or for spot fixes. Or for feature replacement.. or for multiple version support.

Should I create branches under DevBranch for each developer?

No. SVN is centralized repository... (unlike Git), the purpose of any SCM is to allow multiple devs to work on it simultaneously... you will be defying the purpose by separating repos for each dev.

like image 96
Nishant Avatar answered Nov 16 '22 16:11

Nishant


I suggest either this:

repo--tags
    --branches
    --trunk--project1
           --project2
           --project3

...if you want to tag and branch all projects simultaneously

Or this:

repo--project1--tags
              --branches
              --trunk
    --project2--tags
              --branches
              --trunk
    --project3--tags
              --branches
              --trunk

..if you want to be able to do tagging and branching separately for each project.

Don't nest tags/branches/trunks, it does not make sense conceptually.

A branch pertains to a development cycle (i.e. myproject_1_1_sprint_1), a tag marks the state of the project at a given point in time (i.e. myproject_1_1_RC03, meaning release candidate 3 of version 1.1). Note that these are purely conceptual differences determined by convention. There is no technical difference in SVN between branches and tags, they are both so called 'cheap copies' of the project's directory structure.

See this excellent article describing a successful branching strategy for GIT, which is also applicable to other versioning systems like SVN.

like image 35
Adriaan Koster Avatar answered Nov 16 '22 16:11

Adriaan Koster