84 |
13 Mar 06 |
jari |
$Id$ |
26 |
05 Jan 06 |
jari |
2 |
|
338 |
19 May 07 |
peter |
= Developer Information = |
338 |
19 May 07 |
peter |
4 |
|
338 |
19 May 07 |
peter |
This file contains developer specific information. |
338 |
19 May 07 |
peter |
6 |
|
394 |
25 Jun 07 |
jari |
7 |
|
394 |
25 Jun 07 |
jari |
=== Coding style === |
394 |
25 Jun 07 |
jari |
9 |
|
394 |
25 Jun 07 |
jari |
Developers should follow the coding style outlined in the |
560 |
04 Mar 08 |
peter |
[http://cbbp.thep.lu.se/~jari/documents/c++_coding_guidelines/index.html C++ coding guidelines]. |
394 |
25 Jun 07 |
jari |
12 |
|
394 |
25 Jun 07 |
jari |
13 |
|
394 |
25 Jun 07 |
jari |
=== Subversion usage === |
394 |
25 Jun 07 |
jari |
15 |
|
394 |
25 Jun 07 |
jari |
Commits should be minimalistic and the projects should always compile |
1495 |
27 Aug 12 |
peter |
('make' and 'make check') when someone makes a clean checkout. There is |
394 |
25 Jun 07 |
jari |
a short introduction to subversion and its usage available as |
560 |
04 Mar 08 |
peter |
[http://cbbp.thep.lu.se/~jari/documents/subversion_guidelines/index.html Subversion guidelines]. |
394 |
25 Jun 07 |
jari |
We follow these guidelines. |
394 |
25 Jun 07 |
jari |
21 |
|
394 |
25 Jun 07 |
jari |
22 |
|
724 |
09 Dec 08 |
peter |
=== Requirements === |
724 |
09 Dec 08 |
peter |
24 |
|
724 |
09 Dec 08 |
peter |
To build from a subversion checkout, you will need Autotools. More |
1299 |
14 Nov 10 |
peter |
specifically Automake 1.11 (or later) and Autoconf 2.63 (or later). To |
724 |
09 Dec 08 |
peter |
build man page you will need help2man. |
724 |
09 Dec 08 |
peter |
28 |
|
1495 |
27 Aug 12 |
peter |
=== bootstrap and autoreconf === |
387 |
24 Jun 07 |
jari |
30 |
|
481 |
09 Oct 07 |
jari |
At first checkout from the repository you must run the bootstrapping |
481 |
09 Oct 07 |
jari |
utility |
338 |
19 May 07 |
peter |
33 |
|
1495 |
27 Aug 12 |
peter |
#> ./bootstrap |
338 |
19 May 07 |
peter |
35 |
|
338 |
19 May 07 |
peter |
36 |
|
338 |
19 May 07 |
peter |
=== configure === |
338 |
19 May 07 |
peter |
38 |
|
1495 |
27 Aug 12 |
peter |
Run the generated configure script with |
387 |
24 Jun 07 |
jari |
40 |
|
1495 |
27 Aug 12 |
peter |
#> ./configure --enable-debug |
338 |
19 May 07 |
peter |
42 |
|
1495 |
27 Aug 12 |
peter |
The option flag '--enable-debug' turns on some compiler options |
1495 |
27 Aug 12 |
peter |
appropriate for development (e.g. enables assertions). |
338 |
19 May 07 |
peter |
45 |
|
394 |
25 Jun 07 |
jari |
46 |
|
394 |
25 Jun 07 |
jari |
=== Testing === |
394 |
25 Jun 07 |
jari |
48 |
|
1495 |
27 Aug 12 |
peter |
Test programs should be created and added to the 'make check' |
394 |
25 Jun 07 |
jari |
execution. Always check that the test runs before committing code to |
1495 |
27 Aug 12 |
peter |
the repository, i.e., run 'make check'. For more details on how to run |
1495 |
27 Aug 12 |
peter |
and write tests, please refer to file 'test/README'. |
394 |
25 Jun 07 |
jari |
53 |
|
1495 |
27 Aug 12 |
peter |
There is a test repository in 'test/repo' that is a part of |
394 |
25 Jun 07 |
jari |
the svndigest repository. The logic behind this is that it is nice to |
394 |
25 Jun 07 |
jari |
have a common test repository that can be used off-line. Changes to |
394 |
25 Jun 07 |
jari |
the repository are usually made to create new test cases and it is |
394 |
25 Jun 07 |
jari |
important that these changes are committed to svndigest repository as |
394 |
25 Jun 07 |
jari |
well. All changes to the test repository are not automatically |
394 |
25 Jun 07 |
jari |
propagated to the svndigest repository and it is important that some |
394 |
25 Jun 07 |
jari |
files created in the test repository are manually added to the |
1495 |
27 Aug 12 |
peter |
svndigest repository. Assuming that 'make check' is run before a |
394 |
25 Jun 07 |
jari |
commit, a warning is generated if the test repository is inconsistent |
394 |
25 Jun 07 |
jari |
with the svndigest repository. There will be a diagnostic message and |
394 |
25 Jun 07 |
jari |
a resolution hint, however the developer must examine and resolve the |
394 |
25 Jun 07 |
jari |
problem manually. |
394 |
25 Jun 07 |
jari |
67 |
|
1495 |
27 Aug 12 |
peter |
The problem is simply that the file 'test/repo/db/current' |
1495 |
27 Aug 12 |
peter |
is changed compared to the svndigest repository. The 'current' file |
394 |
25 Jun 07 |
jari |
indicates a specific number of change sets within the test repository |
1495 |
27 Aug 12 |
peter |
and the directories 'test/repo/db/revs' and |
1495 |
27 Aug 12 |
peter |
'test/repo/db/revprops' contains a matching number of |
394 |
25 Jun 07 |
jari |
change sets. However, the change sets added to the test repository are |
394 |
25 Jun 07 |
jari |
not automatically added to the svndigest repository, therefore the new |
1495 |
27 Aug 12 |
peter |
files in the 'revs' and 'revprops' directories must be added manually |
394 |
25 Jun 07 |
jari |
to the svndigest repository. |
394 |
25 Jun 07 |
jari |
77 |
|
394 |
25 Jun 07 |
jari |
There is also a race condition when developers make changes to the |
394 |
25 Jun 07 |
jari |
test repository simultaneously: It is easy to create severe conflicts |
583 |
11 Apr 08 |
peter |
in the test repository. Imaging the case when two developers add test |
394 |
25 Jun 07 |
jari |
commits to the test repository, and then tries to add these to the |
394 |
25 Jun 07 |
jari |
svndigest repository. Since there are different versions of the same |
394 |
25 Jun 07 |
jari |
test repository revisions, the second developer committing to the |
394 |
25 Jun 07 |
jari |
svndigest will get messages about files being in the way. This is just |
394 |
25 Jun 07 |
jari |
one situation with possible conflicts. This conflict is of course |
394 |
25 Jun 07 |
jari |
resolved by the second developer having to throw away his changes and |
394 |
25 Jun 07 |
jari |
redo them after a new checkout of the test repository. |
394 |
25 Jun 07 |
jari |
88 |
|
394 |
25 Jun 07 |
jari |
The take home message is that developers should communicate with each |
394 |
25 Jun 07 |
jari |
other when changing the test repository in order to avoid to large |
1495 |
27 Aug 12 |
peter |
repository conflicts. AND read the output of 'make check'. |
394 |
25 Jun 07 |
jari |
92 |
|
394 |
25 Jun 07 |
jari |
93 |
|
825 |
26 Sep 09 |
peter |
=== yat library === |
825 |
26 Sep 09 |
peter |
95 |
|
1495 |
27 Aug 12 |
peter |
Directory 'yat/' contains some files from the yat library. These |
825 |
26 Sep 09 |
peter |
files are not owned by svndigest and should not (if possible) be |
1495 |
27 Aug 12 |
peter |
edited here. For more details please see 'yat/README'. |
825 |
26 Sep 09 |
peter |
99 |
|
494 |
14 Oct 07 |
peter |
=== Output file structure === |
494 |
14 Oct 07 |
peter |
101 |
|
494 |
14 Oct 07 |
peter |
A directory reflecting the parsed directory is generated for each |
494 |
14 Oct 07 |
peter |
combination of StatsType, Author, and LineType, which is located in |
1495 |
27 Aug 12 |
peter |
'<TARGET>/<ROOT>/StatsType/Author/LineType/'. Author may be, on top of |
1495 |
27 Aug 12 |
peter |
each author in the repository, a directory 'all' that is a sum over |
1495 |
27 Aug 12 |
peter |
all authors. In same fashion 'LineType' may be any of the three |
1495 |
27 Aug 12 |
peter |
linetypes but may also be 'total', which is a sum over all |
1495 |
27 Aug 12 |
peter |
linetypes. In each '<TARGET>/<ROOT>/StatsType' there are directories |
1495 |
27 Aug 12 |
peter |
'images/LineType' that contain a structure reflecting the parsed |
1495 |
27 Aug 12 |
peter |
directory with images for every combination of 'File', 'LineType', and |
1495 |
27 Aug 12 |
peter |
'StatsType'. Images for different authors are identical and therefore |
496 |
14 Oct 07 |
peter |
shared between authors. |
494 |
14 Oct 07 |
peter |
113 |
|
874 |
22 Nov 09 |
peter |
== Design and Motivation == |
494 |
14 Oct 07 |
peter |
115 |
|
1495 |
27 Aug 12 |
peter |
Please refer to 'doc/HACKING' for a list of design decisions we try to |
1495 |
27 Aug 12 |
peter |
follow. |
874 |
22 Nov 09 |
peter |
118 |
|
1495 |
27 Aug 12 |
peter |
= Releasing = |
338 |
19 May 07 |
peter |
120 |
|
1495 |
27 Aug 12 |
peter |
The main development is performed in the trunk branch of the |
1495 |
27 Aug 12 |
peter |
repository. A new release branch is created for each minor release |
1495 |
27 Aug 12 |
peter |
from the trunk and patch releases are snapshots of the minor release |
1495 |
27 Aug 12 |
peter |
branch. This implies that patch work is performed in the minor release |
1495 |
27 Aug 12 |
peter |
branch, and changes made release branch is transferred to the trunk |
1495 |
27 Aug 12 |
peter |
every time a new patch release is made. Remember, patch work should be |
1495 |
27 Aug 12 |
peter |
limited to bug fixes and important fixes only leaving development of |
1495 |
27 Aug 12 |
peter |
new features and designs to the trunk branch. |
394 |
25 Jun 07 |
jari |
129 |
|
1495 |
27 Aug 12 |
peter |
Releases should only be performed by an appointed member of the team, |
1495 |
27 Aug 12 |
peter |
the Release Manager. |
394 |
25 Jun 07 |
jari |
132 |
|
1495 |
27 Aug 12 |
peter |
== Release procedure == |
1495 |
27 Aug 12 |
peter |
134 |
|
1495 |
27 Aug 12 |
peter |
This section describes what to do when publishing a release. |
1495 |
27 Aug 12 |
peter |
136 |
|
1495 |
27 Aug 12 |
peter |
=== Creating a release branch === |
1495 |
27 Aug 12 |
peter |
138 |
|
1495 |
27 Aug 12 |
peter |
Once people agree that a new release branch should be made, the |
1495 |
27 Aug 12 |
peter |
Release Manager creates it with the following procedure (substitute |
1495 |
27 Aug 12 |
peter |
A.B with the version you are preparing): |
1495 |
27 Aug 12 |
peter |
142 |
|
1495 |
27 Aug 12 |
peter |
1. Mark the new minor series in 'NEWS': |
1495 |
27 Aug 12 |
peter |
144 |
|
1495 |
27 Aug 12 |
peter |
8<--- |
1495 |
27 Aug 12 |
peter |
See the end for copyrights and conditions. |
1495 |
27 Aug 12 |
peter |
147 |
|
1495 |
27 Aug 12 |
peter |
+svndigest A.B.x series from |
1495 |
27 Aug 12 |
peter |
+ http://dev.thep/lu.se/svndigest/svn/branches/A.B-stable |
1495 |
27 Aug 12 |
peter |
150 |
+ |
1495 |
27 Aug 12 |
peter |
Version A.B (released NOT YET) |
1495 |
27 Aug 12 |
peter |
8<--- |
1495 |
27 Aug 12 |
peter |
153 |
|
1495 |
27 Aug 12 |
peter |
commit the changes with |
1495 |
27 Aug 12 |
peter |
155 |
|
1495 |
27 Aug 12 |
peter |
#> svn ci -m "preparing branch A.B-stable" |
1495 |
27 Aug 12 |
peter |
157 |
|
1495 |
27 Aug 12 |
peter |
2. Update copyright statements with commands |
1495 |
27 Aug 12 |
peter |
159 |
|
1636 |
30 Mar 23 |
peter |
#> make copyright |
1495 |
27 Aug 12 |
peter |
161 |
|
1495 |
27 Aug 12 |
peter |
Examine the updates and commit changes with |
1495 |
27 Aug 12 |
peter |
163 |
|
1495 |
27 Aug 12 |
peter |
#> svn ci -m "updating copyright statements" |
1495 |
27 Aug 12 |
peter |
165 |
|
1495 |
27 Aug 12 |
peter |
3. Create a new minor branch using a one liner like |
1495 |
27 Aug 12 |
peter |
167 |
|
1495 |
27 Aug 12 |
peter |
#> make svn-stable-branch |
1495 |
27 Aug 12 |
peter |
169 |
|
1495 |
27 Aug 12 |
peter |
4. Prepare the trunk for the next minor release: |
1495 |
27 Aug 12 |
peter |
171 |
|
1495 |
27 Aug 12 |
peter |
a) Update version number in 'm4/version.m4'. |
1495 |
27 Aug 12 |
peter |
MY_VERSION_early([A], [B+1], [0], [true]) |
1495 |
27 Aug 12 |
peter |
174 |
|
1495 |
27 Aug 12 |
peter |
b) Add an entry in 'NEWS' |
1495 |
27 Aug 12 |
peter |
176 |
|
1495 |
27 Aug 12 |
peter |
version A.[B+1] (released NOT YET) |
1495 |
27 Aug 12 |
peter |
178 |
|
1495 |
27 Aug 12 |
peter |
The date is set when version A.[B+1] is released. |
1495 |
27 Aug 12 |
peter |
180 |
|
1495 |
27 Aug 12 |
peter |
c) Commit changes to the repository |
1495 |
27 Aug 12 |
peter |
182 |
|
1495 |
27 Aug 12 |
peter |
#> svn ci -m "Bumping VERSION to A.[B+1]" |
1495 |
27 Aug 12 |
peter |
184 |
|
1495 |
27 Aug 12 |
peter |
185 |
|
1495 |
27 Aug 12 |
peter |
=== Rolling a release === |
1495 |
27 Aug 12 |
peter |
187 |
|
1495 |
27 Aug 12 |
peter |
This section describes how to release a new version. If this is a |
1523 |
28 Sep 12 |
peter |
minor release (C=0), replace A.B.C with A.B. Before you start, make |
1670 |
05 Jul 23 |
peter |
sure you have write access to sourceforge page, that you have git |
1670 |
05 Jul 23 |
peter |
installed, and that you can create checksum files, i.e., you need |
1670 |
05 Jul 23 |
peter |
'openssl' and 'md5'/'md5sum'. |
1495 |
27 Aug 12 |
peter |
193 |
|
1495 |
27 Aug 12 |
peter |
1. Create a new milestone for next patch release A.B.[C+1]. |
1495 |
27 Aug 12 |
peter |
195 |
|
1495 |
27 Aug 12 |
peter |
2. Update version number in 'm4/version.m4'. Locate and change the below line |
1495 |
27 Aug 12 |
peter |
197 |
--- |
1495 |
27 Aug 12 |
peter |
MY_VERSION_early([A], [B], [C], [false]) |
1495 |
27 Aug 12 |
peter |
199 |
--- |
1495 |
27 Aug 12 |
peter |
200 |
|
1495 |
27 Aug 12 |
peter |
3. Update file 'THANKS' |
1495 |
27 Aug 12 |
peter |
202 |
|
1495 |
27 Aug 12 |
peter |
4. Make sure that the items in 'NEWS' cover the new features of the |
1495 |
27 Aug 12 |
peter |
release. Set the date for the new release: |
1495 |
27 Aug 12 |
peter |
205 |
|
1523 |
28 Sep 12 |
peter |
version A.B.C (released 26 June 2007) |
1495 |
27 Aug 12 |
peter |
207 |
|
1495 |
27 Aug 12 |
peter |
5. Commit changes to the repository |
1495 |
27 Aug 12 |
peter |
209 |
|
1495 |
27 Aug 12 |
peter |
#> svn ci -m "Preparing release A.B.C" |
1495 |
27 Aug 12 |
peter |
211 |
|
1495 |
27 Aug 12 |
peter |
6. Update copyright statements with commands |
1495 |
27 Aug 12 |
peter |
213 |
|
1652 |
14 Jun 23 |
peter |
#> make copyright |
1495 |
27 Aug 12 |
peter |
215 |
|
1495 |
27 Aug 12 |
peter |
Examine the updates and commit changes with |
1495 |
27 Aug 12 |
peter |
217 |
|
1495 |
27 Aug 12 |
peter |
#> svn ci -m "updating copyright statements" |
1495 |
27 Aug 12 |
peter |
219 |
|
1495 |
27 Aug 12 |
peter |
7. Issue 'svn update' to make entire wc to be in revision 'HEAD'. |
1495 |
27 Aug 12 |
peter |
Needless to say, make sure that the program is in a state to be |
1495 |
27 Aug 12 |
peter |
released; make sure that all the tests pass, test the distribution |
1495 |
27 Aug 12 |
peter |
package, and perform all other release tests you think is |
1495 |
27 Aug 12 |
peter |
appropriate. Run: |
1495 |
27 Aug 12 |
peter |
225 |
|
1652 |
14 Jun 23 |
peter |
#> make release-tag-upload |
1495 |
27 Aug 12 |
peter |
227 |
|
1495 |
27 Aug 12 |
peter |
228 |
|
1495 |
27 Aug 12 |
peter |
8. Update wiki first page under section 'Latest Release'. |
1495 |
27 Aug 12 |
peter |
230 |
|
1495 |
27 Aug 12 |
peter |
a) Update version to A.B.C. |
1495 |
27 Aug 12 |
peter |
232 |
|
1495 |
27 Aug 12 |
peter |
b) Update link to NEWS file to 'source:tags/A.B.C/NEWS' |
1495 |
27 Aug 12 |
peter |
234 |
|
1495 |
27 Aug 12 |
peter |
c) If this is a minor release (C=0) update links to |
1495 |
27 Aug 12 |
peter |
'source:branches/A.B-stable/doc/readme.txt', |
1495 |
27 Aug 12 |
peter |
'source:branches/A.B-stable/README'. |
1495 |
27 Aug 12 |
peter |
238 |
|
1495 |
27 Aug 12 |
peter |
9. Update SubversionCheckout |
1495 |
27 Aug 12 |
peter |
240 |
|
1495 |
27 Aug 12 |
peter |
a) In section 'svndigest latest release' update link to |
1495 |
27 Aug 12 |
peter |
[source:tags/A.B.C/NEWS NEWS] and modify the svn commands to |
1495 |
27 Aug 12 |
peter |
243 |
|
1495 |
27 Aug 12 |
peter |
svn checkout http://dev.thep.lu.se/svndigest/svn/tags/A.B.C svndigest-A.B.C |
1495 |
27 Aug 12 |
peter |
245 |
|
1495 |
27 Aug 12 |
peter |
svn switch http://dev.thep.lu.se/svndigest/svn/tags/A.B.C |
1495 |
27 Aug 12 |
peter |
247 |
|
1495 |
27 Aug 12 |
peter |
b) If this is a minor release (C=0) update link in 'svndigest stable' to |
1495 |
27 Aug 12 |
peter |
[source:branch/A.B-stable/NEWS NEWS] and modify the svn commands to |
1495 |
27 Aug 12 |
peter |
250 |
|
1495 |
27 Aug 12 |
peter |
svn co http://dev.thep.lu.se/svndigest/svn/branches/A.B-stable svndigest-A.B |
1495 |
27 Aug 12 |
peter |
252 |
|
1495 |
27 Aug 12 |
peter |
svn switch ^/branches/A.B-stable |
1495 |
27 Aug 12 |
peter |
254 |
|
1495 |
27 Aug 12 |
peter |
10. Add a version A.B.C using trac-admin tool |
1495 |
27 Aug 12 |
peter |
256 |
|
1495 |
27 Aug 12 |
peter |
11. Close milestone A.B.C |
1495 |
27 Aug 12 |
peter |
258 |
|
1495 |
27 Aug 12 |
peter |
12. Merge the release into trunk. Go to a pristine trunk WC and |
1495 |
27 Aug 12 |
peter |
260 |
|
1495 |
27 Aug 12 |
peter |
#> cd /path/to/svndigest-trunk |
1495 |
27 Aug 12 |
peter |
#> svn update |
1495 |
27 Aug 12 |
peter |
#> svn diff |
1523 |
28 Sep 12 |
peter |
#> svn merge ^/branches/A.B-stable |
1495 |
27 Aug 12 |
peter |
265 |
|
1495 |
27 Aug 12 |
peter |
Resolve all conflicts. Run tests and perform all other appropriate |
1495 |
27 Aug 12 |
peter |
tests to make sure that the merge does not create havoc. Typically |
1495 |
27 Aug 12 |
peter |
changes in 'm4/version.m4' are problematic so check this file extra |
1495 |
27 Aug 12 |
peter |
carefully. |
1495 |
27 Aug 12 |
peter |
270 |
|
1495 |
27 Aug 12 |
peter |
Commit changes to the trunk branch. |
1495 |
27 Aug 12 |
peter |
272 |
|
1495 |
27 Aug 12 |
peter |
#> svn commit -m "Merged release A.B.C to the trunk." |
1495 |
27 Aug 12 |
peter |
274 |
|
1495 |
27 Aug 12 |
peter |
13. Prepare stable branch for future release |
1495 |
27 Aug 12 |
peter |
276 |
|
1495 |
27 Aug 12 |
peter |
a) Update version number in 'version.m4' in line |
1495 |
27 Aug 12 |
peter |
278 |
|
1495 |
27 Aug 12 |
peter |
MY_VERSION_early([A], [B], [C+1], [true]) |
1495 |
27 Aug 12 |
peter |
280 |
|
1495 |
27 Aug 12 |
peter |
b) Add an entry in 'NEWS' |
1495 |
27 Aug 12 |
peter |
282 |
|
1495 |
27 Aug 12 |
peter |
8<--- |
1495 |
27 Aug 12 |
peter |
version A.B.[C+1] (released NOT YET) |
1495 |
27 Aug 12 |
peter |
8<--- |
1523 |
28 Sep 12 |
peter |
The date is set when version A.B.[C+1] is released. |
1495 |
27 Aug 12 |
peter |
287 |
|
1495 |
27 Aug 12 |
peter |
c) Commit changes to the repository, |
1495 |
27 Aug 12 |
peter |
289 |
|
1495 |
27 Aug 12 |
peter |
#> svn ci -m "Bumping version" |
1495 |
27 Aug 12 |
peter |
291 |
|
1495 |
27 Aug 12 |
peter |
14. Send an announcement to svndigest-users@lists.sourceforge.net |
1582 |
09 Mar 15 |
peter |
using 'announcement.txt' as template. |
1495 |
27 Aug 12 |
peter |
294 |
|
1495 |
27 Aug 12 |
peter |
15. Create a macport ticket, https://trac.macports.org/newticket, with |
1495 |
27 Aug 12 |
peter |
summary='svndigest A.B.C', |
1495 |
27 Aug 12 |
peter |
type=update, |
1495 |
27 Aug 12 |
peter |
keywords="haspatch maintainer", |
1495 |
27 Aug 12 |
peter |
and port=svndigest. |
1495 |
27 Aug 12 |
peter |
Attach 'Portfile.diff' to newly created ticket. |
1495 |
27 Aug 12 |
peter |
301 |
|
1495 |
27 Aug 12 |
peter |
302 |
|
1495 |
27 Aug 12 |
peter |
303 |
-------------- |
978 |
12 Dec 09 |
peter |
Copyright (C) 2005, 2006 Jari Häkkinen |
978 |
12 Dec 09 |
peter |
Copyright (C) 2007, 2008 Jari Häkkinen, Peter Johansson |
1637 |
30 Mar 23 |
peter |
Copyright (C) 2009, 2012, 2015, 2023 Peter Johansson |
84 |
13 Mar 06 |
jari |
307 |
|
687 |
04 Aug 08 |
peter |
This file is part of svndigest, http://dev.thep.lu.se/svndigest |
84 |
13 Mar 06 |
jari |
309 |
|
149 |
12 Aug 06 |
jari |
svndigest is free software; you can redistribute it and/or modify it |
84 |
13 Mar 06 |
jari |
under the terms of the GNU General Public License as published by the |
693 |
11 Sep 08 |
jari |
Free Software Foundation; either version 3 of the License, or (at your |
84 |
13 Mar 06 |
jari |
option) any later version. |
84 |
13 Mar 06 |
jari |
314 |
|
149 |
12 Aug 06 |
jari |
svndigest is distributed in the hope that it will be useful, but |
149 |
12 Aug 06 |
jari |
WITHOUT ANY WARRANTY; without even the implied warranty of |
149 |
12 Aug 06 |
jari |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
149 |
12 Aug 06 |
jari |
General Public License for more details. |
84 |
13 Mar 06 |
jari |
319 |
|
84 |
13 Mar 06 |
jari |
You should have received a copy of the GNU General Public License |
693 |
11 Sep 08 |
jari |
along with svndigest. If not, see <http://www.gnu.org/licenses/>. |