From: William Z. <wrz...@po...> - 2011-09-03 03:14:34
|
On Fri, Sep 2, 2011 at 6:23 PM, Joe Emenaker <jo...@em...> wrote: > 3a) Branch off 2.0 and let bug-fixing happen there while new features > and development toward 3.0 happen in trunk. > 3b) Branch off a copy of trunk for work on 3.0, while the bug fixes > for 2.0 happen in trunk. When 2.0 is released, a tag is made for the > current state of trunk, and then the 3.0 branch is merged back into > trunk, and then the 3.0 branch can be deleted. > Nice thing about Subversion is that there is no difference between "tags" and "branches". Each is a copy of the repository as of some point in time. Or more precisely, *a* repository, since you can make branches off of other branches. Or branches from tags. Or tags from branches. You can check out a tag, then commit changes as if it was a branch. Because it *is* a branch. So /trunk is nothing more than the "blessed branch". And the difference between /tags and /branches is entirely political, and not at all technical. In general, /tags is mean to hold *past* states of the system (i.e. we branch /trunk to form /tags/release_20, then continue development on /trunk). And /branches is mean to hold *future* states of the system (i.e. we continue updating drivers under /trunk, while Joe builds his new version under /branches/emenaker_refactor). And 3a is the best simply because one should stay away from merging wherever possible. And it's pretty much free, since it's always good to create a tag for every version that is released. -Bill Zwicky |