summaryrefslogtreecommitdiffstats
path: root/wiki/src/contribute/git.mdwn
blob: bcff0c4c6ade548927be646fa3dff2617efdf49f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
[[!meta title="Git repositories"]]

<div id="intro">

<p>Tails and its website are developed in several Git repositories.</p>

<p><span class="application">Git</span> is a distributed version control
system. It allows several people to work on the same source code and
handle changes in a distributed and efficient way.</p>

<p>To learn more about <span class="application">Git</span>, refer to
its <a href="http://git-scm.com/">homepage</a>, and <a
href="http://git-scm.com/documentation">official documentation</a>.</p>

<p><strong>Related pages</strong></p>

<ul>
  <li>[[contribute/merge_policy]]</li>
</ul>

<p><strong>Table of contents</strong></p>

[[!toc levels=3]]

</div>

Main repository
===============

This repository contains the Tails source code and the wiki source.

Anyone can check it out like this:

	git clone git://git.immerda.ch/amnesia.git

Developers with write access to the repositories should instead:

	git clone 'ssh://boum_org_amnesia@webmasters.boum.org/~/wiki.git'

We have a Gitweb available for [the main
repository](http://git.immerda.ch/?p=amnesia.git).

Branches
--------

Tails development uses several branches modeled a bit like the
Debian development process. Here they are.

### master

The `master` branch is used by the online wiki.

**FIXME**: document what should go in there, when other branches are
merged into it, etc.

### stable

The `stable` branch is intended to contain:

- the state of the code tagged for the last stable release
- fixes for security or important bugs.

Its purpose is to prepare minor releases.

### testing

The `testing` branch is used to prepare an imminent release: at some
point of the development process, the `devel` branch code is merged
into `testing`, freezed, and endures careful testing and bug-fixing
until this branch is considered good enough to become a stable
release. The `testing` branch is then merged into the `stable` and
`master` ones, images built and shipped and we go back to code shiny
new stuff in the `devel` branch.

Please note that the `testing` branch generally has not been granted
the same testing and attention as code that has made it into a
stable release: please use it for testing purposes but do not rely
on it for anything. No guarantee, blablabla.

### devel

Most of the development work that is done in Tails, is done in the
`devel` branch. This branch will never get released; instead, code
from it will be merged into testing and then into a real release.

Please note that the `devel` branch can be broken, have awful security
problems and so on. No guarantee, blablabla.

The `master` branch is merged into `devel` from time to time.

### Topic branches

We use topic branches called `bugfix/*` and
`feature/*`, respectively aimed at fixing a single bug and
implementing a single new feature. Once ready, a topic branch is
merged (with `--no-ff`) into the appropriate branch (generally
`devel`). Until it has been merged, a topic branch's history may be
rewritten, e.g. it may be rebased on top of `devel`.

Unless there are good reasons to do otherwise, bugfix branches must be
forked off the latest stable release tag, while feature branches
should are forked off the devel branch.

### experimental

Generally, it's `devel` plus a few topic branches merged in.
These topic branches are not ready enough to be merged into devel, but
we seriously would like to get them fit for the next stable release,
so this branch serves to test all these new features and bugfixes by
building / getting a single image. The history of this branch is
frequently rewritten and must no be used as the basis of
any development.

Please note that the `experimental` branch can be broken, have awful
security problems and so on. No guarantee, blablabla.

live-boot
=========

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails_live-boot.git

Developers with write access to the repositories should instead:

	git clone 'ssh://git@git.immerda.ch/tails_live-boot.git'

We have a Gitweb available for [our custom
live-boot](http://git.immerda.ch/?p=tails_live-boot.git).

live-config
===========

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails_live-config.git

Developers with write access to the repositories should instead:

	git clone 'ssh://git@git.immerda.ch/tails_live-config.git'

We have a Gitweb available for [our custom
live-config](http://git.immerda.ch/?p=tails_live-config.git).

<a id="liveusb-creator"></a>

liveusb-creator
===============

The program used to install USB stick is customized version of [Fedora LiveUSB
Creator](https://fedorahosted.org/liveusb-creator/).

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails/liveusb-creator.git

Developers with write access to the repositories should instead:

	git clone git@git.immerda.ch:tails/liveusb-creator.git

We have a Gitweb available for [liveusb-creator](http://git.immerda.ch/?p=tails/liveusb-creator.git)
and a [[release process|release_process/liveusb-creator]].

<a id="tails-greeter"></a>

tails-greeter
=============

Tails Greeter is the set of dialogs that allows to define [[startup
options|/doc/first_steps/startup_options#tails_greeter]].

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails/tails-greeter.git

Developers with write access to the repositories should instead:

	git clone git@git.immerda.ch:tails/tails-greeter.git

We have a Gitweb available for [tails-greeter](http://git.immerda.ch/?p=tails/tails-greeter.git)
and a [[release process|release_process/tails-greeter]].

<a id="tails-iuk"></a>

tails-iuk
=========

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails/iuk.git

Developers with write access to the repositories should instead:

	git clone git@git.immerda.ch:tails/iuk.git

We have a Gitweb available for [tails-greeter](http://git.immerda.ch/?p=tails/iuk.git).

<a id="tails-persistence-setup"></a>

tails-persistence-setup
=======================

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails/persistence-setup.git

Developers with write access to the repositories should instead:

	git clone 'git@git.immerda.ch:tails/persistence-setup.git'

We have a Gitweb available for [tails-persistence-setup](http://git.immerda.ch/?p=tails/persistence-setup.git)
and a [[release process|release_process/persistence-setup]].

Torbutton
=========

Anyone can check it out like this:

	gbp-clone --no-pristine-tar git://git.immerda.ch/tails/torbutton.git

Developers with write access to the repositories should instead:

	gbp-clone --no-pristine-tar 'git@git.immerda.ch:tails/torbutton.git'

We have a Gitweb available for [Torbutton](http://git.immerda.ch/?p=tails/torbutton.git)
and a [[release process|release_process/Torbutton]].

Vidalia
=======

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails_vidalia.git

Developers with write access to the repositories should instead:

	git clone 'ssh://git@git.immerda.ch/tails_vidalia.git'

We have a Gitweb available for [our custom
Vidalia](http://git.immerda.ch/?p=tails_vidalia.git).

FireGPG
=======

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails/firegpg.git

Developers with write access to the repositories should instead:

	git clone 'ssh://git@git.immerda.ch/tails/firegpg.git'

We have a Gitweb available for [our custom
FireGPG](http://git.immerda.ch/?p=tails/firegpg.git).

htp
===

Anyone can check it out like this:

	git clone git://git.immerda.ch/tails_htp.git

Developers with write access to the repositories should instead:

	git clone ssh://git@git.immerda.ch/tails_htp.git

We have a Gitweb available for [our custom
htp](http://git.immerda.ch/?p=tails_htp.git).

icedove
=======

Anyone can check it out like this:

	git clone git://labs.riseup.net/tails_icedove.git

Developers with write access to the repositories should instead:

	git clone gitosis@labs.riseup.net:tails_icedove.git

iceweasel
=========

Anyone can check it out like this:

	git clone git://labs.riseup.net/tails_iceweasel.git

Developers with write access to the repositories should instead:

	git clone gitosis@labs.riseup.net:tails_iceweasel.git

<a id="whisperback"></a>

WhisperBack
===========

Whisperback allows to [[report bugs|/doc/first_steps/bug_reporting]] from
inside Tails.

- Git: `git://git.immerda.ch/whisperback.git`
- Gitweb: <http://git.immerda.ch/?p=whisperback.git>

Puppet modules
==============

Those who have SSH access to these repositories must configure their
SSH client a bit, e.g.:

	Host puppet.git.tails.boum.org
		HostName d53ykjpeekuikgoq.onion
		ProxyCommand torsocks monkeysphere ssh-proxycommand %h %p

tails
-----

This is the main *public* Puppet module to manage Tails infrastructure,
including classes such as `tails::reprepro` and `tails::whisperback::relay`.

Anyone can check it out like this:

	git clone git://git.puppet.tails.boum.org/puppet-tails

Developers with write access to the repositories should instead:

	git clone gitolite@git.puppet.tails.boum.org:puppet-tails

tails_lizard_manifests
----------------------

Developers with access to the APT secrets can check it out like this:

	git clone gitolite@git.puppet.tails.boum.org:puppet-lizard-manifests

tails_secrets_apt
-----------------

Developers with access to the APT secrets can check it out like this:

	git clone gitolite@git.puppet.tails.boum.org:puppet-tails_secrets_apt

tails_secrets_whisperback
-------------------------

Developers with access to the WhisperBack secrets can check it out like this:

	git clone gitolite@git.puppet.tails.boum.org:puppet-tails_secrets_whisperback

New repository
==============

1. Get Git hosting space somewhere nice.
2. Add a section to this page.
3. Register a `tails_NEWREPO` mirror repository at
   [repo.or.cz](http://repo.or.cz/), and configure it to notify the
   `TAILS` project at cia.vc, so that we get IRC notifications
   of commits.
4. Share the repo.or.cz admin password with the other Tails
   core developers.

Caution!
========

If you want to commit patches that may be published later, you might
want to anonymize them a bit; to do so, run the following commands
in every of your local clones' directories:

	git config user.name 'Tails developers'
	git config user.email amnesia@boum.org

If you intend to prepare Tails releases, you'll also need to make
the development team signing key the default one for Git tags:

	git config user.signingkey 1202821CBE2CD9C1