source: branches/0.6-stable/README.developer @ 767

Last change on this file since 767 was 731, checked in by Peter Johansson, 13 years ago

update copyright statements

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-trac-wiki
File size: 5.2 KB
RevLine 
[84]1$Id: README.developer 731 2008-12-15 19:03:04Z peter $
[26]2
[338]3= Developer Information =
4
5This file contains developer specific information.
6
[394]7
8=== Coding style ===
9
10Developers should follow the coding style outlined in the
11[http://www.thep.lu.se/~jari/documents/c++_coding_guidelines/index.html C++ coding guidelines].
12
13
14=== Subversion usage ===
15
16Commits should be minimalistic and the projects should always compile
17(`make` and `make test`) when someone makes a clean checkout. There is
18a short introduction to subversion and its usage available as
19[http://www.thep.lu.se/~jari/documents/subversion_guidelines/index.html Subversion guidelines].
20We follow these guidelines.
21
22
[338]23=== bootstrap ===
[387]24
25At first checkout from the repository, or when `configure.ac` is
[338]26changed, you must run
27
28  `./bootstrap`
29
30to setup autoconf files.
31
[394]32
[338]33=== configure ===
34
[387]35Run the generated configure script with
36
[338]37  `./configure --enable-debug --enable-wctests`
38
39The option flag `--enable-debug` turns on debug options (e.g. enables
40assertions). The option flag `--enable-wctests` turns on some
41additional tests. All tests are not enabled by default since some of
42the tests depend on being run from a subversion WC.
43
[394]44
45=== Testing ===
46
47Test programs should be created and added to the `make check`
48execution. Always check that the test runs before committing code to
49the repository, i.e., run `make check`.
50
51There is a test repository in source:trunk/test/repo that is a part of
52the svndigest repository. The logic behind this is that it is nice to
53have a common test repository that can be used off-line. Changes to
54the repository are usually made to create new test cases and it is
55important that these changes are committed to svndigest repository as
56well. All changes to the test repository are not automatically
57propagated to the svndigest repository and it is important that some
58files created in the test repository are manually added to the
59svndigest repository. Assuming that `make check` is run before a
60commit, a warning is generated if the test repository is inconsistent
61with the svndigest repository. There will be a diagnostic message and
62a resolution hint, however the developer must examine and resolve the
63problem manually.
64
65The problem is simply that the file source:trunk/test/repo/db/current
66is changed compared to the svndigest repository. The `current` file
67indicates a specific number of change sets within the test repository
68and the directories source:trunk/test/repo/db/revs and
69source:trunk/test/repo/db/revprops contains a matching number of
70change sets. However, the change sets added to the test repository are
71not automatically added to the svndigest repository, therefore the new
72files in the `revs` and `revprops` directories must be added manually
73to the svndigest repository.
74
75There is also a race condition when developers make changes to the
76test repository simultaneously: It is easy to create severe conflicts
77in the test repository. Imaging the case when two developers adds test
78commits to the test repository, and then tries to add these to the
79svndigest repository. Since there are different versions of the same
80test repository revisions, the second developer committing to the
81svndigest will get messages about files being in the way. This is just
82one situation with possible conflicts. This conflict is of course
83resolved by the second developer having to throw away his changes and
84redo them after a new checkout of the test repository.
85
86The take home message is that developers should communicate with each
87other when changing the test repository in order to avoid to large
88repository conflicts. AND read the output of `make check`.
89
90
[338]91=== Create a distribution ===
[387]92
[338]93Create a distribution package with `make dist`. Remember to test
94the package with `make distcheck`. If required packages are installed
95in non-standard locations you need to pass this information to
96`distcheck`. This is done by using the variable
97DISTCHECK_CONFIGURE_FLAGS as
98
[409]99   `DISTCHECK_CONFIGURE_FLAGS="--with-apr=/usr/local/apr" make distcheck`
[338]100
101Usually you need to set DISTCHECK_CONFIGURE_FLAGS to whatever options
102you pass to configure with the exception of `--enable-wctests`.
[387]103Passing `--enable-wctests` to distcheck will always make the `make` to
[388]104fail because a distribution does not contain all files needed for WC
[387]105tests.
[338]106
107
[394]108== Releasing ==
[338]109
[677]110See http://dev.thep.lu.se/svndigest/wiki/ReleaseProcedure
[394]111
112
[338]113-------------------------------------------------------------------------
114{{{
[408]115Copyright (C) 2005, 2006 Jari Häkkinen
[394]116Copyright (C) 2007 Jari Häkkinen, Peter Johansson
[731]117Copyright (C) 2008 Peter Johansson
[84]118
[677]119This file is part of svndigest, http://dev.thep.lu.se/svndigest
[84]120
[149]121svndigest is free software; you can redistribute it and/or modify it
[84]122under the terms of the GNU General Public License as published by the
123Free Software Foundation; either version 2 of the License, or (at your
124option) any later version.
125
[149]126svndigest is distributed in the hope that it will be useful, but
127WITHOUT ANY WARRANTY; without even the implied warranty of
128MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
129General Public License for more details.
[84]130
131You should have received a copy of the GNU General Public License
132along with this program; if not, write to the Free Software
133Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
134USA.
135
[338]136}}}
Note: See TracBrowser for help on using the repository browser.