tgit-branches.rst - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
 (HTM) git clone git://src.adamsgaard.dk/pism
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       tgit-branches.rst (2263B)
       ---
            1 .. include:: ../global.txt
            2 
            3 .. default-role:: literal
            4 
            5 .. _sec-git-branches:
            6 
            7 Git branches
            8 ^^^^^^^^^^^^
            9 
           10 PISM development loosely follows the Git branching model described in `A successful Git
           11 branching model <git-branching-model_>`_ by Vincent Driessen.\ [#]_
           12 
           13 PISM's repository contains two long-lived branches: `master` and `dev`.
           14 
           15 The default branch `master` contains released code. This way users can clone
           16 |pism-github-url| and get the latest PISM release.
           17 
           18 The `dev` branch contains code that is ready to be included in the next release.
           19 
           20 Current development is done in *topic branches* started from `dev`. Once a new feature or
           21 improvement is finished, tested, and documented, the topic branch is merged into `dev` and
           22 deleted. Each topic branch should contain changes related to one particular topic.\ [#]_
           23 
           24 If one person is responsible for working on a topic branch it works well to keep it up to
           25 date with `dev` by rebasing it on top of `dev`, effectively applying all the changes
           26 contained in it to the current state of `dev`. If rebasing is impractical one could merge
           27 `dev` into a topic branch to get access to some features that were not available when the
           28 branch was started. However, merging `dev` into a topic branch "just to stay up to date"
           29 is not a good idea since it confuses commit history.
           30 
           31 When a released version of the code needs a fix, a "bug-fix" branch is created from the
           32 `master` branch. When the implementation of a fix is complete, the bug-fix branch is
           33 merged into `master` (and `master` is tagged to mark the new bug-fix release) and into
           34 `dev` so that the fix is included in the next major release.
           35 
           36 In |pism-github-url| branches are named using the name of the person responsible for the
           37 branch as a prefix. For example, `ckhroulev/pnetcdf` is the name of Constantine Khroulev's
           38 branch containing improvements of the I/O code using PnetCDF_.
           39 
           40 .. note::
           41 
           42    Please commit all your changes to "topic" branches. The `master` and `dev` branches are
           43    managed by PISM developers at UAF.
           44 
           45 .. rubric:: Footnotes
           46 
           47 .. [#] This model may not be perfect but works well for a project of PISM's size.
           48 .. [#] See `Fun with merges and purposes of branches <git-fun-with-merges_>`_ by Junio C
           49        Hamano for more about "topic branches."