Skip to content
erlang edited this page Sep 13, 2010 · 17 revisions

We use the following branches for Erlang/OTP.

master

The master branch is only used for releases and patches for our commercial customers. It will typically only be updated at the time of a new release.

Development branch (currently ccase/r13b04_dev)

Behind the scenes, we still use clearcase. The development branch follows the corresponding branch in clearcase. Only stable changes are merged to the development branch. Branches created in git are first transferred to the development branch in clearcase before it appears on the ccase/r13bXX_dev branch in git, but we try to preserve as much history as possible.

You can safely base branches on the development branch. It will not be rewinded. Typically, everything in the development branch will be included in the next release.

pu (‘proposed updates’)

The pu branch contains everything in the development branch and merges of all topic branches that have not yet graduated to the development branch. There is a web page with an overview of what is currently included: Currently in the ‘pu’ branch.

The pu branch will be rebuilt frequently, so it is bad idea to base branches on it.

We will send out an information email about the status of the topics on the pu branch approximately twice a week.

For the examples below, we assume that you have created a remote like this:

git remote add upstream git://github.com/erlang/otp.git

For background on this command, see Forking a project.

You can list all topics currently on the pu branch like this:

git log --oneline --first-parent ccase/r13b04_dev..upstream/pu

The output may look like this:

5dba534 Merge branch 'as/c_nc-fix' into pu
7b3cd7d Merge branch 'bg/make_stub_module-fix' into pu
4bf6686 Merge branch 'mh/to_erl-error-messages' into pu
8f1deea Merge branch 'ks/dialyzer-wx-fix' into pu
4ca3b67 Merge branch 'sv/sys_get_status' into pu
c976574b Merge branch 'bd/http_chunk_fix' into pu
6c68df3 Merge branch 'bg/on_load-types' into pu
36f2430 Merge branch 'po/odbc-update-delete-no-rows' into pu
f3ff5fe Merge branch 'ng/readme' into pu
fcd86c8 Merge branch 'egil/misc-egd' into pu
2c2a61d Merge branch 'egil/readme-debug-emulator' into pu

If you want to create your own local branch to follow one of the branches, say sv/sys_get_status you can copy and paste the branch name and commit ID and write the following command:

git branch sv/sys_get_status 4ca3b67^2

Note the ^2 at the end (it means “follow the second parent of the commit”).

If you just want to build using the pu branch, you don’t need to create a local version of it first. You can just do:

git checkout upstream/pu

and build as usual. If you do create a local branch, note that you will get merge conflicts if you try to update it using git pull. Instead, either do

git branch -f pu upstream/pu

if the current branch is not pu or if the current branch is pu:

git reset --hard upstream/pu

Creating local branches for the topics in pu

To create a local branch for a topic that is included in the pu branch, you can use the following script.

Assuming that you have defined a remote named upstream that points to the erlang/otp repository, you use it like this:

create-topic-branches upstream/ccase/r13b04_dev..upstream/pu

The output will look like:

git branch -f jp/dependencies_makefile 2924df5^2
git branch -f is/mnesia-send-compressed 7912b9c^2
git branch -f yh/fix-re-run-corruption 54077dd^2
git branch -f egil/binary-gc 067c273^2
git branch -f wt/ssl-resume-session 097eab3^2
git branch -f wt/ssl_certreq_send_ca_list 8978d36^2
git branch -f sc/sctp-connect-nowait 9a94e7c^2
git branch -f km/http-host-header-fix cd9cbaa^2
git branch -f va/rb-improvements 62dc0f1^2
git branch -f uw/shell-tab-completion ac66386^2
git branch -f cf/compile_warning_as_error df8ea7a^2
git branch -f cf/epp-macro-overloading f323862^2
git branch -f bg/otp_build-improvements 762faf3^2
git branch -f at/odbc_osx_fix 02b8126^2
git branch -f db/tv_nthtail_fix 51c42b3^2
git branch -f bd/http_chunk_fix 80f97f7^2
git branch -f po/odbc-update-delete-no-rows 438cea4^2

To create only the local branch you are interested, copy and paste the command for the branch and execute it.

You can also pipe the output of create-topic-branches to sh if you would want to create all topic branches:

create-topic-branches upstream/ccase/r13b04_dev..upstream/pu | sh

or you could run the command through grep before invoking the shell. For example:

create-topic-branches upstream/ccase/r13b04_dev..upstream/pu | grep "bg/" | sh