Add blueprint.
[tails-test.git] / wiki / src / contribute / git.mdwn
blobc3f680f7b1f5983ccb67c740635306efd364a922
1 [[!meta title="Git repositories"]]
3 <div id="intro">
5 <p>Tails and its website are developed in numerous Git repositories.</p>
7 <p><span class="application">Git</span> is a distributed version control
8 system. It allows several people to work on the same source code and
9 handle changes in a distributed and efficient way.</p>
11 </div>
13 [[!toc levels=3]]
15 <a id="learn_Git"></a>
17 Learn Git
18 =========
20 <p>To learn more about <span class="application">Git</span>, refer to
21 its <a href="http://git-scm.com/">homepage</a>, and <a
22 href="http://git-scm.com/documentation">official documentation</a>.</p>
24 Here are a couple of links to get started with Git:
26 - An [interactive introduction](https://try.github.io/) to Git
27 - [Git basics](https://www.atlassian.com/git/tutorial/git-basics), by Atlassian
28 - [Git immersion](http://gitimmersion.com/), a step-by-step introduction
29 - Pro Git: [online](http://git-scm.com/book),
30   [PDF](https://github.s3.amazonaws.com/media/progit.en.pdf), a book on Git from
31   basic to advanced usage. This book is available in several languages. Among others:
32   [German](http://git-scm.com/book/de), [French](http://git-scm.com/book/fr), [Português](http://git-scm.com/book/pt-br) (Brasil)
33 - [OpenHatch Missions: Using Git](https://openhatch.org/missions/git), concrete
34   exercises to train yourself in using Git.
35 - [Git For Ages 4 And
36   Up](http://mirror.linux.org.au/linux.conf.au/2013/mp4/Git_For_Ages_4_And_Up.mp4),
37   a video on learning Git.
39 <a id="general-information"></a>
41 General information
42 ===================
44 Git hosting setup at immerda
45 ----------------------------
47 Documentation for our Git hosting setup at immerda:
49 * [main documentation](https://wiki.immerda.ch/index.php/GitRepositoriesImmerda)
50 * [SSL and SSH fingerprints](https://www.immerda.ch/services/certs.html)
52 Merge policy
53 ------------
55 See our [[contribute/merge_policy]].
57 Caution!
58 --------
60 If you want to commit patches that may be published later, you might
61 want to anonymize them a bit; to do so, run the following commands
62 in every of your local clones' directories:
64         git config user.name 'Tails developers'
65         git config user.email tails@boum.org
67 If you intend to prepare Tails releases, you'll also need to make
68 the development team signing key the default one for Git tags:
70         git config user.signingkey 1202821CBE2CD9C1
72 Creating a new repository
73 -------------------------
75 1. Create a new repository at immerda.
76 2. Create a pull-style mirror at repo.or.cz.
78 Repositories
79 ============
81 Main repository
82 ---------------
84 This repository contains the Tails source code and the wiki source.
86 Anyone can check it out like this:
88         git clone https://git-tails.immerda.ch/tails
90 Developers with write access to the repositories should instead:
92         git clone 'ssh://boum_org_amnesia@webmasters.boum.org/~/wiki.git'
94 We have a [web interface](https://git-tails.immerda.ch/tails/)
95 available for the main repository.
97 ### Branches
99 Tails development uses several branches modeled a bit like the
100 Debian development process. Here they are.
102 #### master
104 The `master` branch is used by the online wiki.
106 **FIXME**: document what should go in there, when other branches are
107 merged into it, etc.
109 #### stable
111 The `stable` branch is intended to contain:
113 - the state of the code tagged for the last stable release
114 - fixes for security or important bugs.
116 Its purpose is to prepare minor releases.
118 #### testing
120 The `testing` branch is used to prepare an imminent release: at some
121 point of the development process, the `devel` branch code is merged
122 into `testing`, frozen, and endures careful testing and bug-fixing
123 until this branch is considered good enough to become a stable
124 release. The `testing` branch is then merged into the `stable` and
125 `master` ones, images built and shipped and we go back to code shiny
126 new stuff in the `devel` branch.
128 Please note that the `testing` branch generally has not been granted
129 the same testing and attention as code that has made it into a
130 stable release: please use it for testing purposes but do not rely
131 on it for anything. No guarantee, blablabla.
133 #### devel
135 Most of the development work that is done in Tails, is done in the
136 `devel` branch. This branch will never get released; instead, code
137 from it will be merged into testing and then into a real release.
139 Please note that the `devel` branch can be broken, have awful security
140 problems and so on. No guarantee, blablabla.
142 The `master` branch is merged into `devel` from time to time.
144 #### Topic branches
146 We use topic branches called `bugfix/*` and
147 `feature/*`, respectively aimed at fixing a single bug and
148 implementing a single new feature. Once ready, a topic branch is
149 merged (with `--no-ff`) into the appropriate branch (generally
150 `devel`). Until it has been merged, a topic branch's history may be
151 rewritten, e.g. it may be rebased on top of `devel`.
153 Unless there are good reasons to do otherwise, bugfix branches must be
154 forked off the latest stable release tag, while feature branches
155 should are forked off the devel branch.
157 #### experimental
159 Generally, it's `devel` plus a few topic branches merged in.
160 These topic branches are not ready enough to be merged into devel, but
161 we seriously would like to get them fit for the next stable release,
162 so this branch serves to test all these new features and bugfixes by
163 building / getting a single image. The history of this branch is
164 frequently rewritten and must not be used as the basis of
165 any development.
167 Please note that the `experimental` branch can be broken, have awful
168 security problems and so on. No guarantee, blablabla.
170 <a id="puppet"></a>
172 Puppet modules
173 --------------
175 Those who have SSH access to these repositories must configure their
176 SSH client a bit, e.g.:
178         Host git.puppet.tails.boum.org
179                 HostName d53ykjpeekuikgoq.onion
180                 ProxyCommand torsocks monkeysphere ssh-proxycommand %h %p
182 ### tails
184 This is the main *public* Puppet module to manage Tails infrastructure,
185 including classes such as `tails::reprepro` and `tails::whisperback::relay`.
187 Anyone can check it out like this:
189         git clone git://git.puppet.tails.boum.org/puppet-tails
191 Developers with write access to the repositories should instead:
193         git clone gitolite@git.puppet.tails.boum.org:puppet-tails
195 ### Other Puppet modules
197 We use and publish a lot of other Puppet modules. See the section
198 about our [[other repositories|git#other-repositories]].
200 ### tails_lizard_manifests
202 Developers with access to the APT secrets can check it out like this:
204         git clone gitolite@git.puppet.tails.boum.org:puppet-lizard-manifests
206 ### tails_secrets_apt
208 Developers with access to the APT secrets can check it out like this:
210         git clone gitolite@git.puppet.tails.boum.org:puppet-tails_secrets_apt
212 ### tails_secrets_whisperback
214 Developers with access to the WhisperBack secrets can check it out like this:
216         git clone gitolite@git.puppet.tails.boum.org:puppet-tails_secrets_whisperback
218 <a id="other-repositories"></a>
220 Other repositories
221 ------------------
223 All other public Tails Git repositories are at
224 <https://git-tails.immerda.ch/>.
226 Unauthenticated access is of the form:
228         git clone https://git-tails.immerda.ch/$REPOSITORY
230 Developers with write access to the repositories should instead:
232         git clone tails@git.tails.boum.org:$REPOSITORY