What is a good example of a deployment and development system based on subversion?
-
When several engineers are developing using Subversion, should they develop on branches, with the trunk being the source of truth for production? Should production be a branch? But how do you easily deal with merging? Any solutions out there for this? How do other set it up? I know about alternatives using Git, and am only concerned about Subversion in this case.
-
Answer:
There is no single right answer to this question. Also keep in mind that "trunk" and "branches" are just names and could be any name you want. The significance in the name is just whatever you want to give it. I will explain how the Subversion project and other open-source projects I work on do this: All development is done on "trunk". Technically trunk is considered unstable but we use social convention to keep it relatively stable. Broken build is unacceptable and needs to be fixed immediately and generally speaking all tests should always be passing. Occasionally something will be committed that only breaks tests on a specific OS and those problems get fixed. In some cases a "feature branch" will be created by copying trunk. A small team of developers might collaborate on some feature. The branch will be periodically updated with changes from trunk so that it does not drift too far. When work is done the branch will be reintegrated with trunk. Generally, it is encouraged to do all work on trunk but sometimes people want to work on something they are not sure if they want to keep or not and a branch can help. Or there is reason to believe it will be unstable for a while and they do not want to risk breaking trunk. When trunk nears point of being ready for a release we copy trunk to create a "release branch". As release stabilization process happens and fixes are identified those fixes are always made on trunk. The fixes are then "proposed for backport" to the release and voted on by the committers. When a fix gets 3 +1's and no -1's it can be merged to the release branch to be included. When the release is done, a tag is made. Future fix releases (1.6.1, 1.6.2 etc.) are created by backporting those fixes from trunk to the release branch until enough have been done to justify the release. New major releases which add new features result in a new release branch. For example, the release branches for Subversion are: 1.0.x, 1.1.x, 1.2.x, 1.3.x, 1.4.x, 1.5.x and 1.6.x. A fix could be nominated and backported to as many of these release branches as needed. Generally speaking, most fixes made on trunk will merge cleanly to a release branch. When the merge is going to require some conflict resolution we create a "fix branch". This is done by copying the release branch to make the fix branch. The fix is then merged from trunk to the fix branch and the conflicts resolved and committed. The fix branch is then nominated for backport to the release branch. The goal here is just that people that vote on the fix can also see what had to happen for conflict resolution and we know the fix branch will merge cleanly to the release branch.
Mark Phippard at Quora Visit the source
Related Q & A:
- What is a good software and SaaS product inventory management system?Best solution by Quora
- What is a good name for a guild in WoW?Best solution by Yahoo! Answers
- What is a good camcorder for a webshow?Best solution by Yahoo! Answers
- What is a good name for a plumbing company?Best solution by Yahoo! Answers
- What is a good font for a resume?Best solution by Yahoo! Answers
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.