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