Describe branches
[devwiki.git] / branches.mdwn
1 In order to help developers understand what branch they should be using
2 here's a description of active branches in Moonshot.
3
4 ## Switching Branches ##
5
6 As with any Git project, you use the 'git checkout' command to switch
7 branches. This might look like:
8
9     git checkout -b master origin/master #create local copy of master
10     git checkout origin/feature # check out with no plan to commit
11
12 However, Moonshot also has a number of submodules. These include
13 libradsec, Shibboleth, and libeap.
14 Each commit to the main Moonshot repository includes a reference to the
15 appropriate commit of a sub project to use. This is a *commit*, not a
16 *branch*. That is, a Moonshot developer needs to make a explicit
17 decision to update what version of a subproject is being used on a given
18 moonshot branch.
19
20 However, git does not automatically adjust the version of subprojects
21 you have checked out. After updating, either by pulling, checking out a new branch, merging or
22 rebasing, it is a good idea to run 'git submodule update'. This command
23 will set every subproject to the expected commit stored in the Moonshot
24 branch you have checked out. See [[submodules]] for information on what
25 to do if you need to work with one of these subprojects.
26
27 ## Master ##
28
29 The master branch is intended to be stable but active. Code on the
30 master branch is expected to build and work; if it does not, please
31 notify the mailing list. However, the master branch is also the target
32 of frequent integrations. When code is mature enough that it should
33 generally be used by other Moonshot developers, it should be merged to
34 master.
35
36 At least until we have stable releases, new users should be directed to
37 master.
38
39 ## meeting/moonshot2 ##
40
41 This is a [[integration branch]] for the second moonshot meeting. As the
42 meeting approaches it is desirable to slow down the pace of change in
43 code that participants will be using. It would be unfortunate to get
44 into a situation where a change breaking master disrupted the
45 meeting. This branch is managed by Sam Hartman; ask before committing to
46 this branch.
47
48 Participants at the second moonshot meeting are likely to find a build
49 of this branch helpful.
50 However during the meeting we will likely update this branch or
51 sometimes work from master once we get basic functionality working.
52
53 ## tlv-mic ##
54
55 This branch is a [[feature branch]] under development. The intent is to
56 add a cryptographic checksum to Moonshot exchanges as part of
57 extensibility.