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