source: trunk/README.developer @ 540

Last change on this file since 540 was 519, checked in by Jari Häkkinen, 15 years ago

trac moved to new location.

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