source: trunk/README.developer @ 874

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

merging release 0.7. Delta /tags/0.7 - /branches/0.7-stable@848

Due to problems with 'svn merge' (skipping added files?), I've copied
added files manually.

  • 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.6 KB
[84]1$Id: README.developer 874 2009-11-22 22:53:21Z peter $
[338]3= Developer Information =
5This file contains developer specific information.
8=== Coding style ===
10Developers should follow the coding style outlined in the
[560]11[ C++ coding guidelines].
14=== Subversion usage ===
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[ Subversion guidelines].
[394]20We follow these guidelines.
[724]23=== Requirements ===
25To build from a subversion checkout, you will need Autotools. More
[776]26specifically Automake 1.10 (or later) and Autoconf 2.61 (or later). To
[724]27build man page you will need help2man.
[481]29=== bootstrap and autoreconf ===
[481]31At first checkout from the repository you must run the bootstrapping
34  `./bootstrap`
[481]36to setup autoconf files. To push subsequent changes of this file into
37the build scripts you run
[481]39   `autoreconf`
[338]42=== configure ===
[387]44Run the generated configure script with
[555]46  `./configure --enable-debug`
48The option flag `--enable-debug` turns on debug options (e.g. enables
52=== Testing ===
54Test programs should be created and added to the `make check`
55execution. Always check that the test runs before committing code to
56the repository, i.e., run `make check`.
58There is a test repository in source:trunk/test/repo that is a part of
59the svndigest repository. The logic behind this is that it is nice to
60have a common test repository that can be used off-line. Changes to
61the repository are usually made to create new test cases and it is
62important that these changes are committed to svndigest repository as
63well. All changes to the test repository are not automatically
64propagated to the svndigest repository and it is important that some
65files created in the test repository are manually added to the
66svndigest repository. Assuming that `make check` is run before a
67commit, a warning is generated if the test repository is inconsistent
68with the svndigest repository. There will be a diagnostic message and
69a resolution hint, however the developer must examine and resolve the
70problem manually.
72The problem is simply that the file source:trunk/test/repo/db/current
73is changed compared to the svndigest repository. The `current` file
74indicates a specific number of change sets within the test repository
75and the directories source:trunk/test/repo/db/revs and
76source:trunk/test/repo/db/revprops contains a matching number of
77change sets. However, the change sets added to the test repository are
78not automatically added to the svndigest repository, therefore the new
79files in the `revs` and `revprops` directories must be added manually
80to the svndigest repository.
82There is also a race condition when developers make changes to the
83test repository simultaneously: It is easy to create severe conflicts
[583]84in the test repository. Imaging the case when two developers add test
[394]85commits to the test repository, and then tries to add these to the
86svndigest repository. Since there are different versions of the same
87test repository revisions, the second developer committing to the
88svndigest will get messages about files being in the way. This is just
89one situation with possible conflicts. This conflict is of course
90resolved by the second developer having to throw away his changes and
91redo them after a new checkout of the test repository.
93The take home message is that developers should communicate with each
94other when changing the test repository in order to avoid to large
95repository conflicts. AND read the output of `make check`.
[825]98=== yat library ===
100Directory `lib/yat/` contains some files from the yat library. These
101files are not owned by svndigest and should not (if possible) be
102edited here. For more details please see `lib/yat/README`.
[494]104=== Output file structure ===
106A directory reflecting the parsed directory is generated for each
107combination of StatsType, Author, and LineType, which is located in
[496]108`<TARGET>/<ROOT>/StatsType/Author/LineType/`. Author may be, on top of
109each author in the repository, a directory ''all'' that is a sum over
110all Authors. In same fashion LineType may be any of the three
111linetypes but may also ''total'', which a sum over all linetypes. In
112each `<TARGET>/<ROOT>/StatsType` there are directories
113`images/LineType` that contain a structure reflecting the parsed
114directory with images for every combination of File, LineType, and
115StatsType. Images for different Authors are identical and therefore
116shared between authors.
[874]118== Design and Motivation ==
[874]120Please refer to source:trunk/doc/HACKING for a list of design
121decisions we try to follow.
[394]123== Releasing ==
[408]130Copyright (C) 2005, 2006 Jari Häkkinen
[847]131Copyright (C) 2007, 2008 Jari Häkkinen, Peter Johansson
132Copyright (C) 2009 Peter Johansson
[687]134This file is part of svndigest,
[149]136svndigest is free software; you can redistribute it and/or modify it
[84]137under the terms of the GNU General Public License as published by the
[693]138Free Software Foundation; either version 3 of the License, or (at your
[84]139option) any later version.
[149]141svndigest is distributed in the hope that it will be useful, but
142WITHOUT ANY WARRANTY; without even the implied warranty of
144General Public License for more details.
146You should have received a copy of the GNU General Public License
[693]147along with svndigest. If not, see <>.
Note: See TracBrowser for help on using the repository browser.