Shelves in SVN, GIT, Bazaar, etc.
This week, I am watching some screencasts about TFS and
heard about shelves. Googled about this feature in SVN, GIT,
Bazaar, etc. and in most links returned people recommends
creating a shelves folder and a folder for each team member
inside the shelves folder, which is good. The problem is
that people recommend checking out from trunk directly to
shelves subfolders, but I think it is not the way to go
because when team need to synchronize unfinished changes
they have to check in to trunk and having unfinished
(defective) code on trunk is not acceptable, at least for
me.
In my opinion, every change request must be worked out on
branches. When change requests are worked out by a team and
they need to check in/out often, shelves might be created
based on the branch related to the specific change request.
When anyone has finished their tasks, they shall merge to
the branch and when everybody has finished, someone from the
team should take responsibility of merging the branch to the
trunk. To sum up: To check out, follow from trunk to branch
and from branch to shelf (when needed -> team working on
that branch). To check in, from shelf to branch (when needed
-> team working on that branch) from branch to trunk when
everybody is finished, code is functional and satisfies the
change request.
Based on the above I would have structures like the one below:
branches
branches\changerequest001
branches\changerequest002
branches\changerequest003
shelves
shelves\teammember001
shelves\teammember001\changerequest001
shelves\teammember001\changerequest002
shelves\teammember002
shelves\teammember002\changerequest002
shelves\teammember002\changerequest003
tags
tags\version1
tags\version2
trunk
What do you think about it?
Luciano Evaristo
Guerche (Gorše)
Taboão da Serra, SP, Brazil