We are considering moving from SVN to distributed VCS in my workplace.
I am familiar with all the reasons for wanting to use DVCS for everyday development: local version control, easier branching and merging, etc., but I have not seen such an impressive release management point of view. Here is our release:
- Find out what changes are available to merge.
- Run a query to find defects / tickets associated with these changes.
- Filter changes related to open tickets. In our midst, tickets must be closed to merge with the release branch.
- Filter out changes that we don’t want in the release branches. We are very conservative when it comes to merging change. If the change is not absolutely necessary, it is not combined.
- Combine the available changes, preferably in chronological order. We group changes together if they are associated with the same ticket.
- Block unwanted changes from the release branch (
svnmerge block), so we won’t have to deal with them again.
Sometimes we can manipulate 3-5 different milestones at a time. Some steps have very different limitations, and the list of blocks can take quite a while.
git, , , . , , , , , , .
, , , . ( "", ). , , . .
DVCS . , . , ? , ? , ? .
, DVCS . . , , , . , .