1 [[!meta title="Git repositories"]]
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>
15 <a id="learn_Git"></a>
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 - Pro Git: [online](http://git-scm.com/book),
27 [PDF](https://github.s3.amazonaws.com/media/progit.en.pdf), a book on Git from
28 basic to advanced usage.
29 - [OpenHatch Missions: Using Git](https://openhatch.org/missions/git), concrete
30 exercises to train yourself in using Git.
32 Up](http://mirror.linux.org.au/linux.conf.au/2013/mp4/Git_For_Ages_4_And_Up.mp4),
33 a video on learning Git.
35 <a id="general-information"></a>
40 Git hosting setup at immerda
41 ----------------------------
43 Documentation for our Git hosting setup at immerda:
45 * [main documentation](https://wiki.immerda.ch/index.php/GitRepositoriesImmerda)
46 * [SSL and SSH fingerprints](https://www.immerda.ch/services/certs.html)
51 See our [[contribute/merge_policy]].
56 If you want to commit patches that may be published later, you might
57 want to anonymize them a bit; to do so, run the following commands
58 in every of your local clones' directories:
60 git config user.name 'Tails developers'
61 git config user.email amnesia@boum.org
63 If you intend to prepare Tails releases, you'll also need to make
64 the development team signing key the default one for Git tags:
66 git config user.signingkey 1202821CBE2CD9C1
68 Creating a new repository
69 -------------------------
71 1. Create a new repository at immerda.
72 2. Create a pull-style mirror at repo.or.cz.
80 This repository contains the Tails source code and the wiki source.
82 Anyone can check it out like this:
84 git clone https://git-tails.immerda.ch/tails
86 Developers with write access to the repositories should instead:
88 git clone 'ssh://boum_org_amnesia@webmasters.boum.org/~/wiki.git'
90 We have a [web interface](https://git-tails.immerda.ch/tails/)
91 available for the main repository.
95 Tails development uses several branches modeled a bit like the
96 Debian development process. Here they are.
100 The `master` branch is used by the online wiki.
102 **FIXME**: document what should go in there, when other branches are
107 The `stable` branch is intended to contain:
109 - the state of the code tagged for the last stable release
110 - fixes for security or important bugs.
112 Its purpose is to prepare minor releases.
116 The `testing` branch is used to prepare an imminent release: at some
117 point of the development process, the `devel` branch code is merged
118 into `testing`, frozen, and endures careful testing and bug-fixing
119 until this branch is considered good enough to become a stable
120 release. The `testing` branch is then merged into the `stable` and
121 `master` ones, images built and shipped and we go back to code shiny
122 new stuff in the `devel` branch.
124 Please note that the `testing` branch generally has not been granted
125 the same testing and attention as code that has made it into a
126 stable release: please use it for testing purposes but do not rely
127 on it for anything. No guarantee, blablabla.
131 Most of the development work that is done in Tails, is done in the
132 `devel` branch. This branch will never get released; instead, code
133 from it will be merged into testing and then into a real release.
135 Please note that the `devel` branch can be broken, have awful security
136 problems and so on. No guarantee, blablabla.
138 The `master` branch is merged into `devel` from time to time.
142 We use topic branches called `bugfix/*` and
143 `feature/*`, respectively aimed at fixing a single bug and
144 implementing a single new feature. Once ready, a topic branch is
145 merged (with `--no-ff`) into the appropriate branch (generally
146 `devel`). Until it has been merged, a topic branch's history may be
147 rewritten, e.g. it may be rebased on top of `devel`.
149 Unless there are good reasons to do otherwise, bugfix branches must be
150 forked off the latest stable release tag, while feature branches
151 should are forked off the devel branch.
155 Generally, it's `devel` plus a few topic branches merged in.
156 These topic branches are not ready enough to be merged into devel, but
157 we seriously would like to get them fit for the next stable release,
158 so this branch serves to test all these new features and bugfixes by
159 building / getting a single image. The history of this branch is
160 frequently rewritten and must not be used as the basis of
163 Please note that the `experimental` branch can be broken, have awful
164 security problems and so on. No guarantee, blablabla.
171 Those who have SSH access to these repositories must configure their
172 SSH client a bit, e.g.:
174 Host git.puppet.tails.boum.org
175 HostName d53ykjpeekuikgoq.onion
176 ProxyCommand torsocks monkeysphere ssh-proxycommand %h %p
180 This is the main *public* Puppet module to manage Tails infrastructure,
181 including classes such as `tails::reprepro` and `tails::whisperback::relay`.
183 Anyone can check it out like this:
185 git clone git://git.puppet.tails.boum.org/puppet-tails
187 Developers with write access to the repositories should instead:
189 git clone gitolite@git.puppet.tails.boum.org:puppet-tails
191 ### Other Puppet modules
193 We use and publish a lot of other Puppet modules. See the section
194 about our [[other repositories|git#other-repositories]].
196 ### tails_lizard_manifests
198 Developers with access to the APT secrets can check it out like this:
200 git clone gitolite@git.puppet.tails.boum.org:puppet-lizard-manifests
202 ### tails_secrets_apt
204 Developers with access to the APT secrets can check it out like this:
206 git clone gitolite@git.puppet.tails.boum.org:puppet-tails_secrets_apt
208 ### tails_secrets_whisperback
210 Developers with access to the WhisperBack secrets can check it out like this:
212 git clone gitolite@git.puppet.tails.boum.org:puppet-tails_secrets_whisperback
214 <a id="other-repositories"></a>
219 All other public Tails Git repositories are at
220 <https://git-tails.immerda.ch/>.
222 Unauthenticated access is of the form:
224 git clone https://git-tails.immerda.ch/$REPOSITORY
226 Developers with write access to the repositories should instead:
228 git clone tails@git.tails.boum.org:$REPOSITORY