[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: branching several times a day (was Re: Sourcesafe user needs primer on branching source control)

From: N. Thomas <nthomas_at_cise.ufl.edu>
Date: 2004-03-12 22:14:37 CET

* Brad Appleton <brad@bradapp.net> [2004-03-10 16:57:05 -0600]:
> Have you considered the "Private Branch" (a.k.a. "Personal Branch")
> pattern of using a branch per developer per active/concurrent
> feature or task?

I like your idea about private branches and such. (Although my
particular repo has only one person accessing it, this makes a ton of
sense where there are multiple devs.)

> And instead of deleting or obsoleting the branch (its not needed for
> change-set purposes) you use it for the next task you are about to
> start work on (because it should be the same content as the main trunk
> at that time).
>
> Seems to me this still provides you the folllwing benefits, but with
> far fewer branches/copies needing to be created.

The only thing I have a question about is this: why would you not delete
your branch when you are done with it? It makes more sense to start a
new private branch with a pristine copy -- especially more so for
Subversion where branching is O(1).

Also, I wouldn't want the history from each feature to be muddled with
other ones -- something that happens if you don't delete the branch.

Suppose my hello-world repo looks like this:

    /
    /tags
    /trunk
    /branches

now I add a task-branch:

    /
    /tags
    /trunk
    /branches
    /branches/goodbyeworld

Anytime I run "svn log ." in /branches/goodbyeworld, I get the history
for my goodbyeworld feature that I am adding to the project.

And when I am done with that and want to add another feature, I merge my
changes back into the trunk.

Now I add another feature, so I branch once again:

    /
    /tags
    /trunk
    /branches
    /branches/hellouniverse

Now if I understand your concept of private branches, I would initially
branch like this:

    /
    /tags
    /trunk
    /branches
    /branches/nthomas

I would add my goodbyeworld feature into /branches/nthomas, and then
when everything is merged into trunk and synced up, when I want to add
my hellouniverse feature, I would still work in /branches/nthomas.

But this doesn't make sense since I have now put two unrelated features
into the same work stream of my SCM.

Thomas

-- 
N. Thomas
nthomas@cise.ufl.edu
Etiamsi occiderit me, in ipso sperabo
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Fri Mar 12 22:15:49 2004

This is an archived mail posted to the Subversion Users mailing list.