On Wed, Sep 10, 2014 at 7:50 PM, Philip Bennefall <phi...@blastbay.com>
wrote:

> Hi all,
>
> I have a question about how to properly use branches in the following
> scenario:
>
> I have version 1.0 of my software, which is stable. Then I want to start
> developing version 2. Initially I make a version2 branch where all
> development happens, while at the same time I continue to maintain trunk
> which is currently version 1.
>

This is what we do on SQLite:

(1) We try to keep the trunk always working.  (This helps when doing bisect
in later years.)  New development goes on feature branches until (a) we
know it is going to be merged into a release, and (b) it passes all tests.
Then it gets merged into trunk.  A recent example of a feature branch is
"btree-speedup" (http://www.sqlite.org/src/timeline?r=btree-speedup).  Or
changes can be made directly on trunk as long as they pass all tests and do
not seem risky or disruptive.

As I write this, we are working on three separate feature branchs:
user-auth, 64-bit-lengths, and experimental-bulk-update.

(2) Release is from trunk.  We just --tag a trunk check-in with "release"
and with "version-X.Y.Z".  We also set --bgcolor 'xd0c0ff' so that releases
have a distinct background color.

(3) New development after the release continues to go onto trunk (once it
passes tests as required by [1] above).  If we need to patch a release,
then the patches go into a branch rooted at the release.  The branch for
version-X.Y.Z is named "branch-X.Y.Z".   Example:
http://www.sqlite.org/src/timeline?r=branch-3.8.4

(4) We also maintain a few long-term branches in parallel with trunk.
These are versions of SQLite that we have no immediate plans to merge into
trunk but need to track trunk.  The current long-term branches are
"apple-osx" (containing the slightly-modified code that gets shipped with
MacOS and iOS) and "sessions".  Up unto just recently, we were also
maintaining the "threads" branch, but it has now been merged into trunk.

Sometimes we will make a check-in to trunk then later decide it doesn't
belong there, so then move it into a branch.  (You can do that easily in
Fossil.)  An example is the "btree-speedup" changes which started on trunk
but got move to a branch.  See the timeline at
http://www.sqlite.org/src/timeline?c=2014-08-20 and specifically the edit
at 13:11 for when the original trunk check-in was moved into the
"btree-speedup" branch.


-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to