source: trunk/README.developer @ 693

Last change on this file since 693 was 693, checked in by Jari Häkkinen, 13 years ago

Fixes #339. Change to GPLv3.

  • 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.5 KB
RevLine 
[84]1$Id: README.developer 693 2008-09-11 20:42:56Z jari $
[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
[560]11[http://cbbp.thep.lu.se/~jari/documents/c++_coding_guidelines/index.html C++ coding guidelines].
[394]12
13
14=== Subversion usage ===
15
16Commits should be minimalistic and the projects should always compile
[442]17(`make` and `make check`) when someone makes a clean checkout. There is
[394]18a short introduction to subversion and its usage available as
[560]19[http://cbbp.thep.lu.se/~jari/documents/subversion_guidelines/index.html Subversion guidelines].
[394]20We follow these guidelines.
21
22
[481]23=== bootstrap and autoreconf ===
[387]24
[481]25At first checkout from the repository you must run the bootstrapping
26utility
[338]27
28  `./bootstrap`
29
[481]30to setup autoconf files. To push subsequent changes of this file into
31the build scripts you run
[338]32
[481]33   `autoreconf`
[394]34
[481]35
[338]36=== configure ===
37
[387]38Run the generated configure script with
39
[555]40  `./configure --enable-debug`
[338]41
42The option flag `--enable-debug` turns on debug options (e.g. enables
[547]43assertions).
[338]44
[394]45
46=== Testing ===
47
48Test programs should be created and added to the `make check`
49execution. Always check that the test runs before committing code to
50the repository, i.e., run `make check`.
51
52There is a test repository in source:trunk/test/repo that is a part of
53the svndigest repository. The logic behind this is that it is nice to
54have a common test repository that can be used off-line. Changes to
55the repository are usually made to create new test cases and it is
56important that these changes are committed to svndigest repository as
57well. All changes to the test repository are not automatically
58propagated to the svndigest repository and it is important that some
59files created in the test repository are manually added to the
60svndigest repository. Assuming that `make check` is run before a
61commit, a warning is generated if the test repository is inconsistent
62with the svndigest repository. There will be a diagnostic message and
63a resolution hint, however the developer must examine and resolve the
64problem manually.
65
66The problem is simply that the file source:trunk/test/repo/db/current
67is changed compared to the svndigest repository. The `current` file
68indicates a specific number of change sets within the test repository
69and the directories source:trunk/test/repo/db/revs and
70source:trunk/test/repo/db/revprops contains a matching number of
71change sets. However, the change sets added to the test repository are
72not automatically added to the svndigest repository, therefore the new
73files in the `revs` and `revprops` directories must be added manually
74to the svndigest repository.
75
76There is also a race condition when developers make changes to the
77test repository simultaneously: It is easy to create severe conflicts
[583]78in the test repository. Imaging the case when two developers add test
[394]79commits to the test repository, and then tries to add these to the
80svndigest repository. Since there are different versions of the same
81test repository revisions, the second developer committing to the
82svndigest will get messages about files being in the way. This is just
83one situation with possible conflicts. This conflict is of course
84resolved by the second developer having to throw away his changes and
85redo them after a new checkout of the test repository.
86
87The take home message is that developers should communicate with each
88other when changing the test repository in order to avoid to large
89repository conflicts. AND read the output of `make check`.
90
91
[494]92=== Output file structure ===
93
94A directory reflecting the parsed directory is generated for each
95combination of StatsType, Author, and LineType, which is located in
[496]96`<TARGET>/<ROOT>/StatsType/Author/LineType/`. Author may be, on top of
97each author in the repository, a directory ''all'' that is a sum over
98all Authors. In same fashion LineType may be any of the three
99linetypes but may also ''total'', which a sum over all linetypes. In
100each `<TARGET>/<ROOT>/StatsType` there are directories
101`images/LineType` that contain a structure reflecting the parsed
102directory with images for every combination of File, LineType, and
103StatsType. Images for different Authors are identical and therefore
104shared between authors.
[494]105
106
[338]107=== Create a distribution ===
[387]108
[338]109Create a distribution package with `make dist`. Remember to test
110the package with `make distcheck`. If required packages are installed
111in non-standard locations you need to pass this information to
112`distcheck`. This is done by using the variable
113DISTCHECK_CONFIGURE_FLAGS as
114
[499]115   `DISTCHECK_CONFIGURE_FLAGS="[OPTION]..." make distcheck`
[338]116
117Usually you need to set DISTCHECK_CONFIGURE_FLAGS to whatever options
[555]118you pass to configure.
[338]119
120
[394]121== Releasing ==
[338]122
[687]123See http://dev.thep.lu.se/svndigest/wiki/ReleaseProcedure
[394]124
125
[338]126-------------------------------------------------------------------------
127{{{
[408]128Copyright (C) 2005, 2006 Jari Häkkinen
[394]129Copyright (C) 2007 Jari Häkkinen, Peter Johansson
[547]130Copyright (C) 2008 Peter Johansson
[84]131
[687]132This file is part of svndigest, http://dev.thep.lu.se/svndigest
[84]133
[149]134svndigest is free software; you can redistribute it and/or modify it
[84]135under the terms of the GNU General Public License as published by the
[693]136Free Software Foundation; either version 3 of the License, or (at your
[84]137option) any later version.
138
[149]139svndigest is distributed in the hope that it will be useful, but
140WITHOUT ANY WARRANTY; without even the implied warranty of
141MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
142General Public License for more details.
[84]143
144You should have received a copy of the GNU General Public License
[693]145along with svndigest. If not, see <http://www.gnu.org/licenses/>.
[338]146}}}
Note: See TracBrowser for help on using the repository browser.