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."