source: trunk/doc/readme.txt @ 221

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

Tried to improve description on what is calculated.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.9 KB
Line 
1$Id: readme.txt 189 2006-09-06 12:41:27Z jari $
2
3======================================================================
4Copyright (C) 2005 Jari Häkkinen
5Copyright (C) 2006 Jari Häkkinen, Peter Johansson
6
7This file is part of svndigest, http://lev.thep.lu.se/trac/svndigest
8
9svndigest is free software; you can redistribute it and/or modify it
10under the terms of the GNU General Public License as published by the
11Free Software Foundation; either version 2 of the License, or (at your
12option) any later version.
13
14svndigest is distributed in the hope that it will be useful, but
15WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
22USA.
23======================================================================
24
25
26svndigest traverses a directory structure (controlled by subversion)
27and calculates developer statistics for all subversion controlled
28entries. The result is written to a sub-directory of a user
29specifiable target directory (default is the current working
30directory).
31
32To understand what statistics is calculated by svndigest this
33definition is needed: The developer who made the latest change to a
34line still in use in the latest revision, is considered as the
35contributor of that line regardless of who actually originally created
36that line.
37
38For each developer svndigest calculates the number of contributed
39lines in the latest (checked out) revision. Svndigest calculates for
40each revision, by checking when each line was last changed, how many
41lines each developer had contributed at that specific revision and
42still are in use. svndigest separates between different types of
43lines: line of code, line of comment, and empty lines.
44
45The separation between types of lines is designed to support C++ style
46line comments like
47
48// blah blah
49
50with two or more slashes in front of them, and C style block comments like
51
52/*
53 * blah blah
54 */
55
56with zero or more stars at the beginning of every line. A line is
57consider to be a line of code, if it contains non-whitespace
58characters being neither inside a C style block nor after a C++ style
59line comment start ('//'). In case the line is not a line of code, it
60is considered as a line of comment if it contains alphanumeric
61characters (see isalnum). Remaining lines are consider empty, in other
62words, lines like: '////////////' or '/*' are considered as empty.
63
64There are many different types of files and for many file types it
65does not make sense to define lines. Source code, documentation, and
66other human readable files can be treated in single line basis whereas
67symbolic links and binary files cannot. svndigest treats binary files
68as zero-line files, whereas symbolic links are treated as one-line
69files. There is a possibility to exclude files from the statistics, the
70use of the property svndigest:ignore.
71
72Sometimes large test files and XML files are added to the repository
73that should not really be counted in the statistics. This is solved
74with the svndigest:ignore property. Files with this property are
75excluded from statistics. Setting the svndigest:ignore property to a
76directory will exclude all siblings to that directory from svndigest
77treatment.
78
79svndigest requires the subversion repository to be checked out before
80analysis, i.e., svndigest will not run directly against a repository,
81and up to date with the repository.
82
83
84The current flow of the program is.
85
86i) Check that we are working with a WC in subversion control.
87
88ii) Build the requested directory structure ignoring not subversion
89   controlled items. During the directory structure creation a check
90   is made that the WC is up to date with the repository.
91
92iii) Walk through the directory structure and calculate statistics for
93   each entry.
94
95iv) Create the plots and HTML presentation.
Note: See TracBrowser for help on using the repository browser.