aboutsummaryrefslogtreecommitdiffstats
path: root/doc/contrib.txt
blob: 2ad4207470f936f07cc422578eeafbf476221e51 (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

Contributing
========================================

Contributions to the library are most certainly welcome. To increase
the chances your patch will actually make it into releases in a timely
fashion, here are some guidelines for patch submission.

Getting The Latest Sources
----------------------------------------

Botan's development occurs using a distributed version control system
called `Monotone <http://www.monotone.ca>`_.

The main branch of development occurs on the branch named
``net.randombit.botan``; this is probably the branch you want,
especially if you are planning on making major changes. To
download that branch and set up a new workspace, run::

   $ mtn db init --db=botan.mtn
   $ mtn pull --db=botan.mtn randombit.net 'net.randombit.botan'
   [...]
   $ mtn checkout --db=botan.mtn --branch=net.randombit.botan
   [...]

By default the ``checkout`` command will place the workspace in a
directory with the same name as the branch you are checking out.  If
you want a different directory name, just include it after the
``--branch`` option (you can also rename this directory at any time).

If this is the first time you've connected to the server, Monotone
will print::

  mtn: first time connecting to server randombit.net
  mtn: I'll assume it's really them, but you might want to double-check
  mtn: their key's fingerprint: 8c0b868f2247215c63c96983b1c8ca0f0f0cfd9a

The fingerprint shown above was the correct one as of September 21,
2010.

To pull further changes, from anywhere in the workspace run these
commands::

  $ mtn pull
  [...]
  $ mtn update
  [summary of changes]

The ``mtn update`` command will give you a summary of which files
changed; to view the full changelog, run ``mtn log``.

Monotone's distributed nature means you can check into your database
while continuing to merge changes made upstream. This is particularly
useful if your change is large or invasive, as you can checkpoint your
progress over time.

If you are making a large number of changes, you may want to start up
a new branch that occasionally merges against the mainline; check the
monotone documentation for details.

After you finish your changes, you can review them using ``mtn diff``
to diff against the latest official head; send the output to the
mailing list for review and inclusion.

Don't forget to update the file ``credits.txt`` with your information,
if you want to be listed as a contributor. Also, if your patch is
substantial enough to be considered copyrightable, add yourself to
``license.txt``.

Patches are best directed to the `botan-devel
<http://lists.randombit.net/mailman/listinfo/botan-devel>`_.