You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(50) |
Dec
(32) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(59) |
Feb
(11) |
Mar
(36) |
Apr
(16) |
May
(1) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
(1) |
Feb
|
Mar
(12) |
Apr
(3) |
May
(5) |
Jun
(5) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
(11) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(6) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2010 |
Jan
(6) |
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <be...@us...> - 2010-04-11 16:51:57
|
Revision: 406 http://statsvn.svn.sourceforge.net/statsvn/?rev=406&view=rev Author: benoitx Date: 2010-04-11 16:51:50 +0000 (Sun, 11 Apr 2010) Log Message: ----------- [2984789] Fixing the SVN Links, thanks to Jevon Wright. Modified Paths: -------------- trunk/statsvn/project.xml trunk/statsvn/qalab.xml trunk/statsvn/site/changes.xml Modified: trunk/statsvn/project.xml =================================================================== --- trunk/statsvn/project.xml 2010-02-23 14:29:15 UTC (rev 405) +++ trunk/statsvn/project.xml 2010-04-11 16:51:50 UTC (rev 406) @@ -39,12 +39,12 @@ </siteDirectory> <repository> - <url>http://svn.sourceforge.net/statsvn</url> + <url>https://statsvn.svn.sourceforge.net/svnroot/statsvn/</url> <connection> - scm:svn:https://svn.sourceforge.net/svnroot/statsvn/trunk + scm:svn:https://statsvn.svn.sourceforge.net/svnroot/statsvn/trunk </connection> <developerConnection> - scm:svn:https://svn.sourceforge.net/svnroot/statsvn/trunk + scm:svn:https://statsvn.svn.sourceforge.net/svnroot/statsvn/trunk </developerConnection> </repository> Modified: trunk/statsvn/qalab.xml =================================================================== --- trunk/statsvn/qalab.xml 2010-02-23 14:29:15 UTC (rev 405) +++ trunk/statsvn/qalab.xml 2010-04-11 16:51:50 UTC (rev 406) @@ -475,6 +475,16 @@ project="statsvn" statvalue="39" type="cobertura-branch"/> <summaryresult date="2010-01-01" filecount="1" module="statsvn" project="statsvn" statvalue="2" type="pmd"/> + <summaryresult date="2010-02-27" filecount="52" module="statsvn" + project="statsvn" statvalue="98" type="checkstyle"/> + <summaryresult date="2010-02-27" filecount="4" module="statsvn" + project="statsvn" statvalue="6" type="findbugs"/> + <summaryresult date="2010-02-27" filecount="49" module="statsvn" + project="statsvn" statvalue="44" type="cobertura-line"/> + <summaryresult date="2010-02-27" filecount="49" module="statsvn" + project="statsvn" statvalue="39" type="cobertura-branch"/> + <summaryresult date="2010-02-27" filecount="1" module="statsvn" + project="statsvn" statvalue="2" type="pmd"/> </summary> <file id="statsvn-statsvn-net_sf_statsvn_output_package.html" module="statsvn" path="net/sf/statsvn/output/package.html" project="statsvn"> @@ -676,6 +686,10 @@ <result date="2010-01-01" statvalue="3" type="findbugs"/> <result date="2010-01-01" statvalue="44" type="cobertura-line"/> <result date="2010-01-01" statvalue="34" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="1" type="checkstyle"/> + <result date="2010-02-27" statvalue="3" type="findbugs"/> + <result date="2010-02-27" statvalue="44" type="cobertura-line"/> + <result date="2010-02-27" statvalue="34" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_Messages.java" module="statsvn" path="net/sf/statsvn/Messages.java" project="statsvn"> @@ -840,6 +854,9 @@ <result date="2010-01-01" statvalue="1" type="findbugs"/> <result date="2010-01-01" statvalue="86" type="cobertura-line"/> <result date="2010-01-01" statvalue="64" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="1" type="findbugs"/> + <result date="2010-02-27" statvalue="86" type="cobertura-line"/> + <result date="2010-02-27" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CacheBuilder.java" module="statsvn" path="net/sf/statsvn/input/CacheBuilder.java" project="statsvn"> @@ -951,6 +968,8 @@ <result date="2009-08-06" statvalue="30" type="cobertura-branch"/> <result date="2010-01-01" statvalue="57" type="cobertura-line"/> <result date="2010-01-01" statvalue="30" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="57" type="cobertura-line"/> + <result date="2010-02-27" statvalue="30" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CommitListBuilder.java" @@ -1112,6 +1131,8 @@ <result date="2009-08-06" statvalue="58" type="cobertura-branch"/> <result date="2010-01-01" statvalue="73" type="cobertura-line"/> <result date="2010-01-01" statvalue="58" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="73" type="cobertura-line"/> + <result date="2010-02-27" statvalue="58" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_LogSyntaxException.java" @@ -1301,6 +1322,10 @@ <result date="2010-01-01" statvalue="1" type="findbugs"/> <result date="2010-01-01" statvalue="40" type="cobertura-line"/> <result date="2010-01-01" statvalue="42" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="6" type="checkstyle"/> + <result date="2010-02-27" statvalue="1" type="findbugs"/> + <result date="2010-02-27" statvalue="40" type="cobertura-line"/> + <result date="2010-02-27" statvalue="42" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_RevisionData.java" module="statsvn" path="net/sf/statsvn/input/RevisionData.java" project="statsvn"> @@ -1448,6 +1473,8 @@ <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="100" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="100" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnLogfileParser.java" @@ -1605,6 +1632,8 @@ <result date="2009-08-06" statvalue="64" type="cobertura-branch"/> <result date="2010-01-01" statvalue="76" type="cobertura-line"/> <result date="2010-01-01" statvalue="64" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="76" type="cobertura-line"/> + <result date="2010-02-27" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlCacheFileHandler.java" @@ -1712,6 +1741,8 @@ <result date="2009-08-06" statvalue="61" type="cobertura-branch"/> <result date="2010-01-01" statvalue="87" type="cobertura-line"/> <result date="2010-01-01" statvalue="61" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="87" type="cobertura-line"/> + <result date="2010-02-27" statvalue="61" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlLogFileHandler.java" @@ -1841,6 +1872,8 @@ <result date="2009-08-06" statvalue="68" type="cobertura-branch"/> <result date="2010-01-01" statvalue="85" type="cobertura-line"/> <result date="2010-01-01" statvalue="68" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="85" type="cobertura-line"/> + <result date="2010-02-27" statvalue="68" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlRepositoriesFileHandler.java" @@ -1948,6 +1981,8 @@ <result date="2009-08-06" statvalue="60" type="cobertura-branch"/> <result date="2010-01-01" statvalue="84" type="cobertura-line"/> <result date="2010-01-01" statvalue="60" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="84" type="cobertura-line"/> + <result date="2010-02-27" statvalue="60" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_Author.java" module="statsvn" path="net/sf/statsvn/model/Author.java" project="statsvn"> @@ -3392,6 +3427,8 @@ <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> <result date="2010-01-01" statvalue="83" type="cobertura-line"/> <result date="2010-01-01" statvalue="50" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="83" type="cobertura-line"/> + <result date="2010-02-27" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_IntegerMap.java" module="statsvn" path="net/sf/statsvn/util/IntegerMap.java" project="statsvn"> @@ -3640,6 +3677,8 @@ <result date="2009-08-06" statvalue="25" type="cobertura-branch"/> <result date="2010-01-01" statvalue="34" type="cobertura-line"/> <result date="2010-01-01" statvalue="25" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="34" type="cobertura-line"/> + <result date="2010-02-27" statvalue="25" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandHelper.java" module="statsvn" @@ -3667,6 +3706,7 @@ <result date="2008-05-04" statvalue="1" type="checkstyle"/> <result date="2008-06-17" statvalue="2" type="checkstyle"/> <result date="2010-01-01" statvalue="2" type="checkstyle"/> + <result date="2010-02-27" statvalue="2" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnInfoUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnInfoUtils.java" project="statsvn"> @@ -3810,6 +3850,10 @@ <result date="2010-01-01" statvalue="1" type="findbugs"/> <result date="2010-01-01" statvalue="58" type="cobertura-line"/> <result date="2010-01-01" statvalue="45" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="8" type="checkstyle"/> + <result date="2010-02-27" statvalue="1" type="findbugs"/> + <result date="2010-02-27" statvalue="58" type="cobertura-line"/> + <result date="2010-02-27" statvalue="45" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnPropgetUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnPropgetUtils.java" project="statsvn"> @@ -3929,6 +3973,9 @@ <result date="2010-01-01" statvalue="4" type="checkstyle"/> <result date="2010-01-01" statvalue="38" type="cobertura-line"/> <result date="2010-01-01" statvalue="20" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="4" type="checkstyle"/> + <result date="2010-02-27" statvalue="38" type="cobertura-line"/> + <result date="2010-02-27" statvalue="20" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnStartupUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnStartupUtils.java" project="statsvn"> @@ -3944,6 +3991,7 @@ <result date="2006-11-19" statvalue="1" type="findbugs"/> <result date="2006-11-20" statvalue="1" type="findbugs"/> <result date="2010-01-01" statvalue="2" type="checkstyle"/> + <result date="2010-02-27" statvalue="2" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnVersionMismatchException.java" @@ -4000,6 +4048,7 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_XMLUtil.java" module="statsvn" path="net/sf/statsvn/util/XMLUtil.java" project="statsvn"> @@ -4135,6 +4184,8 @@ <result date="2009-08-06" statvalue="56" type="cobertura-branch"/> <result date="2010-01-01" statvalue="75" type="cobertura-line"/> <result date="2010-01-01" statvalue="56" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="75" type="cobertura-line"/> + <result date="2010-02-27" statvalue="56" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_reports_FilesLocComparator.java" @@ -4263,6 +4314,8 @@ <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> <result date="2010-01-01" statvalue="79" type="cobertura-line"/> <result date="2010-01-01" statvalue="50" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="79" type="cobertura-line"/> + <result date="2010-02-27" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_CssHandler.java" module="statsvn" path="net/sf/statsvn/output/CssHandler.java" project="statsvn"> @@ -4432,6 +4485,7 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_DirectoryRoot.java" module="statsvn" path="net/sf/statsvn/model/DirectoryRoot.java" project="statsvn"> @@ -4495,6 +4549,7 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleOutHandler.java" @@ -4614,6 +4669,9 @@ <result date="2010-01-01" statvalue="4" type="checkstyle"/> <result date="2010-01-01" statvalue="42" type="cobertura-line"/> <result date="2010-01-01" statvalue="16" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="4" type="checkstyle"/> + <result date="2010-02-27" statvalue="42" type="cobertura-line"/> + <result date="2010-02-27" statvalue="16" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_SvnCommandLineParser.java" @@ -4720,6 +4778,9 @@ <result date="2010-01-01" statvalue="1" type="checkstyle"/> <result date="2010-01-01" statvalue="40" type="cobertura-line"/> <result date="2010-01-01" statvalue="15" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="1" type="checkstyle"/> + <result date="2010-02-27" statvalue="40" type="cobertura-line"/> + <result date="2010-02-27" statvalue="15" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleTaskLogger.java" @@ -4781,6 +4842,7 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_TaskLogger.java" module="statsvn" path="net/sf/statsvn/util/TaskLogger.java" project="statsvn"> @@ -4868,6 +4930,8 @@ <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="100" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="100" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_ant_AntTaskLogger.java" module="statsvn" path="net/sf/statsvn/ant/AntTaskLogger.java" project="statsvn"> @@ -4930,6 +4994,7 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="StatSvn-statsvn-net_sf_statsvn_input_Builder.java" module="statsvn" path="net/sf/statsvn/input/Builder.java" project="StatSvn"/> @@ -5510,6 +5575,8 @@ <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> <result date="2010-01-01" statvalue="75" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="75" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_EnvReport.java" module="statsvn" path="net/sf/statsvn/util/EnvReport.java" project="statsvn"> @@ -5541,10 +5608,12 @@ <result date="2009-05-22" statvalue="1" type="checkstyle"/> <result date="2009-08-06" statvalue="1" type="checkstyle"/> <result date="2010-01-01" statvalue="1" type="checkstyle"/> + <result date="2010-02-27" statvalue="1" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_package.html" module="statsvn" path="net/sf/statsvn/util/svnkit/package.html" project="statsvn"> <result date="2010-01-01" statvalue="1" type="checkstyle"/> + <result date="2010-02-27" statvalue="1" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ISvnDiffProcessor.java" @@ -5553,6 +5622,9 @@ <result date="2010-01-01" statvalue="2" type="checkstyle"/> <result date="2010-01-01" statvalue="100" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="2" type="checkstyle"/> + <result date="2010-02-27" statvalue="100" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ISvnInfoProcessor.java" @@ -5561,12 +5633,18 @@ <result date="2010-01-01" statvalue="18" type="checkstyle"/> <result date="2010-01-01" statvalue="100" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="18" type="checkstyle"/> + <result date="2010-02-27" statvalue="100" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ISvnProcessor.java" module="statsvn" path="net/sf/statsvn/util/ISvnProcessor.java" project="statsvn"> <result date="2010-01-01" statvalue="4" type="checkstyle"/> <result date="2010-01-01" statvalue="100" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="4" type="checkstyle"/> + <result date="2010-02-27" statvalue="100" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ISvnPropgetProcessor.java" @@ -5575,6 +5653,9 @@ <result date="2010-01-01" statvalue="3" type="checkstyle"/> <result date="2010-01-01" statvalue="100" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="3" type="checkstyle"/> + <result date="2010-02-27" statvalue="100" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ISvnVersionProcessor.java" @@ -5583,12 +5664,18 @@ <result date="2010-01-01" statvalue="2" type="checkstyle"/> <result date="2010-01-01" statvalue="100" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="2" type="checkstyle"/> + <result date="2010-02-27" statvalue="100" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_StringUtils.java" module="statsvn" path="net/sf/statsvn/util/StringUtils.java" project="statsvn"> <result date="2010-01-01" statvalue="1" type="checkstyle"/> <result date="2010-01-01" statvalue="93" type="cobertura-line"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="1" type="checkstyle"/> + <result date="2010-02-27" statvalue="93" type="cobertura-line"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandLineProcessor.java" @@ -5597,6 +5684,9 @@ <result date="2010-01-01" statvalue="8" type="checkstyle"/> <result date="2010-01-01" statvalue="55" type="cobertura-line"/> <result date="2010-01-01" statvalue="50" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="8" type="checkstyle"/> + <result date="2010-02-27" statvalue="55" type="cobertura-line"/> + <result date="2010-02-27" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitDiff.java" @@ -5604,18 +5694,22 @@ path="net/sf/statsvn/util/svnkit/SvnKitDiff.java" project="statsvn"> <result date="2010-01-01" statvalue="1" type="checkstyle"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="1" type="checkstyle"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitInfo.java" module="statsvn" path="net/sf/statsvn/util/svnkit/SvnKitInfo.java" project="statsvn"> <result date="2010-01-01" statvalue="3" type="checkstyle"/> + <result date="2010-02-27" statvalue="3" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitProcessor.java" module="statsvn" path="net/sf/statsvn/util/svnkit/SvnKitProcessor.java" project="statsvn"> <result date="2010-01-01" statvalue="14" type="checkstyle"/> + <result date="2010-02-27" statvalue="14" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitPropget.java" @@ -5623,6 +5717,8 @@ path="net/sf/statsvn/util/svnkit/SvnKitPropget.java" project="statsvn"> <result date="2010-01-01" statvalue="10" type="checkstyle"/> <result date="2010-01-01" statvalue="2" type="pmd"/> + <result date="2010-02-27" statvalue="10" type="checkstyle"/> + <result date="2010-02-27" statvalue="2" type="pmd"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitVersion.java" @@ -5630,5 +5726,7 @@ path="net/sf/statsvn/util/svnkit/SvnKitVersion.java" project="statsvn"> <result date="2010-01-01" statvalue="2" type="checkstyle"/> <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + <result date="2010-02-27" statvalue="2" type="checkstyle"/> + <result date="2010-02-27" statvalue="100" type="cobertura-branch"/> </file> </qalab> Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2010-02-23 14:29:15 UTC (rev 405) +++ trunk/statsvn/site/changes.xml 2010-04-11 16:51:50 UTC (rev 406) @@ -6,6 +6,7 @@ <body> <release version="0.7.1" date="Feb 2010" description="Maintenance"> <action dev="jkealey" type="fix" issue="1828117" due-to="Peter M\xFCnster, Richard Tolar">Fixed issue with spaces in filenames/paths.</action> + <action dev="benoitx" type="fix" issue="2984789" due-to="Jevon Wright">Fix SVN link in <a href="scm-usage.html">scm usage page</a>.</action> </release> <release version="0.7.0" date="Jan 2010" description="Maintenance"> <action dev="benoitx" type="add">Upgrade to StatCVS 0.7.0.</action> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jk...@us...> - 2010-02-23 14:29:22
|
Revision: 405 http://statsvn.svn.sourceforge.net/statsvn/?rev=405&view=rev Author: jkealey Date: 2010-02-23 14:29:15 +0000 (Tue, 23 Feb 2010) Log Message: ----------- bug 1828117: problem with space in filenames. Modified Paths: -------------- trunk/statsvn/site/changes.xml trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2010-01-01 12:24:53 UTC (rev 404) +++ trunk/statsvn/site/changes.xml 2010-02-23 14:29:15 UTC (rev 405) @@ -4,6 +4,9 @@ <title>StatSVN Changes</title> </properties> <body> + <release version="0.7.1" date="Feb 2010" description="Maintenance"> + <action dev="jkealey" type="fix" issue="1828117" due-to="Peter M\xFCnster, Richard Tolar">Fixed issue with spaces in filenames/paths.</action> + </release> <release version="0.7.0" date="Jan 2010" description="Maintenance"> <action dev="benoitx" type="add">Upgrade to StatCVS 0.7.0.</action> </release> Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java 2010-01-01 12:24:53 UTC (rev 404) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java 2010-02-23 14:29:15 UTC (rev 405) @@ -102,9 +102,10 @@ + sCurrentRevision + " url:" + sCurrentUrl + " kind:" + sCurrentKind); } - getInfoUtils().HM_REVISIONS.put(getInfoUtils().urlToRelativePath(sCurrentUrl), sCurrentRevision); + final String path = getInfoUtils().urlToRelativePath(sCurrentUrl); + getInfoUtils().HM_REVISIONS.put(path, sCurrentRevision); if (sCurrentKind.equals("dir")) { - getInfoUtils().HS_DIRECTORIES.add(getInfoUtils().urlToRelativePath(sCurrentUrl)); + getInfoUtils().HS_DIRECTORIES.add(path); } } else if (eName.equals("uuid")) { getInfoUtils().setRepositoryUuid(stringData); @@ -433,19 +434,31 @@ * @see net.sf.statsvn.util.ISvnInfoProcessor#urlToAbsolutePath(java.lang.String) */ public String urlToAbsolutePath(String url) { + String result = url; if (url.endsWith("/")) { url = url.substring(0, url.length() - 1); } if (getModuleName().length() <= 1) { if (getRootUrl().equals(url)) { - return "/"; + result = "/"; } else { - return url.substring(getRootUrl().length()); + result = url.substring(getRootUrl().length()); } } else { // chop off the repo root from the url - return url.substring(getRepositoryUrl().length()); + result = url.substring(getRepositoryUrl().length()); } + + // bugs with spaces in filenames. + String decoded; + try { + decoded = URLDecoder.decode(result, "UTF-8"); + } catch (UnsupportedEncodingException ex) + { + decoded = result; + } + + return decoded; } /* (non-Javadoc) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2010-01-01 12:50:42
|
Revision: 403 http://statsvn.svn.sourceforge.net/statsvn/?rev=403&view=rev Author: benoitx Date: 2010-01-01 12:08:44 +0000 (Fri, 01 Jan 2010) Log Message: ----------- changed for 0.7.0 Added Paths: ----------- trunk/statsvn/site/press/release-note-0.7.0.txt Added: trunk/statsvn/site/press/release-note-0.7.0.txt =================================================================== --- trunk/statsvn/site/press/release-note-0.7.0.txt (rev 0) +++ trunk/statsvn/site/press/release-note-0.7.0.txt 2010-01-01 12:08:44 UTC (rev 403) @@ -0,0 +1,55 @@ +The StatSVN Team and Appendium are proud to announce v0.7.0 of StatSVN + +If you want to know what happened in your Subversion repository, +this is the tool for you! + +StatSVN retrieves information from a Subversion repository and generates +various tables and charts describing the project evolution, e.g. +the lines of code over time, contribution of each developer, the +evolution of modules, directories, files, the time and days when most +checkins happen, etc. It also shows the commit logs and integrates +out of the box with ViewVc, BugZilla, Chora and others. + +StatSVN generates a static suite of HTML or XDoc documents containing +tables and chart images. + + +New Features: + +** Inspired by StatCVS-xml, A module mechanism is added to StatCVS whereby it is now possible to define + some regular expression to group files into modules and have a dedicated set of statistics per module +** 2 new command line options: headerUrl and footerUrl the content of which will + be incorporated just after opening body or just before the end of body. + +* Upgrade to StatCVS 0.7.0 +* Using Bit.ly instead of tr.im +* The latest commit page will always be called commitlog.html Thanks to David Multer + +* fix Fixing NPE issue and bad link when there are no commits in a repository. Thanks to David Multer + + +StatSVN is available now for download at http://www.statsvn.org + +StatSVN is open source software, released under the terms of the LGPL, +based on StatCVS, it uses JFreeChart and JTreeMap to generate charts. + +--- + +ObjectLab is not new to the open-source community having used numerous OS +projects, participated in a few and sponsoring: +- ObjectLab Kit (http://objectlabkit.sourceforge.net), a date calculation + toolkit for business and finance; +- JTreeMap (http://jtreemap.sourceforge.net) the only open source heatmap + library for Java +- QALab (http://qalab.sourceforge.net) QA Statistics for your build (now + also integrated in JBuilder 2007). + +We would like to thank our friends and colleagues for their help, reviews +and suggestions. + +Feel free to pass on to people who may be interested. + +Enjoy!! + +The StatSVN Team and Appendium. + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2010-01-01 12:25:34
|
Revision: 404 http://statsvn.svn.sourceforge.net/statsvn/?rev=404&view=rev Author: benoitx Date: 2010-01-01 12:24:53 +0000 (Fri, 01 Jan 2010) Log Message: ----------- fixing download link. Modified Paths: -------------- trunk/statsvn/project.properties trunk/statsvn/qalab.xml Modified: trunk/statsvn/project.properties =================================================================== --- trunk/statsvn/project.properties 2010-01-01 12:08:44 UTC (rev 403) +++ trunk/statsvn/project.properties 2010-01-01 12:24:53 UTC (rev 404) @@ -52,6 +52,9 @@ qalab.merge.moduleName=statsvn # #maven.xdoc.distributionUrl=https://sourceforge.net/project/showfiles.php?group_id=164845 +#maven.xdoc.distributionUrl=https://sourceforge.net/projects/statsvn/files/ +maven.xdoc.distributionUrl=http://prdownloads.sourceforge.net/statsvn +maven.xdoc.distributionType=zip maven.findbugs.excludeFilter=${basedir}/../maven-common-build/findbugs-exclude.xml Modified: trunk/statsvn/qalab.xml =================================================================== --- trunk/statsvn/qalab.xml 2010-01-01 12:08:44 UTC (rev 403) +++ trunk/statsvn/qalab.xml 2010-01-01 12:24:53 UTC (rev 404) @@ -470,9 +470,9 @@ <summaryresult date="2010-01-01" filecount="4" module="statsvn" project="statsvn" statvalue="6" type="findbugs"/> <summaryresult date="2010-01-01" filecount="49" module="statsvn" - project="statsvn" statvalue="39" type="cobertura-line"/> + project="statsvn" statvalue="44" type="cobertura-line"/> <summaryresult date="2010-01-01" filecount="49" module="statsvn" - project="statsvn" statvalue="34" type="cobertura-branch"/> + project="statsvn" statvalue="39" type="cobertura-branch"/> <summaryresult date="2010-01-01" filecount="1" module="statsvn" project="statsvn" statvalue="2" type="pmd"/> </summary> @@ -674,8 +674,8 @@ <result date="2009-08-06" statvalue="33" type="cobertura-branch"/> <result date="2010-01-01" statvalue="1" type="checkstyle"/> <result date="2010-01-01" statvalue="3" type="findbugs"/> - <result date="2010-01-01" statvalue="36" type="cobertura-line"/> - <result date="2010-01-01" statvalue="24" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="44" type="cobertura-line"/> + <result date="2010-01-01" statvalue="34" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_Messages.java" module="statsvn" path="net/sf/statsvn/Messages.java" project="statsvn"> @@ -1299,8 +1299,8 @@ <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> <result date="2010-01-01" statvalue="6" type="checkstyle"/> <result date="2010-01-01" statvalue="1" type="findbugs"/> - <result date="2010-01-01" statvalue="21" type="cobertura-line"/> - <result date="2010-01-01" statvalue="21" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="40" type="cobertura-line"/> + <result date="2010-01-01" statvalue="42" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_RevisionData.java" module="statsvn" path="net/sf/statsvn/input/RevisionData.java" project="statsvn"> @@ -3808,8 +3808,8 @@ <result date="2009-08-06" statvalue="53" type="cobertura-branch"/> <result date="2010-01-01" statvalue="8" type="checkstyle"/> <result date="2010-01-01" statvalue="1" type="findbugs"/> - <result date="2010-01-01" statvalue="33" type="cobertura-line"/> - <result date="2010-01-01" statvalue="28" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="58" type="cobertura-line"/> + <result date="2010-01-01" statvalue="45" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnPropgetUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnPropgetUtils.java" project="statsvn"> @@ -3927,8 +3927,8 @@ <result date="2009-08-06" statvalue="27" type="cobertura-line"/> <result date="2009-08-06" statvalue="19" type="cobertura-branch"/> <result date="2010-01-01" statvalue="4" type="checkstyle"/> - <result date="2010-01-01" statvalue="16" type="cobertura-line"/> - <result date="2010-01-01" statvalue="10" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="38" type="cobertura-line"/> + <result date="2010-01-01" statvalue="20" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnStartupUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnStartupUtils.java" project="statsvn"> @@ -4612,8 +4612,8 @@ <result date="2009-08-06" statvalue="44" type="cobertura-line"/> <result date="2009-08-06" statvalue="20" type="cobertura-branch"/> <result date="2010-01-01" statvalue="4" type="checkstyle"/> - <result date="2010-01-01" statvalue="22" type="cobertura-line"/> - <result date="2010-01-01" statvalue="8" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="42" type="cobertura-line"/> + <result date="2010-01-01" statvalue="16" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_SvnCommandLineParser.java" @@ -4718,8 +4718,8 @@ <result date="2009-08-06" statvalue="32" type="cobertura-line"/> <result date="2009-08-06" statvalue="13" type="cobertura-branch"/> <result date="2010-01-01" statvalue="1" type="checkstyle"/> - <result date="2010-01-01" statvalue="28" type="cobertura-line"/> - <result date="2010-01-01" statvalue="10" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="40" type="cobertura-line"/> + <result date="2010-01-01" statvalue="15" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleTaskLogger.java" @@ -5587,12 +5587,16 @@ <file id="statsvn-statsvn-net_sf_statsvn_util_StringUtils.java" module="statsvn" path="net/sf/statsvn/util/StringUtils.java" project="statsvn"> <result date="2010-01-01" statvalue="1" type="checkstyle"/> + <result date="2010-01-01" statvalue="93" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandLineProcessor.java" module="statsvn" path="net/sf/statsvn/util/SvnCommandLineProcessor.java" project="statsvn"> <result date="2010-01-01" statvalue="8" type="checkstyle"/> + <result date="2010-01-01" statvalue="55" type="cobertura-line"/> + <result date="2010-01-01" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitDiff.java" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2010-01-01 12:05:32
|
Revision: 402 http://statsvn.svn.sourceforge.net/statsvn/?rev=402&view=rev Author: benoitx Date: 2010-01-01 12:05:23 +0000 (Fri, 01 Jan 2010) Log Message: ----------- changed for 0.7.0 Modified Paths: -------------- trunk/statsvn/project.properties trunk/statsvn/project.xml trunk/statsvn/qalab.xml trunk/statsvn/site/index.xml trunk/statsvn.bat Modified: trunk/statsvn/project.properties =================================================================== --- trunk/statsvn/project.properties 2010-01-01 10:58:16 UTC (rev 401) +++ trunk/statsvn/project.properties 2010-01-01 12:05:23 UTC (rev 402) @@ -51,7 +51,7 @@ qalab.merge.projectName=statsvn qalab.merge.moduleName=statsvn # -maven.xdoc.distributionUrl=https://sourceforge.net/project/showfiles.php?group_id=164845 +#maven.xdoc.distributionUrl=https://sourceforge.net/project/showfiles.php?group_id=164845 maven.findbugs.excludeFilter=${basedir}/../maven-common-build/findbugs-exclude.xml Modified: trunk/statsvn/project.xml =================================================================== --- trunk/statsvn/project.xml 2010-01-01 10:58:16 UTC (rev 401) +++ trunk/statsvn/project.xml 2010-01-01 12:05:23 UTC (rev 402) @@ -176,13 +176,19 @@ <type>jar</type> <url>http://www.jfree.org/</url> </dependency> - <dependency> - <groupId>jfree</groupId> - <artifactId>jcommon</artifactId> - <version>1.0.16</version> - <type>jar</type> + <dependency> + <groupId>jfree</groupId> + <artifactId>jcommon</artifactId> + <version>1.0.16</version> + <type>jar</type> <url>http://www.jfree.org/</url> - </dependency> + </dependency> + <dependency> + <groupId>com.svnkit</groupId> + <artifactId>svnkit</artifactId> + <version>1.3.0</version> + <type>jar</type> + </dependency> <dependency> <id>ant</id> Modified: trunk/statsvn/qalab.xml =================================================================== --- trunk/statsvn/qalab.xml 2010-01-01 10:58:16 UTC (rev 401) +++ trunk/statsvn/qalab.xml 2010-01-01 12:05:23 UTC (rev 402) @@ -465,6 +465,16 @@ project="statsvn" statvalue="46" type="cobertura-line"/> <summaryresult date="2009-08-06" filecount="37" module="statsvn" project="statsvn" statvalue="41" type="cobertura-branch"/> + <summaryresult date="2010-01-01" filecount="52" module="statsvn" + project="statsvn" statvalue="98" type="checkstyle"/> + <summaryresult date="2010-01-01" filecount="4" module="statsvn" + project="statsvn" statvalue="6" type="findbugs"/> + <summaryresult date="2010-01-01" filecount="49" module="statsvn" + project="statsvn" statvalue="39" type="cobertura-line"/> + <summaryresult date="2010-01-01" filecount="49" module="statsvn" + project="statsvn" statvalue="34" type="cobertura-branch"/> + <summaryresult date="2010-01-01" filecount="1" module="statsvn" + project="statsvn" statvalue="2" type="pmd"/> </summary> <file id="statsvn-statsvn-net_sf_statsvn_output_package.html" module="statsvn" path="net/sf/statsvn/output/package.html" project="statsvn"> @@ -662,6 +672,10 @@ <result date="2009-08-06" statvalue="3" type="findbugs"/> <result date="2009-08-06" statvalue="41" type="cobertura-line"/> <result date="2009-08-06" statvalue="33" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="1" type="checkstyle"/> + <result date="2010-01-01" statvalue="3" type="findbugs"/> + <result date="2010-01-01" statvalue="36" type="cobertura-line"/> + <result date="2010-01-01" statvalue="24" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_Messages.java" module="statsvn" path="net/sf/statsvn/Messages.java" project="statsvn"> @@ -823,6 +837,9 @@ <result date="2009-08-06" statvalue="1" type="findbugs"/> <result date="2009-08-06" statvalue="86" type="cobertura-line"/> <result date="2009-08-06" statvalue="64" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="1" type="findbugs"/> + <result date="2010-01-01" statvalue="86" type="cobertura-line"/> + <result date="2010-01-01" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CacheBuilder.java" module="statsvn" path="net/sf/statsvn/input/CacheBuilder.java" project="statsvn"> @@ -932,6 +949,8 @@ <result date="2009-05-22" statvalue="30" type="cobertura-branch"/> <result date="2009-08-06" statvalue="57" type="cobertura-line"/> <result date="2009-08-06" statvalue="30" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="57" type="cobertura-line"/> + <result date="2010-01-01" statvalue="30" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CommitListBuilder.java" @@ -1091,6 +1110,8 @@ <result date="2009-05-22" statvalue="58" type="cobertura-branch"/> <result date="2009-08-06" statvalue="73" type="cobertura-line"/> <result date="2009-08-06" statvalue="58" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="73" type="cobertura-line"/> + <result date="2010-01-01" statvalue="58" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_LogSyntaxException.java" @@ -1276,6 +1297,10 @@ <result date="2009-08-06" statvalue="1" type="findbugs"/> <result date="2009-08-06" statvalue="40" type="cobertura-line"/> <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="6" type="checkstyle"/> + <result date="2010-01-01" statvalue="1" type="findbugs"/> + <result date="2010-01-01" statvalue="21" type="cobertura-line"/> + <result date="2010-01-01" statvalue="21" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_RevisionData.java" module="statsvn" path="net/sf/statsvn/input/RevisionData.java" project="statsvn"> @@ -1421,6 +1446,8 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-line"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="100" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnLogfileParser.java" @@ -1576,6 +1603,8 @@ <result date="2009-05-22" statvalue="64" type="cobertura-branch"/> <result date="2009-08-06" statvalue="76" type="cobertura-line"/> <result date="2009-08-06" statvalue="64" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="76" type="cobertura-line"/> + <result date="2010-01-01" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlCacheFileHandler.java" @@ -1681,6 +1710,8 @@ <result date="2009-05-22" statvalue="61" type="cobertura-branch"/> <result date="2009-08-06" statvalue="87" type="cobertura-line"/> <result date="2009-08-06" statvalue="61" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="87" type="cobertura-line"/> + <result date="2010-01-01" statvalue="61" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlLogFileHandler.java" @@ -1808,6 +1839,8 @@ <result date="2009-05-22" statvalue="68" type="cobertura-branch"/> <result date="2009-08-06" statvalue="85" type="cobertura-line"/> <result date="2009-08-06" statvalue="68" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="85" type="cobertura-line"/> + <result date="2010-01-01" statvalue="68" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlRepositoriesFileHandler.java" @@ -1913,6 +1946,8 @@ <result date="2009-05-22" statvalue="60" type="cobertura-branch"/> <result date="2009-08-06" statvalue="84" type="cobertura-line"/> <result date="2009-08-06" statvalue="60" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="84" type="cobertura-line"/> + <result date="2010-01-01" statvalue="60" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_Author.java" module="statsvn" path="net/sf/statsvn/model/Author.java" project="statsvn"> @@ -3355,6 +3390,8 @@ <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> <result date="2009-08-06" statvalue="83" type="cobertura-line"/> <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="83" type="cobertura-line"/> + <result date="2010-01-01" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_IntegerMap.java" module="statsvn" path="net/sf/statsvn/util/IntegerMap.java" project="statsvn"> @@ -3601,6 +3638,8 @@ <result date="2009-05-22" statvalue="25" type="cobertura-branch"/> <result date="2009-08-06" statvalue="34" type="cobertura-line"/> <result date="2009-08-06" statvalue="25" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="34" type="cobertura-line"/> + <result date="2010-01-01" statvalue="25" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandHelper.java" module="statsvn" @@ -3627,6 +3666,7 @@ <result date="2008-03-31" statvalue="1" type="checkstyle"/> <result date="2008-05-04" statvalue="1" type="checkstyle"/> <result date="2008-06-17" statvalue="2" type="checkstyle"/> + <result date="2010-01-01" statvalue="2" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnInfoUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnInfoUtils.java" project="statsvn"> @@ -3766,6 +3806,10 @@ <result date="2009-05-22" statvalue="53" type="cobertura-branch"/> <result date="2009-08-06" statvalue="62" type="cobertura-line"/> <result date="2009-08-06" statvalue="53" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="8" type="checkstyle"/> + <result date="2010-01-01" statvalue="1" type="findbugs"/> + <result date="2010-01-01" statvalue="33" type="cobertura-line"/> + <result date="2010-01-01" statvalue="28" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnPropgetUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnPropgetUtils.java" project="statsvn"> @@ -3882,6 +3926,9 @@ <result date="2009-05-22" statvalue="19" type="cobertura-branch"/> <result date="2009-08-06" statvalue="27" type="cobertura-line"/> <result date="2009-08-06" statvalue="19" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="4" type="checkstyle"/> + <result date="2010-01-01" statvalue="16" type="cobertura-line"/> + <result date="2010-01-01" statvalue="10" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnStartupUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnStartupUtils.java" project="statsvn"> @@ -3896,6 +3943,7 @@ <result date="2006-11-18" statvalue="1" type="findbugs"/> <result date="2006-11-19" statvalue="1" type="findbugs"/> <result date="2006-11-20" statvalue="1" type="findbugs"/> + <result date="2010-01-01" statvalue="2" type="checkstyle"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnVersionMismatchException.java" @@ -3951,6 +3999,7 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_XMLUtil.java" module="statsvn" path="net/sf/statsvn/util/XMLUtil.java" project="statsvn"> @@ -4084,6 +4133,8 @@ <result date="2009-05-22" statvalue="56" type="cobertura-branch"/> <result date="2009-08-06" statvalue="75" type="cobertura-line"/> <result date="2009-08-06" statvalue="56" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="75" type="cobertura-line"/> + <result date="2010-01-01" statvalue="56" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_reports_FilesLocComparator.java" @@ -4210,6 +4261,8 @@ <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> <result date="2009-08-06" statvalue="79" type="cobertura-line"/> <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="79" type="cobertura-line"/> + <result date="2010-01-01" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_CssHandler.java" module="statsvn" path="net/sf/statsvn/output/CssHandler.java" project="statsvn"> @@ -4378,6 +4431,7 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_DirectoryRoot.java" module="statsvn" path="net/sf/statsvn/model/DirectoryRoot.java" project="statsvn"> @@ -4440,6 +4494,7 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleOutHandler.java" @@ -4556,6 +4611,9 @@ <result date="2009-05-22" statvalue="20" type="cobertura-branch"/> <result date="2009-08-06" statvalue="44" type="cobertura-line"/> <result date="2009-08-06" statvalue="20" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="4" type="checkstyle"/> + <result date="2010-01-01" statvalue="22" type="cobertura-line"/> + <result date="2010-01-01" statvalue="8" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_SvnCommandLineParser.java" @@ -4659,6 +4717,9 @@ <result date="2009-08-06" statvalue="1" type="checkstyle"/> <result date="2009-08-06" statvalue="32" type="cobertura-line"/> <result date="2009-08-06" statvalue="13" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="1" type="checkstyle"/> + <result date="2010-01-01" statvalue="28" type="cobertura-line"/> + <result date="2010-01-01" statvalue="10" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleTaskLogger.java" @@ -4719,6 +4780,7 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_TaskLogger.java" module="statsvn" path="net/sf/statsvn/util/TaskLogger.java" project="statsvn"> @@ -4804,6 +4866,8 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-line"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="100" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_ant_AntTaskLogger.java" module="statsvn" path="net/sf/statsvn/ant/AntTaskLogger.java" project="statsvn"> @@ -4865,6 +4929,7 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="StatSvn-statsvn-net_sf_statsvn_input_Builder.java" module="statsvn" path="net/sf/statsvn/input/Builder.java" project="StatSvn"/> @@ -5443,6 +5508,8 @@ <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> <result date="2009-08-06" statvalue="75" type="cobertura-line"/> <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> + <result date="2010-01-01" statvalue="75" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_EnvReport.java" module="statsvn" path="net/sf/statsvn/util/EnvReport.java" project="statsvn"> @@ -5473,5 +5540,91 @@ <result date="2009-04-25" statvalue="1" type="checkstyle"/> <result date="2009-05-22" statvalue="1" type="checkstyle"/> <result date="2009-08-06" statvalue="1" type="checkstyle"/> + <result date="2010-01-01" statvalue="1" type="checkstyle"/> </file> + <file id="statsvn-statsvn-net_sf_statsvn_util_svnkit_package.html" + module="statsvn" path="net/sf/statsvn/util/svnkit/package.html" project="statsvn"> + <result date="2010-01-01" statvalue="1" type="checkstyle"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_ISvnDiffProcessor.java" + module="statsvn" + path="net/sf/statsvn/util/ISvnDiffProcessor.java" project="statsvn"> + <result date="2010-01-01" statvalue="2" type="checkstyle"/> + <result date="2010-01-01" statvalue="100" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_ISvnInfoProcessor.java" + module="statsvn" + path="net/sf/statsvn/util/ISvnInfoProcessor.java" project="statsvn"> + <result date="2010-01-01" statvalue="18" type="checkstyle"/> + <result date="2010-01-01" statvalue="100" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + </file> + <file id="statsvn-statsvn-net_sf_statsvn_util_ISvnProcessor.java" + module="statsvn" path="net/sf/statsvn/util/ISvnProcessor.java" project="statsvn"> + <result date="2010-01-01" statvalue="4" type="checkstyle"/> + <result date="2010-01-01" statvalue="100" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_ISvnPropgetProcessor.java" + module="statsvn" + path="net/sf/statsvn/util/ISvnPropgetProcessor.java" project="statsvn"> + <result date="2010-01-01" statvalue="3" type="checkstyle"/> + <result date="2010-01-01" statvalue="100" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_ISvnVersionProcessor.java" + module="statsvn" + path="net/sf/statsvn/util/ISvnVersionProcessor.java" project="statsvn"> + <result date="2010-01-01" statvalue="2" type="checkstyle"/> + <result date="2010-01-01" statvalue="100" type="cobertura-line"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + </file> + <file id="statsvn-statsvn-net_sf_statsvn_util_StringUtils.java" + module="statsvn" path="net/sf/statsvn/util/StringUtils.java" project="statsvn"> + <result date="2010-01-01" statvalue="1" type="checkstyle"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandLineProcessor.java" + module="statsvn" + path="net/sf/statsvn/util/SvnCommandLineProcessor.java" project="statsvn"> + <result date="2010-01-01" statvalue="8" type="checkstyle"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitDiff.java" + module="statsvn" + path="net/sf/statsvn/util/svnkit/SvnKitDiff.java" project="statsvn"> + <result date="2010-01-01" statvalue="1" type="checkstyle"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitInfo.java" + module="statsvn" + path="net/sf/statsvn/util/svnkit/SvnKitInfo.java" project="statsvn"> + <result date="2010-01-01" statvalue="3" type="checkstyle"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitProcessor.java" + module="statsvn" + path="net/sf/statsvn/util/svnkit/SvnKitProcessor.java" project="statsvn"> + <result date="2010-01-01" statvalue="14" type="checkstyle"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitPropget.java" + module="statsvn" + path="net/sf/statsvn/util/svnkit/SvnKitPropget.java" project="statsvn"> + <result date="2010-01-01" statvalue="10" type="checkstyle"/> + <result date="2010-01-01" statvalue="2" type="pmd"/> + </file> + <file + id="statsvn-statsvn-net_sf_statsvn_util_svnkit_SvnKitVersion.java" + module="statsvn" + path="net/sf/statsvn/util/svnkit/SvnKitVersion.java" project="statsvn"> + <result date="2010-01-01" statvalue="2" type="checkstyle"/> + <result date="2010-01-01" statvalue="100" type="cobertura-branch"/> + </file> </qalab> Modified: trunk/statsvn/site/index.xml =================================================================== --- trunk/statsvn/site/index.xml 2010-01-01 10:58:16 UTC (rev 401) +++ trunk/statsvn/site/index.xml 2010-01-01 12:05:23 UTC (rev 402) @@ -24,8 +24,10 @@ <section name="StatSVN News"> <p style="margin-top:10px; margin-bottom:0; padding-bottom:0; text-align:center; line-height:0"><a href="http://feeds.feedburner.com/~r/ObjectlabOpenSourceNews/~6/1"><img src="http://feeds.feedburner.com/ObjectlabOpenSourceNews.1.gif" alt="ObjectLab Open Source News" style="border:0"/></a></p><p style="margin-top:5px; padding-top:0; font-size:x-small; text-align:center"><a href="http://www.feedburner.com/fb/a/headlineanimator/install?id=829470&w=1" target="_blank">Grab this Headline Animator</a></p> - <p>2009-08-06: release of 0.6.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.6.0%20released%20on%202009-08-06%20try%20it%20http%3A%2F%2Fstatsvn.org" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> + <p>2010-01-01: release of 0.7.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.7.0%20released%20on%202010-01-01%20try%20it%20http%3A%2F%2Fstatsvn.org" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> + <p>2009-08-06: release of 0.6.0 is released</p> + <p>2009-05-22: release of 0.5.0 is released</p> <p>2009-03-16: release of 0.5.0 beta.</p> Modified: trunk/statsvn.bat =================================================================== --- trunk/statsvn.bat 2010-01-01 10:58:16 UTC (rev 401) +++ trunk/statsvn.bat 2010-01-01 12:05:23 UTC (rev 402) @@ -1,5 +1,5 @@ -svn -v log --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log +rem svn -v log --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log rem mkdir qalab\target\docs\statsvn -java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0|^0.7.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . +java -jar statsvn\dist\statsvn.jar -debug -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0|^0.7.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . -java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\statsvn-html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0|^0.7.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . +java -jar statsvn\dist\statsvn.jar -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\statsvn-html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0|^0.7.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2010-01-01 10:58:28
|
Revision: 401 http://statsvn.svn.sourceforge.net/statsvn/?rev=401&view=rev Author: benoitx Date: 2010-01-01 10:58:16 +0000 (Fri, 01 Jan 2010) Log Message: ----------- Added Paths: ----------- tags/0.7.0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2010-01-01 10:55:37
|
Revision: 400 http://statsvn.svn.sourceforge.net/statsvn/?rev=400&view=rev Author: benoitx Date: 2010-01-01 10:55:29 +0000 (Fri, 01 Jan 2010) Log Message: ----------- getting ready for 0.7.0 Modified Paths: -------------- trunk/statsvn.bat Modified: trunk/statsvn.bat =================================================================== --- trunk/statsvn.bat 2010-01-01 10:46:30 UTC (rev 399) +++ trunk/statsvn.bat 2010-01-01 10:55:29 UTC (rev 400) @@ -1,5 +1,5 @@ svn -v log --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log rem mkdir qalab\target\docs\statsvn -java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . +java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0|^0.7.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . -java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\statsvn-html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . +java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\statsvn-html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0|^0.7.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2010-01-01 10:46:43
|
Revision: 399 http://statsvn.svn.sourceforge.net/statsvn/?rev=399&view=rev Author: benoitx Date: 2010-01-01 10:46:30 +0000 (Fri, 01 Jan 2010) Log Message: ----------- getting ready for 0.7.0 Modified Paths: -------------- trunk/statsvn/.classpath trunk/statsvn/lib/statcvs-0.7.0.jar trunk/statsvn/project.properties trunk/statsvn/project.xml trunk/statsvn/site/changes.xml Modified: trunk/statsvn/.classpath =================================================================== --- trunk/statsvn/.classpath 2009-12-11 13:14:52 UTC (rev 398) +++ trunk/statsvn/.classpath 2010-01-01 10:46:30 UTC (rev 399) @@ -6,7 +6,7 @@ <classpathentry kind="lib" path="lib/ant.jar"/> <classpathentry kind="lib" path="lib/junit.jar"/> <classpathentry kind="lib" path="lib/backport-util-concurrent-3.0.jar"/> - <classpathentry kind="lib" path="lib/statcvs-0.6.0.jar" sourcepath="/statcvs"/> + <classpathentry kind="lib" path="lib/statcvs-0.7.0.jar" sourcepath="/statcvs"/> <classpathentry kind="lib" path="lib/jna.jar"/> <classpathentry kind="lib" path="lib/svnkit.jar"/> <classpathentry kind="output" path="bin"/> Modified: trunk/statsvn/lib/statcvs-0.7.0.jar =================================================================== (Binary files differ) Modified: trunk/statsvn/project.properties =================================================================== --- trunk/statsvn/project.properties 2009-12-11 13:14:52 UTC (rev 398) +++ trunk/statsvn/project.properties 2010-01-01 10:46:30 UTC (rev 399) @@ -2,7 +2,7 @@ # project properties # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -statsvn.version = 0.6.0 +statsvn.version = 0.7.0 statcvs.version = 0.7.0 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Modified: trunk/statsvn/project.xml =================================================================== --- trunk/statsvn/project.xml 2009-12-11 13:14:52 UTC (rev 398) +++ trunk/statsvn/project.xml 2010-01-01 10:46:30 UTC (rev 399) @@ -126,7 +126,7 @@ <name>Benoit Xhenseval</name> <id>benoitx</id> <email>benoitx AT sourceforge DOT net</email> - <organization>ObjectLab Financial Ltd</organization> + <organization>Appendium Ltd</organization> <roles> <role>Developer</role> </roles> @@ -251,6 +251,11 @@ <versions> <version> + <id>0.7.0</id> + <name>0.7.0</name> + <tag>0.7.0</tag> + </version> + <version> <id>0.6.0</id> <name>0.6.0</name> <tag>0.6.0</tag> Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2009-12-11 13:14:52 UTC (rev 398) +++ trunk/statsvn/site/changes.xml 2010-01-01 10:46:30 UTC (rev 399) @@ -4,11 +4,14 @@ <title>StatSVN Changes</title> </properties> <body> - <release version="0.6.0" date="in SVN" description="Maintenance"> - <action dev="benoitx" type="add">Automatic shortening of page URL, using bit.ly javascript for Twitter integration.</action> - <action dev="benoitx" type="add">Reduce scope for the Builder (might save some memory).</action> - <action dev="jkealey" due-to="Markus Schulte" type="add">Add anonymize to Ant Task.</action> - </release> + <release version="0.7.0" date="Jan 2010" description="Maintenance"> + <action dev="benoitx" type="add">Upgrade to StatCVS 0.7.0.</action> + </release> + <release version="0.6.0" date="Not released" description="Maintenance"> + <action dev="benoitx" type="add">Automatic shortening of page URL, using bit.ly javascript for Twitter integration.</action> + <action dev="benoitx" type="add">Reduce scope for the Builder (might save some memory).</action> + <action dev="jkealey" due-to="Markus Schulte" type="add">Add anonymize to Ant Task.</action> + </release> <release version="0.5.0" date="2009-05-22" description="Maintenance"> <action dev="benoitx" type="add">Add new report for 12m Rolling Developer report.</action> <action dev="benoitx" type="add"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jk...@us...> - 2009-12-11 13:15:09
|
Revision: 398 http://statsvn.svn.sourceforge.net/statsvn/?rev=398&view=rev Author: jkealey Date: 2009-12-11 13:14:52 +0000 (Fri, 11 Dec 2009) Log Message: ----------- no bug: Add anonymize to StatSVN ant task. Contributed by Markus Schulte. Modified Paths: -------------- trunk/statsvn/site/changes.xml trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2009-08-31 20:21:45 UTC (rev 397) +++ trunk/statsvn/site/changes.xml 2009-12-11 13:14:52 UTC (rev 398) @@ -7,6 +7,7 @@ <release version="0.6.0" date="in SVN" description="Maintenance"> <action dev="benoitx" type="add">Automatic shortening of page URL, using bit.ly javascript for Twitter integration.</action> <action dev="benoitx" type="add">Reduce scope for the Builder (might save some memory).</action> + <action dev="jkealey" due-to="Markus Schulte" type="add">Add anonymize to Ant Task.</action> </release> <release version="0.5.0" date="2009-05-22" description="Maintenance"> <action dev="benoitx" type="add">Add new report for 12m Rolling Developer report.</action> Modified: trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java 2009-08-31 20:21:45 UTC (rev 397) +++ trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java 2009-12-11 13:14:52 UTC (rev 398) @@ -36,6 +36,9 @@ * @author Jason Kealey */ public class StatSvnTask extends StatCvsTask { + + private boolean anonymize = false; + private String cacheDirectory; private String svnPassword; @@ -83,12 +86,15 @@ */ protected void initProperties() throws ConfigurationException { super.initProperties(); + + SvnConfigurationOptions.setAnonymize(this.anonymize); + if (this.cacheDirectory != null) { SvnConfigurationOptions.setCacheDir(this.cacheDirectory); } else { SvnConfigurationOptions.setCacheDirToDefault(); } - + if (this.svnPassword != null) { SvnConfigurationOptions.setSvnPassword(this.svnPassword); } @@ -111,6 +117,14 @@ } /** + * @param anonymize + * Set Stats to be anonym or not. + */ + public void setAnonymize(final boolean anonymize) { + this.anonymize = anonymize; + } + + /** * @param cacheDirectory * String representing the cache directory of the program */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-08-31 20:21:52
|
Revision: 397 http://statsvn.svn.sourceforge.net/statsvn/?rev=397&view=rev Author: benoitx Date: 2009-08-31 20:21:45 +0000 (Mon, 31 Aug 2009) Log Message: ----------- Moving to version 0.7.0 (beta) of StatCVS. Modified Paths: -------------- trunk/statsvn/project.properties Added Paths: ----------- trunk/statsvn/lib/statcvs-0.7.0.jar Removed Paths: ------------- trunk/statsvn/lib/statcvs-0.6.0.jar Deleted: trunk/statsvn/lib/statcvs-0.6.0.jar =================================================================== (Binary files differ) Added: trunk/statsvn/lib/statcvs-0.7.0.jar =================================================================== (Binary files differ) Property changes on: trunk/statsvn/lib/statcvs-0.7.0.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/statsvn/project.properties =================================================================== --- trunk/statsvn/project.properties 2009-08-20 17:48:38 UTC (rev 396) +++ trunk/statsvn/project.properties 2009-08-31 20:21:45 UTC (rev 397) @@ -3,7 +3,7 @@ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - statsvn.version = 0.6.0 -statcvs.version = 0.6.0 +statcvs.version = 0.7.0 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # maven plugin properties This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-08-20 17:48:54
|
Revision: 396 http://statsvn.svn.sourceforge.net/statsvn/?rev=396&view=rev Author: benoitx Date: 2009-08-20 17:48:38 +0000 (Thu, 20 Aug 2009) Log Message: ----------- Ran FindBugs 1.3.9 on code and followed suggestions. Modified Paths: -------------- trunk/statsvn/qalab.xml trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java Modified: trunk/statsvn/qalab.xml =================================================================== --- trunk/statsvn/qalab.xml 2009-08-17 15:08:27 UTC (rev 395) +++ trunk/statsvn/qalab.xml 2009-08-20 17:48:38 UTC (rev 396) @@ -457,6 +457,14 @@ project="statsvn" statvalue="45" type="cobertura-line"/> <summaryresult date="2009-05-22" filecount="37" module="statsvn" project="statsvn" statvalue="39" type="cobertura-branch"/> + <summaryresult date="2009-08-06" filecount="39" module="statsvn" + project="statsvn" statvalue="3" type="checkstyle"/> + <summaryresult date="2009-08-06" filecount="3" module="statsvn" + project="statsvn" statvalue="5" type="findbugs"/> + <summaryresult date="2009-08-06" filecount="37" module="statsvn" + project="statsvn" statvalue="46" type="cobertura-line"/> + <summaryresult date="2009-08-06" filecount="37" module="statsvn" + project="statsvn" statvalue="41" type="cobertura-branch"/> </summary> <file id="statsvn-statsvn-net_sf_statsvn_output_package.html" module="statsvn" path="net/sf/statsvn/output/package.html" project="statsvn"> @@ -650,6 +658,10 @@ <result date="2009-05-22" statvalue="2" type="findbugs"/> <result date="2009-05-22" statvalue="37" type="cobertura-line"/> <result date="2009-05-22" statvalue="28" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="1" type="checkstyle"/> + <result date="2009-08-06" statvalue="3" type="findbugs"/> + <result date="2009-08-06" statvalue="41" type="cobertura-line"/> + <result date="2009-08-06" statvalue="33" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_Messages.java" module="statsvn" path="net/sf/statsvn/Messages.java" project="statsvn"> @@ -808,6 +820,9 @@ <result date="2009-05-22" statvalue="1" type="findbugs"/> <result date="2009-05-22" statvalue="82" type="cobertura-line"/> <result date="2009-05-22" statvalue="62" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="1" type="findbugs"/> + <result date="2009-08-06" statvalue="86" type="cobertura-line"/> + <result date="2009-08-06" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CacheBuilder.java" module="statsvn" path="net/sf/statsvn/input/CacheBuilder.java" project="statsvn"> @@ -915,6 +930,8 @@ <result date="2009-04-25" statvalue="30" type="cobertura-branch"/> <result date="2009-05-22" statvalue="57" type="cobertura-line"/> <result date="2009-05-22" statvalue="30" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="57" type="cobertura-line"/> + <result date="2009-08-06" statvalue="30" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CommitListBuilder.java" @@ -1072,6 +1089,8 @@ <result date="2009-04-25" statvalue="58" type="cobertura-branch"/> <result date="2009-05-22" statvalue="73" type="cobertura-line"/> <result date="2009-05-22" statvalue="58" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="73" type="cobertura-line"/> + <result date="2009-08-06" statvalue="58" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_LogSyntaxException.java" @@ -1254,6 +1273,9 @@ <result date="2009-05-22" statvalue="1" type="findbugs"/> <result date="2009-05-22" statvalue="40" type="cobertura-line"/> <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="1" type="findbugs"/> + <result date="2009-08-06" statvalue="40" type="cobertura-line"/> + <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_RevisionData.java" module="statsvn" path="net/sf/statsvn/input/RevisionData.java" project="statsvn"> @@ -1397,6 +1419,8 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-line"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="100" type="cobertura-line"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnLogfileParser.java" @@ -1550,6 +1574,8 @@ <result date="2009-04-25" statvalue="64" type="cobertura-branch"/> <result date="2009-05-22" statvalue="76" type="cobertura-line"/> <result date="2009-05-22" statvalue="64" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="76" type="cobertura-line"/> + <result date="2009-08-06" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlCacheFileHandler.java" @@ -1653,6 +1679,8 @@ <result date="2009-04-25" statvalue="61" type="cobertura-branch"/> <result date="2009-05-22" statvalue="87" type="cobertura-line"/> <result date="2009-05-22" statvalue="61" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="87" type="cobertura-line"/> + <result date="2009-08-06" statvalue="61" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlLogFileHandler.java" @@ -1778,6 +1806,8 @@ <result date="2009-04-25" statvalue="68" type="cobertura-branch"/> <result date="2009-05-22" statvalue="85" type="cobertura-line"/> <result date="2009-05-22" statvalue="68" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="85" type="cobertura-line"/> + <result date="2009-08-06" statvalue="68" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlRepositoriesFileHandler.java" @@ -1881,6 +1911,8 @@ <result date="2009-04-25" statvalue="60" type="cobertura-branch"/> <result date="2009-05-22" statvalue="84" type="cobertura-line"/> <result date="2009-05-22" statvalue="60" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="84" type="cobertura-line"/> + <result date="2009-08-06" statvalue="60" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_Author.java" module="statsvn" path="net/sf/statsvn/model/Author.java" project="statsvn"> @@ -3321,6 +3353,8 @@ <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> <result date="2009-05-22" statvalue="83" type="cobertura-line"/> <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="83" type="cobertura-line"/> + <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_IntegerMap.java" module="statsvn" path="net/sf/statsvn/util/IntegerMap.java" project="statsvn"> @@ -3565,6 +3599,8 @@ <result date="2009-04-25" statvalue="25" type="cobertura-branch"/> <result date="2009-05-22" statvalue="34" type="cobertura-line"/> <result date="2009-05-22" statvalue="25" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="34" type="cobertura-line"/> + <result date="2009-08-06" statvalue="25" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandHelper.java" module="statsvn" @@ -3728,6 +3764,8 @@ <result date="2009-04-25" statvalue="53" type="cobertura-branch"/> <result date="2009-05-22" statvalue="62" type="cobertura-line"/> <result date="2009-05-22" statvalue="53" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="62" type="cobertura-line"/> + <result date="2009-08-06" statvalue="53" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnPropgetUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnPropgetUtils.java" project="statsvn"> @@ -3842,6 +3880,8 @@ <result date="2009-04-25" statvalue="19" type="cobertura-branch"/> <result date="2009-05-22" statvalue="27" type="cobertura-line"/> <result date="2009-05-22" statvalue="19" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="27" type="cobertura-line"/> + <result date="2009-08-06" statvalue="19" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnStartupUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnStartupUtils.java" project="statsvn"> @@ -3910,6 +3950,7 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_XMLUtil.java" module="statsvn" path="net/sf/statsvn/util/XMLUtil.java" project="statsvn"> @@ -4041,6 +4082,8 @@ <result date="2009-04-25" statvalue="56" type="cobertura-branch"/> <result date="2009-05-22" statvalue="75" type="cobertura-line"/> <result date="2009-05-22" statvalue="56" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="75" type="cobertura-line"/> + <result date="2009-08-06" statvalue="56" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_reports_FilesLocComparator.java" @@ -4165,6 +4208,8 @@ <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> <result date="2009-05-22" statvalue="79" type="cobertura-line"/> <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="79" type="cobertura-line"/> + <result date="2009-08-06" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_CssHandler.java" module="statsvn" path="net/sf/statsvn/output/CssHandler.java" project="statsvn"> @@ -4332,6 +4377,7 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_DirectoryRoot.java" module="statsvn" path="net/sf/statsvn/model/DirectoryRoot.java" project="statsvn"> @@ -4393,6 +4439,7 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleOutHandler.java" @@ -4507,6 +4554,8 @@ <result date="2009-04-25" statvalue="20" type="cobertura-branch"/> <result date="2009-05-22" statvalue="44" type="cobertura-line"/> <result date="2009-05-22" statvalue="20" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="44" type="cobertura-line"/> + <result date="2009-08-06" statvalue="20" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_SvnCommandLineParser.java" @@ -4607,6 +4656,9 @@ <result date="2009-05-22" statvalue="1" type="checkstyle"/> <result date="2009-05-22" statvalue="32" type="cobertura-line"/> <result date="2009-05-22" statvalue="13" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="1" type="checkstyle"/> + <result date="2009-08-06" statvalue="32" type="cobertura-line"/> + <result date="2009-08-06" statvalue="13" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleTaskLogger.java" @@ -4666,6 +4718,7 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_TaskLogger.java" module="statsvn" path="net/sf/statsvn/util/TaskLogger.java" project="statsvn"> @@ -4749,6 +4802,8 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-line"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="100" type="cobertura-line"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_ant_AntTaskLogger.java" module="statsvn" path="net/sf/statsvn/ant/AntTaskLogger.java" project="statsvn"> @@ -4809,6 +4864,7 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="StatSvn-statsvn-net_sf_statsvn_input_Builder.java" module="statsvn" path="net/sf/statsvn/input/Builder.java" project="StatSvn"/> @@ -5385,6 +5441,8 @@ <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> <result date="2009-05-22" statvalue="75" type="cobertura-line"/> <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> + <result date="2009-08-06" statvalue="75" type="cobertura-line"/> + <result date="2009-08-06" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_EnvReport.java" module="statsvn" path="net/sf/statsvn/util/EnvReport.java" project="statsvn"> @@ -5414,5 +5472,6 @@ <result date="2009-03-14" statvalue="1" type="checkstyle"/> <result date="2009-04-25" statvalue="1" type="checkstyle"/> <result date="2009-05-22" statvalue="1" type="checkstyle"/> + <result date="2009-08-06" statvalue="1" type="checkstyle"/> </file> </qalab> Modified: trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java 2009-08-17 15:08:27 UTC (rev 395) +++ trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java 2009-08-20 17:48:38 UTC (rev 396) @@ -8,6 +8,7 @@ import net.sf.statsvn.output.SvnConfigurationOptions; import net.sf.statsvn.util.BinaryDiffException; +import net.sf.statsvn.util.StringUtils; import net.sf.statsvn.util.SvnDiffUtils; import org.tmatesoft.svn.core.SVNDepth; @@ -24,14 +25,15 @@ */ public class SvnKitDiff extends SvnDiffUtils { - /** * This method converts absolute paths inside the diff output to relative ones. */ private static String replaceRelativePathWithinDiffData(File rootDirectory, String diffData) { String rootPath = rootDirectory.getAbsoluteFile().getAbsolutePath(); - rootPath = rootPath.replace(File.separator, "/") + "/"; - return diffData.replace(rootPath, ""); + // rootPath = rootPath.replace(File.separator, "/") + "/"; // removing dependency to jdk1.5 + rootPath = StringUtils.replace(File.separator, "/", rootPath); + // return diffData.replace(rootPath, ""); // removing dependency to jdk1.5 + return StringUtils.replace(rootPath, "", diffData); } /** Modified: trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java =================================================================== --- trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java 2009-08-17 15:08:27 UTC (rev 395) +++ trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java 2009-08-20 17:48:38 UTC (rev 396) @@ -43,148 +43,156 @@ */ public class DummyRepositoryFileManager extends RepositoryFileManager { - protected HashMap hmFinalLineCounts; + protected HashMap hmFinalLineCounts; - protected String sFinalLineCountsFile; + protected String sFinalLineCountsFile; - protected String sSvnInfoUtilPath; + protected String sSvnInfoUtilPath; - protected String sSvnPropgetPath; + protected String sSvnPropgetPath; - /** - * Only call this constructor if you provide line counts using (@link - * #setLinesOfCode(String, int)) and only use (@link - * #getLinesOfCode(String)) to read them. - * - */ - public DummyRepositoryFileManager() { - super("foo"); - hmFinalLineCounts = new HashMap(); - } + /** + * Only call this constructor if you provide line counts using (@link + * #setLinesOfCode(String, int)) and only use (@link + * #getLinesOfCode(String)) to read them. + * + */ + public DummyRepositoryFileManager() { + super("foo"); + hmFinalLineCounts = new HashMap(); + } - /** - * Creates a new instance with root at <code>pathName</code>. - * - * @param checkedOutPath - * the root of the checked out repository - * @param sSvnInfoUtilPath - * the path of a saved svn info command. - * @param sSvnPropgetPath - * the path of a saved svn propget command - * @param sFinalLineCountsFile - * the path of a saved svn list augmented with linecounts - * command. - * @throws IOException - */ - public DummyRepositoryFileManager(final String checkedOutPath, final String sSvnInfoUtilPath, final String sSvnPropgetPath, - final String sFinalLineCountsFile) throws IOException { - super(checkedOutPath); - this.sSvnInfoUtilPath = sSvnInfoUtilPath; - this.sSvnPropgetPath = sSvnPropgetPath; - this.sFinalLineCountsFile = sFinalLineCountsFile; + /** + * Creates a new instance with root at <code>pathName</code>. + * + * @param checkedOutPath + * the root of the checked out repository + * @param sSvnInfoUtilPath + * the path of a saved svn info command. + * @param sSvnPropgetPath + * the path of a saved svn propget command + * @param sFinalLineCountsFile + * the path of a saved svn list augmented with linecounts + * command. + * @throws IOException + */ + public DummyRepositoryFileManager(final String checkedOutPath, final String sSvnInfoUtilPath, final String sSvnPropgetPath, + final String sFinalLineCountsFile) throws IOException { + super(checkedOutPath); + this.sSvnInfoUtilPath = sSvnInfoUtilPath; + this.sSvnPropgetPath = sSvnPropgetPath; + this.sFinalLineCountsFile = sFinalLineCountsFile; - getProcessor().getPropgetProcessor().loadBinaryFiles(sSvnPropgetPath); + getProcessor().getPropgetProcessor().loadBinaryFiles(sSvnPropgetPath); - final FileReader freader = new FileReader(sFinalLineCountsFile); - final BufferedReader reader = new BufferedReader(freader); - String s; - hmFinalLineCounts = new HashMap(); - while ((s = reader.readLine()) != null) { - final String[] vals = s.split(" "); - if (vals.length == 1) { - continue; - } + FileReader freader = null; + BufferedReader reader = null; + try { + freader = new FileReader(sFinalLineCountsFile); + reader = new BufferedReader(freader); + String s; + hmFinalLineCounts = new HashMap(); + while ((s = reader.readLine()) != null) { + final String[] vals = s.split(" "); + if (vals.length == 1) { + continue; + } - setLinesOfCode(vals[1], Integer.parseInt(vals[0])); - } + setLinesOfCode(vals[1], Integer.parseInt(vals[0])); + } + } finally { + if (freader != null) { + freader.close(); + } + if (reader != null) { + reader.close(); + } + } + } - freader.close(); + /** + * Returns line count differences between two revisions of a file. + * + * @param oldRevNr + * old revision number + * @param newRevNr + * new revision number + * @param filename + * the filename + * @return A int[2] array of [lines added, lines removed] is returned. + * @throws IOException + * problem parsing the stream + */ + public int[] getLineDiff(final String oldRevNr, final String newRevNr, final String filename) throws IOException { + // return SvnDiffUtils.getLineDiff(oldRevNr, newRevNr, filename); + final int[] lines = new int[2]; + lines[0] = 0; + lines[1] = 0; + return lines; - } + } - /** - * Returns line count differences between two revisions of a file. - * - * @param oldRevNr - * old revision number - * @param newRevNr - * new revision number - * @param filename - * the filename - * @return A int[2] array of [lines added, lines removed] is returned. - * @throws IOException - * problem parsing the stream - */ - public int[] getLineDiff(final String oldRevNr, final String newRevNr, final String filename) throws IOException { - // return SvnDiffUtils.getLineDiff(oldRevNr, newRevNr, filename); - final int[] lines = new int[2]; - lines[0] = 0; - lines[1] = 0; - return lines; + /** + * @see net.sf.statsvn.input.RepositoryFileManager#getLinesOfCode(String) + */ + public int getLinesOfCode(final String filename) throws NoLineCountException { + if (hmFinalLineCounts.containsKey(filename)) { + return ((Integer) hmFinalLineCounts.get(filename)).intValue(); + } + throw new NoLineCountException(); + } - } + public String getRevision(final String filename) throws IOException { + if (sSvnInfoUtilPath != null) { + return super.getRevision(filename); + } else { + return ""; + } + } - /** - * @see net.sf.statsvn.input.RepositoryFileManager#getLinesOfCode(String) - */ - public int getLinesOfCode(final String filename) throws NoLineCountException { - if (hmFinalLineCounts.containsKey(filename)) { - return ((Integer) hmFinalLineCounts.get(filename)).intValue(); - } - throw new NoLineCountException(); - } + /** + * Is the given path a binary file in the <b>working</b> directory? + * + * @param relativePath + * the directory + * @return true if it is marked as a binary file + */ + public boolean isBinary(final String relativePath) { + return getProcessor().getPropgetProcessor().getBinaryFiles().contains(relativePath); + } - public String getRevision(final String filename) throws IOException { - if (sSvnInfoUtilPath != null) { - return super.getRevision(filename); - } else { - return ""; - } - } + /** + * Initializes our representation of the repository. + * + * @throws LogSyntaxException + * if the svn info --xml is malformed + * @throws IOException + * if there is an error reading from the stream + */ + public void loadInfo() throws LogSyntaxException, IOException { - /** - * Is the given path a binary file in the <b>working</b> directory? - * - * @param relativePath - * the directory - * @return true if it is marked as a binary file - */ - public boolean isBinary(final String relativePath) { - return getProcessor().getPropgetProcessor().getBinaryFiles().contains(relativePath); - } + final FileInputStream stream = new FileInputStream(sSvnInfoUtilPath); + getProcessor().getInfoProcessor().loadInfo(stream); + } - /** - * Initializes our representation of the repository. - * - * @throws LogSyntaxException - * if the svn info --xml is malformed - * @throws IOException - * if there is an error reading from the stream - */ - public void loadInfo() throws LogSyntaxException, IOException { + /** + * Sets the number of lines of code for specified file + * + * @param filename + * of file to change + * @param lines + * lines of code for specified file + */ + public void setLinesOfCode(final String filename, final int lines) { + hmFinalLineCounts.put(filename, new Integer(lines)); + } - final FileInputStream stream = new FileInputStream(sSvnInfoUtilPath); - getProcessor().getInfoProcessor().loadInfo(stream); - } + private ISvnProcessor svnProcessor; - /** - * Sets the number of lines of code for specified file - * - * @param filename - * of file to change - * @param lines - * lines of code for specified file - */ - public void setLinesOfCode(final String filename, final int lines) { - hmFinalLineCounts.put(filename, new Integer(lines)); - } - - - private ISvnProcessor svnProcessor; - public ISvnProcessor getProcessor() - { - if (svnProcessor==null) svnProcessor = new SvnCommandLineProcessor(); + public ISvnProcessor getProcessor() { + if (svnProcessor == null) + svnProcessor = new SvnCommandLineProcessor(); return svnProcessor; } - + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-08-17 15:08:34
|
Revision: 395 http://statsvn.svn.sourceforge.net/statsvn/?rev=395&view=rev Author: benoitx Date: 2009-08-17 15:08:27 +0000 (Mon, 17 Aug 2009) Log Message: ----------- Removed the http://tr.im links. Modified Paths: -------------- trunk/statsvn/site/index.xml trunk/statsvn/src/net/sf/statsvn/statcvs.properties Modified: trunk/statsvn/site/index.xml =================================================================== --- trunk/statsvn/site/index.xml 2009-08-10 20:08:46 UTC (rev 394) +++ trunk/statsvn/site/index.xml 2009-08-17 15:08:27 UTC (rev 395) @@ -24,9 +24,9 @@ <section name="StatSVN News"> <p style="margin-top:10px; margin-bottom:0; padding-bottom:0; text-align:center; line-height:0"><a href="http://feeds.feedburner.com/~r/ObjectlabOpenSourceNews/~6/1"><img src="http://feeds.feedburner.com/ObjectlabOpenSourceNews.1.gif" alt="ObjectLab Open Source News" style="border:0"/></a></p><p style="margin-top:5px; padding-top:0; font-size:x-small; text-align:center"><a href="http://www.feedburner.com/fb/a/headlineanimator/install?id=829470&w=1" target="_blank">Grab this Headline Animator</a></p> - <p>2009-08-06: release of 0.6.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.6.0%20released%20on%202009-08-06%20try%20it%20http%3A%2F%2Ftr.im%2FkciG" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> + <p>2009-08-06: release of 0.6.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.6.0%20released%20on%202009-08-06%20try%20it%20http%3A%2F%2Fstatsvn.org" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> - <p>2009-05-22: release of 0.5.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.5.0%20released%20on%202009-05-22%20try%20it%20http%3A%2F%2Ftr.im%2FkciG" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> + <p>2009-05-22: release of 0.5.0 is released</p> <p>2009-03-16: release of 0.5.0 beta.</p> Modified: trunk/statsvn/src/net/sf/statsvn/statcvs.properties =================================================================== --- trunk/statsvn/src/net/sf/statsvn/statcvs.properties 2009-08-10 20:08:46 UTC (rev 394) +++ trunk/statsvn/src/net/sf/statsvn/statcvs.properties 2009-08-17 15:08:27 UTC (rev 395) @@ -3,7 +3,7 @@ PROJECT_SHORTNAME=StatSVN PROJECT_VERSION=@VERSION@ PROJECT_URL=http://www.statsvn.org -PROJECT_SMALL_URL=http://tr.im/kciG +PROJECT_SMALL_URL=http://statsvn.org # authors and directories tables AUTHOR_UNKNOWN=Unknown This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jk...@us...> - 2009-08-10 20:09:00
|
Revision: 394 http://statsvn.svn.sourceforge.net/statsvn/?rev=394&view=rev Author: jkealey Date: 2009-08-10 20:08:46 +0000 (Mon, 10 Aug 2009) Log Message: ----------- Implemented usage of svnkit instead of command-line tool. Some work contributed by yogesh. Modified Paths: -------------- trunk/statsvn/.classpath trunk/statsvn/build.xml trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java trunk/statsvn/src/net/sf/statsvn/output/SvnCommandLineParser.java trunk/statsvn/src/net/sf/statsvn/output/SvnConfigurationOptions.java trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java trunk/statsvn/src/net/sf/statsvn/util/SvnPropgetUtils.java trunk/statsvn/src/net/sf/statsvn/util/SvnStartupUtils.java trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java trunk/statsvn/tests-src/net/sf/statsvn/util/SvnDiffUtilsTest.java Added Paths: ----------- trunk/statsvn/lib/jna.jar trunk/statsvn/lib/svnkit.jar trunk/statsvn/src/net/sf/statsvn/util/svnkit/ trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitInfo.java trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitProcessor.java trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitPropget.java trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitVersion.java Modified: trunk/statsvn/.classpath =================================================================== --- trunk/statsvn/.classpath 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/.classpath 2009-08-10 20:08:46 UTC (rev 394) @@ -7,5 +7,7 @@ <classpathentry kind="lib" path="lib/junit.jar"/> <classpathentry kind="lib" path="lib/backport-util-concurrent-3.0.jar"/> <classpathentry kind="lib" path="lib/statcvs-0.6.0.jar" sourcepath="/statcvs"/> + <classpathentry kind="lib" path="lib/jna.jar"/> + <classpathentry kind="lib" path="lib/svnkit.jar"/> <classpathentry kind="output" path="bin"/> </classpath> Modified: trunk/statsvn/build.xml =================================================================== --- trunk/statsvn/build.xml 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/build.xml 2009-08-10 20:08:46 UTC (rev 394) @@ -129,7 +129,7 @@ </java> </target> - <target name="dist" depends="compile,copyfiles"> + <target name="dist" depends="compile,copyfiles"> <!-- Creates an executable jar file for the project --> <unjar src="${lib}/${statcvs.jar}" dest="${build}" /> <!-- Expand and use the concurrent JAR --> @@ -143,6 +143,7 @@ <jar jarfile="${dist}/${project.jar}" basedir="${build}"> <manifest> <attribute name="Main-Class" value="${project.package}.Main" /> + <attribute name="Class-Path" value="svnkit.jar jna.jar" /> </manifest> </jar> </target> Added: trunk/statsvn/lib/jna.jar =================================================================== (Binary files differ) Property changes on: trunk/statsvn/lib/jna.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/statsvn/lib/svnkit.jar =================================================================== (Binary files differ) Property changes on: trunk/statsvn/lib/svnkit.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/ant/StatSvnTask.java 2009-08-10 20:08:46 UTC (rev 394) @@ -47,6 +47,8 @@ private long thresholdInMsToUseConcurrency; private boolean useLegacyDiff = false; + + private boolean useSvnKit = false; /** * Constructor for StatSvnTask. @@ -102,6 +104,9 @@ if (this.useLegacyDiff) { // only override if we don't want it. SvnConfigurationOptions.setLegacyDiff(true); } + if (this.useSvnKit) { // only override if we don't want it. + SvnConfigurationOptions.setUsingSvnKit(true); + } SvnConfigurationOptions.setTaskLogger(new AntTaskLogger(this)); } @@ -153,4 +158,13 @@ public void setLegacyDiff(final boolean isLegacy) { this.useLegacyDiff = isLegacy; } + + /** + * Should we use svn kit to query the repository? + * + * @param isSvnKit true if we want to use svnkit. + */ + public void setSvnKit(final boolean isSvnKit) { + this.useSvnKit = isSvnKit; + } } Modified: trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java 2009-08-10 20:08:46 UTC (rev 394) @@ -37,7 +37,6 @@ import net.sf.statsvn.util.ISvnProcessor; import net.sf.statsvn.util.ISvnPropgetProcessor; import net.sf.statsvn.util.ISvnVersionProcessor; -import net.sf.statsvn.util.SvnCommandLineProcessor; /** * Manages a checked-out repository and provides access to line number counts @@ -332,7 +331,7 @@ private ISvnProcessor svnProcessor; public ISvnProcessor getProcessor() { - if (svnProcessor==null) svnProcessor = new SvnCommandLineProcessor(); + if (svnProcessor==null) svnProcessor = SvnConfigurationOptions.getProcessor(); return svnProcessor; } Modified: trunk/statsvn/src/net/sf/statsvn/output/SvnCommandLineParser.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/output/SvnCommandLineParser.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/output/SvnCommandLineParser.java 2009-08-10 20:08:46 UTC (rev 394) @@ -89,6 +89,8 @@ SvnConfigurationOptions.setDumpContent(true); } else if (s.equals("anonymize")) { SvnConfigurationOptions.setAnonymize(true); + } else if (s.equals("svnkit")) { + SvnConfigurationOptions.setUsingSvnKit(true); } else if (s.equals("force-legacy-diff")) { SvnConfigurationOptions.setLegacyDiff(true); } else { Modified: trunk/statsvn/src/net/sf/statsvn/output/SvnConfigurationOptions.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/output/SvnConfigurationOptions.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/output/SvnConfigurationOptions.java 2009-08-10 20:08:46 UTC (rev 394) @@ -27,8 +27,11 @@ import net.sf.statcvs.output.ConfigurationException; import net.sf.statcvs.output.ConfigurationOptions; import net.sf.statcvs.util.FileUtils; +import net.sf.statsvn.util.ISvnProcessor; import net.sf.statsvn.util.JavaUtilTaskLogger; +import net.sf.statsvn.util.SvnCommandLineProcessor; import net.sf.statsvn.util.TaskLogger; +import net.sf.statsvn.util.svnkit.SvnKitProcessor; /** * Class for storing all command line parameters. The parameters are set by the @@ -68,6 +71,10 @@ // use the newer diff. will be overridden if this is not possible. private static boolean useLegacyDiff = false; + private static ISvnProcessor processor; + + private static boolean useSvnKit = false; + /** * A utility class (only static methods) should be final and have a private * constructor. @@ -244,5 +251,42 @@ public static void setLegacyDiff(final boolean isLegacy) { useLegacyDiff = isLegacy; } + + /** + * Should we use svnkit to query the repository + * + * @return true if we should be using SVN kit. + */ + public static boolean isUsingSVNKit() { + return useSvnKit; + } + /** + * Should we use svnkit to query the repository. + * + * @param isSvnKit true if we should use svnkit + */ + public static void setUsingSvnKit(final boolean isSvnKit) { + useSvnKit = isSvnKit; + } + + public static ISvnProcessor getProcessor() + { + if (processor==null) { + if (isUsingSVNKit()) { + try { + processor = new SvnKitProcessor(); + } catch (NoClassDefFoundError ex) + { + getTaskLogger().error("Unable to find svnkit.jar and/or jna.jar in the same folder as statsvn.jar. Please copy these files and try again."); + throw ex; + } + } + else + processor = new SvnCommandLineProcessor(); + } + return processor; + + } + } Modified: trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java 2009-08-10 20:08:46 UTC (rev 394) @@ -3,6 +3,11 @@ import java.io.IOException; import java.util.Vector; +/** + * Performs svn diff queries. + * @author jkealey + * + */ public interface ISvnDiffProcessor { /** Modified: trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java 2009-08-10 20:08:46 UTC (rev 394) @@ -1,9 +1,16 @@ package net.sf.statsvn.util; import java.io.IOException; +import java.io.InputStream; import net.sf.statcvs.input.LogSyntaxException; +/** + * Performs svn info queries. + * + * @author jkealey + * + */ public interface ISvnInfoProcessor { /** @@ -132,15 +139,15 @@ /** * Loads the information from svn info if needed. * - * @param pUtils - * the process util that contains the input stream representing + * @param stream + * the input stream representing * an svn info command. * @throws LogSyntaxException * if the format of the svn info is invalid * @throws IOException * if we can't read from the response stream. */ - public abstract void loadInfo(final ProcessUtils pUtils) throws LogSyntaxException, IOException; + public abstract void loadInfo(final InputStream stream) throws LogSyntaxException, IOException; /** * Initializes our representation of the repository. Modified: trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java 2009-08-10 20:08:46 UTC (rev 394) @@ -1,5 +1,11 @@ package net.sf.statsvn.util; +/** + * Interface for a base processor. Includes sub processors. + * + * @author jkealey + * + */ public interface ISvnProcessor { public abstract ISvnDiffProcessor getDiffProcessor(); public abstract ISvnInfoProcessor getInfoProcessor(); Modified: trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java 2009-08-10 20:08:46 UTC (rev 394) @@ -3,6 +3,13 @@ import java.io.IOException; import java.util.List; +/** + * + * Performs svn propget queries. + * + * @author jkealey + * + */ public interface ISvnPropgetProcessor { /** Modified: trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java 2009-08-10 20:08:46 UTC (rev 394) @@ -1,5 +1,10 @@ package net.sf.statsvn.util; +/** + * Performs svn version queries. + * @author Administrator + * + */ public interface ISvnVersionProcessor { /** @@ -12,6 +17,12 @@ */ public abstract String checkSvnVersionSufficient() throws SvnVersionMismatchException; + /** + * Verifies that the given version supports one diff per revision (version>=1.4.0) + * + * @param version the current version + * @return true if one can do an svn diff per revision + */ public abstract boolean checkDiffPerRevPossible(final String version); } \ No newline at end of file Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java 2009-08-10 20:08:46 UTC (rev 394) @@ -1,5 +1,11 @@ package net.sf.statsvn.util; + +/** + * Base processor that uses the command line svn client. + * @author jkealey + * + */ public class SvnCommandLineProcessor implements ISvnProcessor { Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java 2009-08-10 20:08:46 UTC (rev 394) @@ -17,7 +17,7 @@ * * @version $Id$ */ -public final class SvnDiffUtils implements ISvnDiffProcessor { +public class SvnDiffUtils implements ISvnDiffProcessor { public static final int RESULT_SIZE = 3; protected static final int PROPERTY_NAME_LINE = 4; @@ -92,8 +92,7 @@ pUtils = callSvnDiff(oldRevNr, newRevNr, filename); final InputStream diffStream = pUtils.getInputStream(); - final LookaheadReader diffReader = new LookaheadReader(new InputStreamReader(diffStream)); - lineDiff = parseDiff(diffReader); + lineDiff = parseSingleDiffStream(diffStream); verifyOutput(pUtils); } finally { @@ -105,6 +104,13 @@ return lineDiff; } + protected int[] parseSingleDiffStream(final InputStream diffStream) throws IOException, BinaryDiffException { + int[] lineDiff; + final LookaheadReader diffReader = new LookaheadReader(new InputStreamReader(diffStream)); + lineDiff = parseDiff(diffReader); + return lineDiff; + } + /** * Verifies the process error stream. * @param pUtils the process call @@ -134,29 +140,8 @@ try { pUtils = callSvnDiff(newRevNr); final InputStream diffStream = pUtils.getInputStream(); - final LookaheadReader diffReader = new LookaheadReader(new InputStreamReader(diffStream)); - String currFile = null; - StringBuffer sb = new StringBuffer(); - while (diffReader.hasNextLine()) { - final String currLine = diffReader.nextLine(); + parseMultipleDiffStream(answer, diffStream); - if (currFile == null && currLine.startsWith(INDEX_MARKER)) { - currFile = currLine.substring(INDEX_MARKER.length()); - } else if (currFile != null && currLine.startsWith(INDEX_MARKER)) { - appendResults(answer, currFile, sb); - sb = new StringBuffer(); - currFile = currLine.substring(INDEX_MARKER.length()); - } - - sb.append(currLine); - sb.append(System.getProperty("line.separator")); - } - - // last file - if (currFile!=null) { - appendResults(answer, currFile, sb); - } - verifyOutput(pUtils); } finally { if (pUtils != null) { @@ -167,6 +152,31 @@ return answer; } + protected void parseMultipleDiffStream(final Vector answer, final InputStream diffStream) throws IOException { + final LookaheadReader diffReader = new LookaheadReader(new InputStreamReader(diffStream)); + String currFile = null; + StringBuffer sb = new StringBuffer(); + while (diffReader.hasNextLine()) { + final String currLine = diffReader.nextLine(); + + if (currFile == null && currLine.startsWith(INDEX_MARKER)) { + currFile = currLine.substring(INDEX_MARKER.length()); + } else if (currFile != null && currLine.startsWith(INDEX_MARKER)) { + appendResults(answer, currFile, sb); + sb = new StringBuffer(); + currFile = currLine.substring(INDEX_MARKER.length()); + } + + sb.append(currLine); + sb.append(System.getProperty("line.separator")); + } + + // last file + if (currFile!=null) { + appendResults(answer, currFile, sb); + } + } + /** * Append results to answer vector. * @param answer the current answers Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java 2009-08-10 20:08:46 UTC (rev 394) @@ -28,12 +28,12 @@ * * @version $Id$ */ -public final class SvnInfoUtils implements ISvnInfoProcessor { +public class SvnInfoUtils implements ISvnInfoProcessor { // HACK: we "should" parse the output and check for a node named root, but this will work well enough private static final String SVN_INFO_WITHREPO_LINE_PATTERN = ".*<root>.+</root>.*"; - private static final String SVN_REPO_ROOT_NOTFOUND = "Repository root not available - verify that the project was checked out with svn version " + protected static final String SVN_REPO_ROOT_NOTFOUND = "Repository root not available - verify that the project was checked out with svn version " + SvnStartupUtils.SVN_MINIMUM_VERSION + " or above."; @@ -107,7 +107,7 @@ getInfoUtils().HS_DIRECTORIES.add(getInfoUtils().urlToRelativePath(sCurrentUrl)); } } else if (eName.equals("uuid")) { - getInfoUtils().sRepositoryUuid = stringData; + getInfoUtils().setRepositoryUuid(stringData); } else if (eName.equals("root")) { getInfoUtils().setRepositoryUrl(stringData); } @@ -155,7 +155,7 @@ * the xml attributes * @return true if is the root folder. */ - protected static boolean isRootFolder(final Attributes attributes) { + protected boolean isRootFolder(final Attributes attributes) { return attributes.getValue("path").equals(".") && attributes.getValue("kind").equals("dir"); } @@ -188,10 +188,10 @@ private final boolean ENABLE_CACHING = true; // relative path -> Revision Number - private final HashMap HM_REVISIONS = new HashMap(); + protected final HashMap HM_REVISIONS = new HashMap(); // if HashSet contains relative path, path is a directory. - private final HashSet HS_DIRECTORIES = new HashSet(); + protected final HashSet HS_DIRECTORIES = new HashSet(); // Path of . in repository. Can only be calculated if given an element from // the SVN log. @@ -384,7 +384,12 @@ ProcessUtils pUtils = null; try { pUtils = getSvnInfo(bRootOnly); - loadInfo(pUtils); + loadInfo(pUtils.getInputStream()); + + if (pUtils.hasErrorOccured()) { + throw new IOException("svn info: " + pUtils.getErrorMessage()); + } + } finally { if (pUtils != null) { pUtils.close(); @@ -395,21 +400,15 @@ /* (non-Javadoc) * @see net.sf.statsvn.util.ISvnInfoProcessor#loadInfo(net.sf.statsvn.util.ProcessUtils) */ - public void loadInfo(final ProcessUtils pUtils) throws LogSyntaxException, IOException { - // is public for tests + public void loadInfo(final InputStream stream) throws LogSyntaxException, IOException { if (isQueryNeeded(true)) { try { - HM_REVISIONS.clear(); - HS_DIRECTORIES.clear(); + clearCache(); final SAXParserFactory factory = SAXParserFactory.newInstance(); final SAXParser parser = factory.newSAXParser(); - parser.parse(pUtils.getInputStream(), new SvnInfoHandler(this)); + parser.parse(stream, new SvnInfoHandler(this)); - if (pUtils.hasErrorOccured()) { - throw new IOException("svn info: " + pUtils.getErrorMessage()); - } - } catch (final ParserConfigurationException e) { throw new LogSyntaxException("svn info: " + e.getMessage()); } catch (final SAXException e) { @@ -418,6 +417,11 @@ } } + protected void clearCache() { + HM_REVISIONS.clear(); + HS_DIRECTORIES.clear(); + } + /* (non-Javadoc) * @see net.sf.statsvn.util.ISvnInfoProcessor#loadInfo() */ @@ -481,6 +485,12 @@ sModuleName = null; } + + protected void setRepositoryUuid(String repositoryUuid) { + sRepositoryUuid = repositoryUuid; + } + + /** * Verifies that the "svn info" command can return the repository root * (info available in svn >= 1.3.0) Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnPropgetUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnPropgetUtils.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnPropgetUtils.java 2009-08-10 20:08:46 UTC (rev 394) @@ -17,9 +17,9 @@ * * @version $Id$ */ -public final class SvnPropgetUtils implements ISvnPropgetProcessor { +public class SvnPropgetUtils implements ISvnPropgetProcessor { - private List binaryFiles; + protected List binaryFiles; protected ISvnProcessor processor; @@ -128,7 +128,6 @@ * stream equivalent to an svn propget command */ protected void loadBinaryFiles(final ProcessUtils pUtils) { - // public for tests binaryFiles = new ArrayList(); final LookaheadReader mimeReader = new LookaheadReader(new InputStreamReader(pUtils.getInputStream())); try { Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnStartupUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnStartupUtils.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnStartupUtils.java 2009-08-10 20:08:46 UTC (rev 394) @@ -16,7 +16,7 @@ * * @version $Id$ */ -public final class SvnStartupUtils implements ISvnVersionProcessor { +public class SvnStartupUtils implements ISvnVersionProcessor { private static final String SVN_VERSION_COMMAND = "svn --version"; public static final String SVN_MINIMUM_VERSION = "1.3.0"; Added: trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitDiff.java 2009-08-10 20:08:46 UTC (rev 394) @@ -0,0 +1,124 @@ +package net.sf.statsvn.util.svnkit; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.Vector; + +import net.sf.statsvn.output.SvnConfigurationOptions; +import net.sf.statsvn.util.BinaryDiffException; +import net.sf.statsvn.util.SvnDiffUtils; + +import org.tmatesoft.svn.core.SVNDepth; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.SVNRevision; + +/** + * + * Performs diffs via svnkit. + * + * @author jkealey, yogesh + * + */ +public class SvnKitDiff extends SvnDiffUtils { + + + /** + * This method converts absolute paths inside the diff output to relative ones. + */ + private static String replaceRelativePathWithinDiffData(File rootDirectory, String diffData) { + String rootPath = rootDirectory.getAbsoluteFile().getAbsolutePath(); + rootPath = rootPath.replace(File.separator, "/") + "/"; + return diffData.replace(rootPath, ""); + } + + /** + * Performs diffs via svnkit. + * + * @param processor the base processor + */ + public SvnKitDiff(SvnKitProcessor processor) { + super(processor); + } + + /** + * Shorthand to get the checked out directory + * @return the checked out directory + */ + public File getCheckoutDirectory() { + return getSvnKitProcessor().getCheckoutDirectory(); + } + + /** + * Gets diffs inside one revision. + * + * @return a list of diffs that were extracted from one particular revision + */ + public Vector getLineDiff(String newRevNr) throws IOException, BinaryDiffException { + ByteArrayOutputStream diffBytes = new ByteArrayOutputStream(); + int revisionNo = Integer.parseInt(newRevNr); + try { + getManager().getDiffClient().doDiff(getCheckoutDirectory(), SVNRevision.create(revisionNo), SVNRevision.create(revisionNo - 1), + SVNRevision.create(revisionNo), SVNDepth.INFINITY, false, diffBytes, null); + } catch (SVNException ex) { + handleSvnException(ex); + } + String modDiffDataStr = replaceRelativePathWithinDiffData(getCheckoutDirectory(), diffBytes.toString()); + + final Vector answer = new Vector(); + parseMultipleDiffStream(answer, new ByteArrayInputStream(modDiffDataStr.getBytes())); + return answer; + } + + /** + * Gets a single diff for a file between two revisions. + */ + public int[] getLineDiff(String oldRevNr, String newRevNr, String filename) throws IOException, BinaryDiffException { + + int oldRevisionNo = Integer.parseInt(oldRevNr); + int newRevisionNo = Integer.parseInt(newRevNr); + File newFile = new File(getProcessor().getInfoProcessor().relativeToAbsolutePath(filename)); + File oldFile = newFile; + ByteArrayOutputStream diffBytes = new ByteArrayOutputStream(); + try { + getManager().getDiffClient().doDiff(oldFile, SVNRevision.create(oldRevisionNo), newFile, SVNRevision.create(newRevisionNo), SVNDepth.INFINITY, + false, diffBytes, null); + } catch (SVNException ex) { + handleSvnException(ex); + } + String modDiffDataStr = replaceRelativePathWithinDiffData(getCheckoutDirectory(), diffBytes.toString()); + + return parseSingleDiffStream(new ByteArrayInputStream(modDiffDataStr.getBytes())); + } + + /** + * Shorthand for the svnkit client manager. + * + * @return the svnkit client manager + */ + public SVNClientManager getManager() { + return getSvnKitProcessor().getManager(); + } + + /** + * Shorthand to get the base processor + * @return the base processor + */ + public SvnKitProcessor getSvnKitProcessor() { + return (SvnKitProcessor) getProcessor(); + } + + /** + * Logs svn exceptions and transforms them into IOExceptions to fit in the existing framework + * + * @param ex the exception + * @throws IOException a re-thrown exception + */ + private void handleSvnException(SVNException ex) throws IOException { + String msg = "svn diff " + ex.getMessage(); + SvnConfigurationOptions.getTaskLogger().error(msg); + throw new IOException(msg); + } +} Added: trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitInfo.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitInfo.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitInfo.java 2009-08-10 20:08:46 UTC (rev 394) @@ -0,0 +1,109 @@ +package net.sf.statsvn.util.svnkit; + +import java.io.File; +import java.io.IOException; + +import net.sf.statcvs.input.LogSyntaxException; +import net.sf.statsvn.output.SvnConfigurationOptions; +import net.sf.statsvn.util.ISvnProcessor; +import net.sf.statsvn.util.SvnInfoUtils; +import net.sf.statsvn.util.SvnVersionMismatchException; + +import org.tmatesoft.svn.core.SVNDepth; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.xml.SVNXMLInfoHandler; +import org.xml.sax.Attributes; + +/** + * + * Performs svn info using svnkit. + * + * @author jkealey, yogesh + * + */ +public class SvnKitInfo extends SvnInfoUtils { + + protected static class SvnKitInfoHandler extends SvnInfoUtils.SvnInfoHandler { + + public SvnKitInfoHandler(SvnInfoUtils infoUtils) { + super(infoUtils); + } + + protected boolean isRootFolder(Attributes attributes) { + String path = attributes.getValue("path"); + // . is never returned by SvnKit, it appears. + return (path.equals(".") || new File(path).equals(((SvnKitInfo) getInfoUtils()).getCheckoutDirectory())) + && attributes.getValue("kind").equals("dir"); + } + + } + + public SvnKitInfo(ISvnProcessor processor) { + super(processor); + } + + /** + * Verifies that the "svn info" command can return the repository root + * (info available in svn >= 1.3.0) + * + * @throws SvnVersionMismatchException + * if <tt>svn info</tt> failed to provide a non-empty repository root + */ + public synchronized void checkRepoRootAvailable() throws SvnVersionMismatchException { + + try { + loadInfo(true); + if (getRootUrl() != null) + return; + } catch (Exception e) { + SvnConfigurationOptions.getTaskLogger().info(e.getMessage()); + } + + throw new SvnVersionMismatchException(SVN_REPO_ROOT_NOTFOUND); + } + + public File getCheckoutDirectory() { + return getSvnKitProcessor().getCheckoutDirectory(); + } + + public SVNClientManager getManager() { + return getSvnKitProcessor().getManager(); + } + + public SvnKitProcessor getSvnKitProcessor() { + return (SvnKitProcessor) getProcessor(); + } + + protected void handleSvnException(SVNException ex) throws IOException { + String msg = "svn info " + ex.getMessage(); + SvnConfigurationOptions.getTaskLogger().error(msg); + throw new IOException(msg); + } + + /** + * Loads the information from svn info if needed. + * + * @param bRootOnly + * load only the root? + * @throws LogSyntaxException + * if the format of the svn info is invalid + * @throws IOException + * if we can't read from the response stream. + */ + protected void loadInfo(final boolean bRootOnly) throws LogSyntaxException, IOException { + if (isQueryNeeded(true /*bRootOnly*/)) { + clearCache(); + + try { + SVNXMLInfoHandler handler = new SVNXMLInfoHandler(new SvnKitInfoHandler(this)); + handler.setTargetPath(getCheckoutDirectory()); + getManager().getWCClient().doInfo(getCheckoutDirectory(), null, null, SVNDepth.fromRecurse(!bRootOnly), null, + handler); + } catch (SVNException e) { + handleSvnException(e); + } + } + } + +} Added: trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitProcessor.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitProcessor.java 2009-08-10 20:08:46 UTC (rev 394) @@ -0,0 +1,88 @@ +package net.sf.statsvn.util.svnkit; + +import java.io.File; + +import net.sf.statsvn.output.SvnConfigurationOptions; +import net.sf.statsvn.util.ISvnDiffProcessor; +import net.sf.statsvn.util.ISvnInfoProcessor; +import net.sf.statsvn.util.ISvnProcessor; +import net.sf.statsvn.util.ISvnPropgetProcessor; +import net.sf.statsvn.util.ISvnVersionProcessor; + +import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory; +import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; +import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.SVNWCUtil; + +/** + * Base svnkit processor. + * + * @author jkealey, yogesh + * + */ +public class SvnKitProcessor implements ISvnProcessor { + + + private File checkoutDirectory; + private ISvnDiffProcessor diffProcessorInstance; + + private ISvnInfoProcessor infoProcessorInstance; + private SVNClientManager manager; + + private ISvnPropgetProcessor propgetProcessorInstance; + private ISvnVersionProcessor versionProcessorInstance; + + public File getCheckoutDirectory() + { + if (checkoutDirectory==null) + { + checkoutDirectory = SvnConfigurationOptions.getCheckedOutDirectoryAsFile(); + } + return checkoutDirectory; + } + public ISvnDiffProcessor getDiffProcessor() + { + if (diffProcessorInstance==null) diffProcessorInstance = new SvnKitDiff(this); + return diffProcessorInstance; + } + + public ISvnInfoProcessor getInfoProcessor() + { + if (infoProcessorInstance==null) infoProcessorInstance = new SvnKitInfo(this); + return infoProcessorInstance; + } + public SVNClientManager getManager() + { + if (manager==null) + { + // initialize + DAVRepositoryFactory.setup(); + SVNRepositoryFactoryImpl.setup(); + FSRepositoryFactory.setup(); + + //readonly - configuration options are available only for reading + DefaultSVNOptions options = SVNWCUtil.createDefaultOptions(true); + options.setAuthStorageEnabled(false); + + // Creates an instance of SVNClientManager providing an options driver & username & password + if (SvnConfigurationOptions.getSvnUsername()!=null && SvnConfigurationOptions.getSvnPassword()!=null) + manager = SVNClientManager.newInstance(options, SvnConfigurationOptions.getSvnUsername(), SvnConfigurationOptions.getSvnPassword()); + else + manager = SVNClientManager.newInstance(options); + } + return manager; + } + + public ISvnPropgetProcessor getPropgetProcessor() + { + if (propgetProcessorInstance==null) propgetProcessorInstance = new SvnKitPropget(this); + return propgetProcessorInstance; + } + public ISvnVersionProcessor getVersionProcessor() + { + if (versionProcessorInstance==null) versionProcessorInstance = new SvnKitVersion(this); + return versionProcessorInstance; + } +} Added: trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitPropget.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitPropget.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitPropget.java 2009-08-10 20:08:46 UTC (rev 394) @@ -0,0 +1,129 @@ +package net.sf.statsvn.util.svnkit; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import net.sf.statsvn.output.SvnConfigurationOptions; +import net.sf.statsvn.util.ISvnProcessor; +import net.sf.statsvn.util.SvnPropgetUtils; + +import org.tmatesoft.svn.core.SVNDepth; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNProperty; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.wc.ISVNPropertyHandler; +import org.tmatesoft.svn.core.wc.SVNClientManager; +import org.tmatesoft.svn.core.wc.SVNPropertyData; +import org.tmatesoft.svn.core.wc.SVNRevision; + +/** + * + * Uses svnkit to do svn propget. + * @author jkealey, yogesh + * + */ +public class SvnKitPropget extends SvnPropgetUtils { + + protected class SvnKitPropertyHandler implements ISVNPropertyHandler { + + protected List binaryFiles; + SvnKitPropget propgetUtils; + + public SvnKitPropertyHandler(SvnKitPropget propgetUtils, List binaryFiles) { + this.binaryFiles = binaryFiles; + this.propgetUtils = propgetUtils; + } + + protected List getBinaryFiles() { + return binaryFiles; + } + + protected SvnKitPropget getPropgetUtils() { + return propgetUtils; + } + + public void handleProperty(File file, SVNPropertyData data) throws SVNException { + if (isBinary(data)) { + String relativePath = file.getAbsoluteFile().getAbsolutePath().substring( + getPropgetUtils().getCheckoutDirectory().getAbsoluteFile().getAbsolutePath().length()+1); + binaryFiles.add(relativePath.replace(File.separatorChar, '/')); + } + } + + public void handleProperty(long revision, SVNPropertyData data) throws SVNException { + // System.out.println(data.getValue()); + } + + public void handleProperty(SVNURL url, SVNPropertyData data) throws SVNException { + if (getPropgetUtils().isBinary(data)) { + String path = getPropgetUtils().getProcessor().getInfoProcessor().urlToRelativePath(url.toString()); + //System.out.println(path); + binaryFiles.add(path.replace(File.separatorChar, '/')); + } + } + + } + + public SvnKitPropget(ISvnProcessor processor) { + super(processor); + } + + public List getBinaryFiles() { + if (binaryFiles == null) { + + binaryFiles = new ArrayList(); + try { + + getManager().getWCClient().doGetProperty(getCheckoutDirectory(), SVNProperty.MIME_TYPE, SVNRevision.WORKING, SVNRevision.WORKING, + SVNDepth.INFINITY, new SvnKitPropertyHandler(this, binaryFiles), null); + } catch (SVNException e) { + try { + handleSvnException(e); + } catch (IOException ex) { + } + } + } + + return binaryFiles; + } + + public File getCheckoutDirectory() { + return getSvnKitProcessor().getCheckoutDirectory(); + } + + public SVNClientManager getManager() { + return getSvnKitProcessor().getManager(); + } + + public SvnKitProcessor getSvnKitProcessor() { + return (SvnKitProcessor) getProcessor(); + } + + protected void handleSvnException(SVNException ex) throws IOException { + String msg = "svn propget " + ex.getMessage(); + SvnConfigurationOptions.getTaskLogger().error(msg); + throw new IOException(msg); + } + + protected boolean isBinary(SVNPropertyData data) { + return data != null && (data.getValue().toString().equals("application/octet-stream") || data.getValue().toString().indexOf("text/") < 0); + } + + public boolean isBinaryFile(final String revision, final String filename) { + try { + // TODO: HAS NEVER BEEN TESTED. + SVNPropertyData data = getManager().getWCClient().doGetProperty(new File(filename), SVNProperty.MIME_TYPE, SVNRevision.parse(revision), + SVNRevision.parse(revision)); + return isBinary(data); + } catch (SVNException e) { + try { + handleSvnException(e); + } catch (IOException ex) { + } + return false; + } + } +} + Added: trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitVersion.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitVersion.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/svnkit/SvnKitVersion.java 2009-08-10 20:08:46 UTC (rev 394) @@ -0,0 +1,27 @@ +package net.sf.statsvn.util.svnkit; + +import net.sf.statsvn.util.ISvnProcessor; +import net.sf.statsvn.util.SvnStartupUtils; +import net.sf.statsvn.util.SvnVersionMismatchException; + +/** + * Runs svn -version using svnkit. (Possible?) + * + * @author jkealey, yogesh + */ +public class SvnKitVersion extends SvnStartupUtils { + + public SvnKitVersion(ISvnProcessor processor) { + super(processor); + } + + public SvnKitProcessor getSvnKitProcessor() { + return (SvnKitProcessor) getProcessor(); + } + + public String checkSvnVersionSufficient() throws SvnVersionMismatchException { + // TODO: Not sure how to implement with svnkit. + return "1.4.0"; + } + +} Modified: trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java =================================================================== --- trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java 2009-08-10 20:08:46 UTC (rev 394) @@ -31,7 +31,6 @@ import net.sf.statcvs.input.LogSyntaxException; import net.sf.statcvs.input.NoLineCountException; import net.sf.statsvn.util.ISvnProcessor; -import net.sf.statsvn.util.ProcessUtils; import net.sf.statsvn.util.SvnCommandLineProcessor; /** @@ -165,13 +164,7 @@ public void loadInfo() throws LogSyntaxException, IOException { final FileInputStream stream = new FileInputStream(sSvnInfoUtilPath); - final ProcessUtils pUtils = new ProcessUtils(); - try { - pUtils.setInputStream(stream); - getProcessor().getInfoProcessor().loadInfo(pUtils); - } finally { - pUtils.close(); - } + getProcessor().getInfoProcessor().loadInfo(stream); } /** Modified: trunk/statsvn/tests-src/net/sf/statsvn/util/SvnDiffUtilsTest.java =================================================================== --- trunk/statsvn/tests-src/net/sf/statsvn/util/SvnDiffUtilsTest.java 2009-08-07 20:26:00 UTC (rev 393) +++ trunk/statsvn/tests-src/net/sf/statsvn/util/SvnDiffUtilsTest.java 2009-08-10 20:08:46 UTC (rev 394) @@ -22,13 +22,13 @@ try { SvnConfigurationOptions.setSvnUsername("jkealey"); SvnConfigurationOptions.setSvnPassword("PASSWORD"); - ConfigurationOptions.setCheckedOutDirectory("k:\\work\\lavablast"); + ConfigurationOptions.setCheckedOutDirectory("C:\\eclipse3.4\\workspace\\statsvn"); ISvnProcessor processor = new SvnCommandLineProcessor(); processor.getInfoProcessor().loadInfo(); ISvnDiffProcessor diffUtils = processor.getDiffProcessor(); - final Vector output = diffUtils.getLineDiff("2435"); + final Vector output = diffUtils.getLineDiff("123"); for (final Iterator iter = output.iterator(); iter.hasNext();) { final Object[] element = (Object[]) iter.next(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jk...@us...> - 2009-08-07 20:26:11
|
Revision: 393 http://statsvn.svn.sourceforge.net/statsvn/?rev=393&view=rev Author: jkealey Date: 2009-08-07 20:26:00 +0000 (Fri, 07 Aug 2009) Log Message: ----------- Refactored svn calls into various interfaces instead of static utility methods. Made it easier to implement an alternate way to query the server (using svnkit, for example). Allowed extensibility in current classes. Modified Paths: -------------- trunk/statsvn/src/net/sf/statsvn/Main.java trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java trunk/statsvn/src/net/sf/statsvn/util/SvnPropgetUtils.java trunk/statsvn/src/net/sf/statsvn/util/SvnStartupUtils.java trunk/statsvn/tests-src/net/sf/statsvn/input/DummyRepositoryFileManager.java trunk/statsvn/tests-src/net/sf/statsvn/input/samplefiles/seg.jUCMNav.info trunk/statsvn/tests-src/net/sf/statsvn/util/SvnDiffUtilsTest.java trunk/statsvn/tests-src/net/sf/statsvn/util/SvnInfoUtilTest.java Added Paths: ----------- trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java trunk/statsvn/src/net/sf/statsvn/util/StringUtils.java trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java Modified: trunk/statsvn/src/net/sf/statsvn/Main.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/Main.java 2009-08-06 11:52:11 UTC (rev 392) +++ trunk/statsvn/src/net/sf/statsvn/Main.java 2009-08-07 20:26:00 UTC (rev 393) @@ -44,7 +44,6 @@ import net.sf.statsvn.input.SvnLogfileParser; import net.sf.statsvn.output.SvnCommandLineParser; import net.sf.statsvn.output.SvnConfigurationOptions; -import net.sf.statsvn.util.SvnStartupUtils; import net.sf.statsvn.util.SvnVersionMismatchException; /** @@ -105,14 +104,16 @@ public static void generate() { try { - final boolean isNewerDiffPossible = SvnStartupUtils.checkDiffPerRevPossible(SvnStartupUtils.checkSvnVersionSufficient()); + RepositoryFileManager manager = createRepoManager(); + String version = manager.getProcessor().getVersionProcessor().checkSvnVersionSufficient(); + final boolean isNewerDiffPossible = manager.getProcessor().getVersionProcessor().checkDiffPerRevPossible(version); // fall-back to older option. if (!isNewerDiffPossible) { SvnConfigurationOptions.setLegacyDiff(true); } - SvnStartupUtils.checkRepoRootAvailable(); - generateDefaultHTMLSuite(); + manager.getProcessor().getInfoProcessor().checkRepoRootAvailable(); + generateDefaultHTMLSuite(manager); } catch (final ConfigurationException cex) { SvnConfigurationOptions.getTaskLogger().error(cex.getMessage()); System.exit(1); @@ -231,9 +232,13 @@ * if a required ConfigurationOption was not set */ public static void generateDefaultHTMLSuite() throws LogSyntaxException, IOException, ConfigurationException { - generateDefaultHTMLSuite(new RepositoryFileManager(ConfigurationOptions.getCheckedOutDirectory())); + generateDefaultHTMLSuite(createRepoManager()); } + private static RepositoryFileManager createRepoManager() { + return new RepositoryFileManager(ConfigurationOptions.getCheckedOutDirectory()); + } + /** * Generates HTML report. {@link net.sf.statsvn.output.ConfigurationOptions} * must be initialized before calling this method. Modified: trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java 2009-08-06 11:52:11 UTC (rev 392) +++ trunk/statsvn/src/net/sf/statsvn/input/RepositoryFileManager.java 2009-08-07 20:26:00 UTC (rev 393) @@ -32,9 +32,12 @@ import net.sf.statcvs.util.FileUtils; import net.sf.statsvn.output.SvnConfigurationOptions; import net.sf.statsvn.util.BinaryDiffException; -import net.sf.statsvn.util.SvnDiffUtils; -import net.sf.statsvn.util.SvnInfoUtils; -import net.sf.statsvn.util.SvnPropgetUtils; +import net.sf.statsvn.util.ISvnDiffProcessor; +import net.sf.statsvn.util.ISvnInfoProcessor; +import net.sf.statsvn.util.ISvnProcessor; +import net.sf.statsvn.util.ISvnPropgetProcessor; +import net.sf.statsvn.util.ISvnVersionProcessor; +import net.sf.statsvn.util.SvnCommandLineProcessor; /** * Manages a checked-out repository and provides access to line number counts @@ -73,7 +76,7 @@ * @return Example: svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html */ public String absolutePathToUrl(final String absolute) { - return SvnInfoUtils.absolutePathToUrl(absolute); + return getInfoProcessor().absolutePathToUrl(absolute); } /** @@ -88,7 +91,7 @@ * @return Example: package.html */ public String absoluteToRelativePath(final String stringData) { - return SvnInfoUtils.absoluteToRelativePath(stringData); + return getInfoProcessor().absoluteToRelativePath(stringData); } /** @@ -99,7 +102,7 @@ * the relative path. */ public void addDirectory(final String relativePath) { - SvnInfoUtils.addDirectory(relativePath); + getInfoProcessor().addDirectory(relativePath); } /** @@ -111,7 +114,7 @@ * @return <tt>true</tt> if it exists */ public boolean existsInWorkingCopy(final String relativePath) { - return SvnInfoUtils.existsInWorkingCopy(relativePath); + return getInfoProcessor().existsInWorkingCopy(relativePath); } /** @@ -148,7 +151,8 @@ * */ public int[] getLineDiff(final String oldRevNr, final String newRevNr, final String filename) throws IOException, BinaryDiffException { - return SvnDiffUtils.getLineDiff(oldRevNr, newRevNr, filename); + + return getDiffProcessor().getLineDiff(oldRevNr, newRevNr, filename); } /** @@ -163,7 +167,7 @@ * if the error message is due to trying to diff binary files. */ public Vector getRevisionDiff(final String newRevNr) throws IOException, BinaryDiffException { - return SvnDiffUtils.getLineDiff(newRevNr); + return getDiffProcessor().getLineDiff(newRevNr); } /** @@ -199,7 +203,7 @@ * repository. */ public String getModuleName() { - return SvnInfoUtils.getModuleName(); + return getInfoProcessor().getModuleName(); } /** @@ -208,7 +212,7 @@ * @return The uuid of the repository. */ public String getRepositoryUuid() { - return SvnInfoUtils.getRepositoryUuid(); + return getInfoProcessor().getRepositoryUuid(); } /** @@ -220,10 +224,10 @@ * @return the revision of filename */ public String getRevision(final String filename) throws IOException { - final String rev = SvnInfoUtils.getRevisionNumber(filename); + final String rev = getInfoProcessor().getRevisionNumber(filename); if (rev != null) { return rev; - } else if (SvnInfoUtils.isDirectory(filename)) { + } else if (getInfoProcessor().isDirectory(filename)) { return null; } else { throw new IOException("File " + filename + " has no revision"); @@ -237,7 +241,7 @@ * (last checked out revision number) */ public String getRootRevisionNumber() { - return SvnInfoUtils.getRootRevisionNumber(); + return getInfoProcessor().getRootRevisionNumber(); } /** @@ -248,7 +252,7 @@ * @return true if it is marked as a binary file */ public boolean isBinary(final String relativePath) { - return SvnPropgetUtils.getBinaryFiles().contains(relativePath); + return getPropgetProcessor().getBinaryFiles().contains(relativePath); } /** @@ -259,7 +263,7 @@ * @return true if it is a known directory. */ public boolean isDirectory(final String relativePath) { - return SvnInfoUtils.isDirectory(relativePath); + return getInfoProcessor().isDirectory(relativePath); } /** @@ -271,7 +275,7 @@ * if there is an error reading from the stream */ public void loadInfo() throws LogSyntaxException, IOException { - SvnInfoUtils.loadInfo(); + getInfoProcessor().loadInfo(); } /** @@ -285,7 +289,7 @@ * */ public String relativePathToUrl(final String relative) { - return SvnInfoUtils.relativePathToUrl(relative); + return getInfoProcessor().relativePathToUrl(relative); } /** @@ -298,7 +302,7 @@ * */ public String relativeToAbsolutePath(final String relative) { - return SvnInfoUtils.relativeToAbsolutePath(relative); + return getInfoProcessor().relativeToAbsolutePath(relative); } /** @@ -310,7 +314,7 @@ * @return Example: /trunk/statsvn, /trunk/statsvn/package.html */ public String urlToAbsolutePath(final String url) { - return SvnInfoUtils.urlToAbsolutePath(url); + return getInfoProcessor().urlToAbsolutePath(url); } /** @@ -322,6 +326,31 @@ * @return Example: ".", package.html */ public String urlToRelativePath(final String url) { - return SvnInfoUtils.urlToRelativePath(url); + return getInfoProcessor().urlToRelativePath(url); } + + private ISvnProcessor svnProcessor; + public ISvnProcessor getProcessor() + { + if (svnProcessor==null) svnProcessor = new SvnCommandLineProcessor(); + return svnProcessor; + } + + protected ISvnDiffProcessor getDiffProcessor() + { + return getProcessor().getDiffProcessor(); + } + + protected ISvnInfoProcessor getInfoProcessor() + { + return getProcessor().getInfoProcessor(); + } + protected ISvnPropgetProcessor getPropgetProcessor() + { + return getProcessor().getPropgetProcessor(); + } + protected ISvnVersionProcessor getVersionProcessor() + { + return getProcessor().getVersionProcessor(); + } } Added: trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnDiffProcessor.java 2009-08-07 20:26:00 UTC (rev 393) @@ -0,0 +1,38 @@ +package net.sf.statsvn.util; + +import java.io.IOException; +import java.util.Vector; + +public interface ISvnDiffProcessor { + + /** + * Returns line count differences between two revisions of a file. + * + * @param oldRevNr + * old revision number + * @param newRevNr + * new revision number + * @param filename + * the filename + * @return A int[2] array of [lines added, lines removed] is returned. + * @throws IOException + * problem parsing the stream + * @throws BinaryDiffException + * if the error message is due to trying to diff binary files. + */ + public abstract int[] getLineDiff(final String oldRevNr, final String newRevNr, final String filename) throws IOException, BinaryDiffException; + + /** + * Returns line count differences for all files in a particular revision. + * + * @param newRevNr + * new revision number + * @return A vector of object[3] array of [filename, int[2](lines added, lines removed), isBinary] is returned. + * @throws IOException + * problem parsing the stream + * @throws BinaryDiffException + * if the error message is due to trying to diff binary files. + */ + public abstract Vector getLineDiff(final String newRevNr) throws IOException, BinaryDiffException; + +} \ No newline at end of file Added: trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnInfoProcessor.java 2009-08-07 20:26:00 UTC (rev 393) @@ -0,0 +1,184 @@ +package net.sf.statsvn.util; + +import java.io.IOException; + +import net.sf.statcvs.input.LogSyntaxException; + +public interface ISvnInfoProcessor { + + /** + * Converts an absolute path in the repository to a path relative to the + * working folder root. + * + * Will return null if absolute path does not start with getModuleName(); + * + * @param absolute + * Example (assume getModuleName() returns /trunk/statsvn) + * /trunk/statsvn/package.html + * @return Example: package.html + */ + public abstract String absoluteToRelativePath(String absolute); + + /** + * Converts an absolute path in the repository to a URL, using the + * repository URL + * + * @param absolute + * Example: /trunk/statsvn/package.html + * @return Example: svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html + */ + public abstract String absolutePathToUrl(final String absolute); + + /** + * Converts a relative path in the working folder to a URL, using the + * working folder's root URL + * + * @param relative + * Example: src/Messages.java + * @return Example: + * svn://svn.statsvn.org/statsvn/trunk/statsvn/src/Messages.java + * + */ + public abstract String relativePathToUrl(String relative); + + /** + * Converts a relative path in the working folder to an absolute path in the + * repository. + * + * @param relative + * Example: src/Messages.java + * @return Example: /trunk/statsvn/src/Messages.java + * + */ + public abstract String relativeToAbsolutePath(final String relative); + + /** + * Returns true if the file exists in the working copy (according to the svn + * metadata, and not file system checks). + * + * @param relativePath + * the path + * @return <tt>true</tt> if it exists + */ + public abstract boolean existsInWorkingCopy(final String relativePath); + + /** + * Assumes #loadInfo(String) has been called. Never ends with /, might be + * empty. + * + * @return The absolute path of the root of the working folder in the + * repository. + */ + public abstract String getModuleName(); + + /** + * Returns the revision number of the file in the working copy. + * + * @param relativePath + * the filename + * @return the revision number if it exists in the working copy, null + * otherwise. + */ + public abstract String getRevisionNumber(final String relativePath); + + /** + * Assumes #loadInfo() has been invoked. + * + * @return the root of the working folder's revision number (last checked + * out revision number) + */ + public abstract String getRootRevisionNumber(); + + /** + * Assumes #loadInfo() has been invoked. + * + * @return the root of the working folder's url (example: + * svn://svn.statsvn.org/statsvn/trunk/statsvn) + */ + public abstract String getRootUrl(); + + /** + * Assumes #loadInfo() has been invoked. + * + * @return the uuid of the repository + */ + public abstract String getRepositoryUuid(); + + /** + * Assumes #loadInfo() has been invoked. + * + * @return the repository url (example: svn://svn.statsvn.org/statsvn) + */ + public abstract String getRepositoryUrl(); + + /** + * Returns true if the path has been identified as a directory. + * + * @param relativePath + * the path + * @return true if it is a known directory. + */ + public abstract boolean isDirectory(final String relativePath); + + /** + * Adds a directory to the list of known directories. Used when inferring + * implicit actions on deleted paths. + * + * @param relativePath + * the relative path. + */ + public abstract void addDirectory(final String relativePath); + + /** + * Loads the information from svn info if needed. + * + * @param pUtils + * the process util that contains the input stream representing + * an svn info command. + * @throws LogSyntaxException + * if the format of the svn info is invalid + * @throws IOException + * if we can't read from the response stream. + */ + public abstract void loadInfo(final ProcessUtils pUtils) throws LogSyntaxException, IOException; + + /** + * Initializes our representation of the repository. + * + * @throws LogSyntaxException + * if the svn info --xml is malformed + * @throws IOException + * if there is an error reading from the stream + */ + public abstract void loadInfo() throws LogSyntaxException, IOException; + + /** + * Converts a url to an absolute path in the repository. + * + * @param url + * Examples: svn://svn.statsvn.org/statsvn/trunk/statsvn, + * svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html + * @return Example: /trunk/statsvn, /trunk/statsvn/package.html + */ + public abstract String urlToAbsolutePath(String url); + + /** + * Converts a url to a relative path in the repository. + * + * @param url + * Examples: svn://svn.statsvn.org/statsvn/trunk/statsvn, + * svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html + * @return Example: ".", package.html + */ + public abstract String urlToRelativePath(final String url); + + + /** + * Verifies that the "svn info" command can return the repository root + * (info available in svn >= 1.3.0) + * + * @throws SvnVersionMismatchException + * if <tt>svn info</tt> failed to provide a non-empty repository root + */ + public abstract void checkRepoRootAvailable() throws SvnVersionMismatchException ; +} \ No newline at end of file Added: trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnProcessor.java 2009-08-07 20:26:00 UTC (rev 393) @@ -0,0 +1,8 @@ +package net.sf.statsvn.util; + +public interface ISvnProcessor { + public abstract ISvnDiffProcessor getDiffProcessor(); + public abstract ISvnInfoProcessor getInfoProcessor(); + public abstract ISvnPropgetProcessor getPropgetProcessor(); + public abstract ISvnVersionProcessor getVersionProcessor(); +} \ No newline at end of file Added: trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnPropgetProcessor.java 2009-08-07 20:26:00 UTC (rev 393) @@ -0,0 +1,37 @@ +package net.sf.statsvn.util; + +import java.io.IOException; +import java.util.List; + +public interface ISvnPropgetProcessor { + + /** + * Returns the list of binary files in the working directory. + * + * @return the list of binary files + */ + public abstract List getBinaryFiles(); + + /** + * It was first thought that a the mime-type of a file's previous revision + * could be found. This is not the case. Leave revision null until future + * upgrade of svn propget command line. + * + * @param revision + * the revision to query + * @param filename + * the filename + * @return if that version of a file is binary + */ + public abstract boolean isBinaryFile(final String revision, final String filename); + + + /** + * Loads the list of binary files from the input stream equivalent to an svn + * propget command. + * + * @param path + * a file on disk which contains the results of an svn propget + */ + public void loadBinaryFiles(final String path) throws IOException; +} \ No newline at end of file Added: trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/ISvnVersionProcessor.java 2009-08-07 20:26:00 UTC (rev 393) @@ -0,0 +1,17 @@ +package net.sf.statsvn.util; + +public interface ISvnVersionProcessor { + + /** + * Verifies that the current revision of SVN is SVN_MINIMUM_VERSION + * + * @throws SvnVersionMismatchException + * if SVN executable not found or version less than + * SVN_MINIMUM_VERSION + * @return the version string + */ + public abstract String checkSvnVersionSufficient() throws SvnVersionMismatchException; + + public abstract boolean checkDiffPerRevPossible(final String version); + +} \ No newline at end of file Added: trunk/statsvn/src/net/sf/statsvn/util/StringUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/StringUtils.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/StringUtils.java 2009-08-07 20:26:00 UTC (rev 393) @@ -0,0 +1,35 @@ +package net.sf.statsvn.util; + +public class StringUtils { + /** + * This method is a 1.4 replacement of the String.replace(CharSequence, CharSequence) found in 1.5. + * @param originalPattern + * @param newPattern + * @param originalString + * @return + */ + public static String replace(final String originalPattern, final String newPattern, final String originalString) { + if ((originalPattern == null) || (originalPattern.length() == 0) || (originalString == null)) { + return originalString; + } + + final StringBuffer newString = new StringBuffer(originalString.length()); + int index = 0; + final int originalLength = originalPattern.length(); + int previousIndex = 0; + + while ((index = originalString.indexOf(originalPattern, index)) != -1) { + newString.append(originalString.substring(previousIndex, index)).append(newPattern); + index += originalLength; + previousIndex = index; + } + + if (previousIndex == 0) { + newString.append(originalString); + } else if (previousIndex != originalString.length()) { + newString.append(originalString.substring(previousIndex)); + } + + return newString.toString(); + } +} Added: trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java (rev 0) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnCommandLineProcessor.java 2009-08-07 20:26:00 UTC (rev 393) @@ -0,0 +1,33 @@ +package net.sf.statsvn.util; + +public class SvnCommandLineProcessor implements ISvnProcessor { + + + private ISvnDiffProcessor diffProcessorInstance; + public ISvnDiffProcessor getDiffProcessor() + { + if (diffProcessorInstance==null) diffProcessorInstance = new SvnDiffUtils(this); + return diffProcessorInstance; + } + + private ISvnInfoProcessor infoProcessorInstance; + public ISvnInfoProcessor getInfoProcessor() + { + if (infoProcessorInstance==null) infoProcessorInstance = new SvnInfoUtils(this); + return infoProcessorInstance; + } + + private ISvnPropgetProcessor propgetProcessorInstance; + public ISvnPropgetProcessor getPropgetProcessor() + { + if (propgetProcessorInstance==null) propgetProcessorInstance = new SvnPropgetUtils(this); + return propgetProcessorInstance; + } + + private ISvnVersionProcessor versionProcessorInstance; + public ISvnVersionProcessor getVersionProcessor() + { + if (versionProcessorInstance==null) versionProcessorInstance = new SvnStartupUtils(this); + return versionProcessorInstance; + } +} Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java 2009-08-06 11:52:11 UTC (rev 392) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnDiffUtils.java 2009-08-07 20:26:00 UTC (rev 393) @@ -17,27 +17,33 @@ * * @version $Id$ */ -public final class SvnDiffUtils { - public static final int RESULT_SIZE = 3; +public final class SvnDiffUtils implements ISvnDiffProcessor { + public static final int RESULT_SIZE = 3; - private static final int PROPERTY_NAME_LINE = 4; + protected static final int PROPERTY_NAME_LINE = 4; - private static final String PROPERTY_CHANGE = "Property changes on:"; + protected static final String PROPERTY_CHANGE = "Property changes on:"; - private static final String PROPERTY_NAME = "Name:"; + protected static final String PROPERTY_NAME = "Name:"; - private static final String BINARY_TYPE = "Cannot display: file marked as a binary type."; + protected static final String BINARY_TYPE = "Cannot display: file marked as a binary type."; - private static final String INDEX_MARKER = "Index: "; + protected static final String INDEX_MARKER = "Index: "; + + protected ISvnProcessor processor; /** - * A utility class (only static methods) should be final and have a private - * constructor. + * Invokes diffs using the svn diff command line. */ - private SvnDiffUtils() { + public SvnDiffUtils(ISvnProcessor processor) { + this.processor = processor; } - /** + protected ISvnProcessor getProcessor() { + return processor; + } + + /** * Calls svn diff for the filename and revisions given. Will use URL * invocation, to ensure that we get diffs even for deleted files. * @@ -51,10 +57,10 @@ * non-empty, will return the error stream instead of the default * input stream. */ - private static synchronized ProcessUtils callSvnDiff(final String oldRevNr, final String newRevNr, String filename) throws IOException { + protected synchronized ProcessUtils callSvnDiff(final String oldRevNr, final String newRevNr, String filename) throws IOException { String svnDiffCommand = null; - filename = SvnInfoUtils.relativePathToUrl(filename); - filename = SvnInfoUtils.replace(" ", "%20", filename); + filename = getProcessor().getInfoProcessor().relativePathToUrl(filename); + filename = StringUtils.replace(" ", "%20", filename); svnDiffCommand = "svn diff --old " + filename + "@" + oldRevNr + " --new " + filename + "@" + newRevNr + "" + SvnCommandHelper.getAuthString(); SvnConfigurationOptions.getTaskLogger().log(Thread.currentThread().getName() + " FIRING command line:\n[" + svnDiffCommand + "]"); return ProcessUtils.call(svnDiffCommand); @@ -69,29 +75,17 @@ * non-empty, will return the error stream instead of the default * input stream. */ - private static synchronized ProcessUtils callSvnDiff(final String newRevNr) throws IOException { + protected synchronized ProcessUtils callSvnDiff(final String newRevNr) throws IOException { String svnDiffCommand = null; - svnDiffCommand = "svn diff -c " + newRevNr + " " + SvnInfoUtils.getRootUrl() + " " + SvnCommandHelper.getAuthString(); + svnDiffCommand = "svn diff -c " + newRevNr + " " + getProcessor().getInfoProcessor().getRootUrl() + " " + SvnCommandHelper.getAuthString(); SvnConfigurationOptions.getTaskLogger().log(Thread.currentThread().getName() + " FIRING command line:\n[" + svnDiffCommand + "]"); return ProcessUtils.call(svnDiffCommand); } - /** - * Returns line count differences between two revisions of a file. - * - * @param oldRevNr - * old revision number - * @param newRevNr - * new revision number - * @param filename - * the filename - * @return A int[2] array of [lines added, lines removed] is returned. - * @throws IOException - * problem parsing the stream - * @throws BinaryDiffException - * if the error message is due to trying to diff binary files. - */ - public static int[] getLineDiff(final String oldRevNr, final String newRevNr, final String filename) throws IOException, BinaryDiffException { + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnDiffProcessor#getLineDiff(java.lang.String, java.lang.String, java.lang.String) + */ + public int[] getLineDiff(final String oldRevNr, final String newRevNr, final String filename) throws IOException, BinaryDiffException { int[] lineDiff; ProcessUtils pUtils = null; try { @@ -117,7 +111,7 @@ * @throws IOException problem parsing the stream * @throws BinaryDiffException if the error message is due to trying to diff binary files. */ - private static void verifyOutput(final ProcessUtils pUtils) throws IOException, BinaryDiffException { + protected void verifyOutput(final ProcessUtils pUtils) throws IOException, BinaryDiffException { if (pUtils.hasErrorOccured()) { // The binary checking code here might be useless... as it may // be output on the standard out. @@ -130,18 +124,10 @@ } } - /** - * Returns line count differences for all files in a particular revision. - * - * @param newRevNr - * new revision number - * @return A vector of object[3] array of [filename, int[2](lines added, lines removed), isBinary] is returned. - * @throws IOException - * problem parsing the stream - * @throws BinaryDiffException - * if the error message is due to trying to diff binary files. - */ - public static Vector getLineDiff(final String newRevNr) throws IOException, BinaryDiffException { + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnDiffProcessor#getLineDiff(java.lang.String) + */ + public Vector getLineDiff(final String newRevNr) throws IOException, BinaryDiffException { final Vector answer = new Vector(); ProcessUtils pUtils = null; @@ -191,7 +177,7 @@ * @throws BinaryDiffException * if the error message is due to trying to diff binary files. */ - private static void appendResults(final Vector answer, final String currFile, final StringBuffer sb) throws IOException { + protected void appendResults(final Vector answer, final String currFile, final StringBuffer sb) throws IOException { int[] lineDiff; Boolean isBinary = Boolean.FALSE; @@ -219,7 +205,7 @@ * the error message given by ProcessUtils.getErrorMessage(); * @return true if the file is binary */ - private static boolean isBinaryErrorMessage(final String msg) { + protected boolean isBinaryErrorMessage(final String msg) { /* * Index: junit.jar * =================================================================== @@ -240,7 +226,7 @@ * @throws IOException * problem parsing the stream */ - private static int[] parseDiff(final LookaheadReader diffReader) throws IOException, BinaryDiffException { + protected int[] parseDiff(final LookaheadReader diffReader) throws IOException, BinaryDiffException { final int[] lineDiff = { -1, -1 }; boolean propertyChange = false; if (!diffReader.hasNextLine()) { Modified: trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java 2009-08-06 11:52:11 UTC (rev 392) +++ trunk/statsvn/src/net/sf/statsvn/util/SvnInfoUtils.java 2009-08-07 20:26:00 UTC (rev 393) @@ -1,6 +1,8 @@ package net.sf.statsvn.util; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.HashMap; @@ -11,6 +13,7 @@ import javax.xml.parsers.SAXParserFactory; import net.sf.statcvs.input.LogSyntaxException; +import net.sf.statcvs.util.LookaheadReader; import net.sf.statsvn.output.SvnConfigurationOptions; import org.xml.sax.Attributes; @@ -25,552 +28,499 @@ * * @version $Id$ */ -public final class SvnInfoUtils { - /** - * A utility class (only static methods) should be final and have - * a private constructor. - */ - private SvnInfoUtils() { - } +public final class SvnInfoUtils implements ISvnInfoProcessor { - /** - * SAX parser for the svn info --xml command. - * - * @author jkealey - */ - protected static class SvnInfoHandler extends DefaultHandler { + // HACK: we "should" parse the output and check for a node named root, but this will work well enough + private static final String SVN_INFO_WITHREPO_LINE_PATTERN = ".*<root>.+</root>.*"; - private boolean isRootFolder = false; + private static final String SVN_REPO_ROOT_NOTFOUND = "Repository root not available - verify that the project was checked out with svn version " + + SvnStartupUtils.SVN_MINIMUM_VERSION + " or above."; - private String sCurrentKind; + + protected ISvnProcessor processor; - private String sCurrentRevision; + /** + * Invokes info using the svn info command line. + */ + public SvnInfoUtils(ISvnProcessor processor) { + this.processor = processor; + } - private String sCurrentUrl; + protected ISvnProcessor getProcessor() { + return processor; + } - private String stringData = ""; + /** + * SAX parser for the svn info --xml command. + * + * @author jkealey + */ + protected static class SvnInfoHandler extends DefaultHandler { - private String sCurrentPath; + private boolean isRootFolder = false; + private String sCurrentKind; + private String sCurrentRevision; + private String sCurrentUrl; + private String stringData = ""; + private String sCurrentPath; + private SvnInfoUtils infoUtils; - /** - * Builds the string that was read; default implementation can invoke - * this function multiple times while reading the data. - */ - public void characters(final char[] ch, final int start, final int length) throws SAXException { - stringData += new String(ch, start, length); - } + public SvnInfoUtils getInfoUtils() { + return infoUtils; + } - /** - * End of xml element. - */ - public void endElement(final String uri, final String localName, final String qName) throws SAXException { - String eName = localName; // element name - if ("".equals(eName)) { - eName = qName; // namespaceAware = false - } + public SvnInfoHandler(SvnInfoUtils infoUtils) { + this.infoUtils = infoUtils; + } - if (isRootFolder && eName.equals("url")) { - isRootFolder = false; - setRootUrl(stringData); - sCurrentUrl = stringData; - } else if (eName.equals("url")) { - sCurrentUrl = stringData; - } else if (eName.equals("entry")) { - if (sCurrentRevision == null || sCurrentUrl == null || sCurrentKind == null) { - throw new SAXException("Invalid svn info xml; unable to find revision or url for path [" + sCurrentPath + "]" + " revision=" - + sCurrentRevision + " url:" + sCurrentUrl + " kind:" + sCurrentKind); - } + /** + * Builds the string that was read; default implementation can invoke + * this function multiple times while reading the data. + */ + public void characters(final char[] ch, final int start, final int length) throws SAXException { + stringData += new String(ch, start, length); + } - HM_REVISIONS.put(urlToRelativePath(sCurrentUrl), sCurrentRevision); - if (sCurrentKind.equals("dir")) { - HS_DIRECTORIES.add(urlToRelativePath(sCurrentUrl)); - } - } else if (eName.equals("uuid")) { - sRepositoryUuid = stringData; - } else if (eName.equals("root")) { - setRepositoryUrl(stringData); - } - } + /** + * End of xml element. + */ + public void endElement(final String uri, final String localName, final String qName) throws SAXException { + String eName = localName; // element name + if ("".equals(eName)) { + eName = qName; // namespaceAware = false + } - /** - * Start of XML element. - */ - public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) throws SAXException { - String eName = localName; // element name - if ("".equals(eName)) { - eName = qName; // namespaceAware = false - } + if (isRootFolder && eName.equals("url")) { + isRootFolder = false; + getInfoUtils().setRootUrl(stringData); + sCurrentUrl = stringData; + } else if (eName.equals("url")) { + sCurrentUrl = stringData; + } else if (eName.equals("entry")) { + if (sCurrentRevision == null || sCurrentUrl == null || sCurrentKind == null) { + throw new SAXException("Invalid svn info xml; unable to find revision or url for path [" + sCurrentPath + "]" + " revision=" + + sCurrentRevision + " url:" + sCurrentUrl + " kind:" + sCurrentKind); + } - if (eName.equals("entry")) { - sCurrentPath = attributes.getValue("path"); - if (!isValidInfoEntry(attributes)) { - throw new SAXException("Invalid svn info xml for entry element. Please verify that you have checked out this project using " - + "Subversion 1.3 or above, not only that you are currently using this version."); - } + getInfoUtils().HM_REVISIONS.put(getInfoUtils().urlToRelativePath(sCurrentUrl), sCurrentRevision); + if (sCurrentKind.equals("dir")) { + getInfoUtils().HS_DIRECTORIES.add(getInfoUtils().urlToRelativePath(sCurrentUrl)); + } + } else if (eName.equals("uuid")) { + getInfoUtils().sRepositoryUuid = stringData; + } else if (eName.equals("root")) { + getInfoUtils().setRepositoryUrl(stringData); + } + } - if (sRootUrl == null && isRootFolder(attributes)) { - isRootFolder = true; - sRootRevisionNumber = attributes.getValue("revision"); - } + /** + * Start of XML element. + */ + public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) throws SAXException { + String eName = localName; // element name + if ("".equals(eName)) { + eName = qName; // namespaceAware = false + } - sCurrentRevision = null; - sCurrentUrl = null; - sCurrentKind = attributes.getValue("kind"); - } else if (eName.equals("commit")) { - if (!isValidCommit(attributes)) { - throw new SAXException("Invalid svn info xml for commit element. Please verify that you have checked out this project using " - + "Subversion 1.3 or above, not only that you are currently using this version."); - } - sCurrentRevision = attributes.getValue("revision"); - } + if (eName.equals("entry")) { + sCurrentPath = attributes.getValue("path"); + if (!isValidInfoEntry(attributes)) { + throw new SAXException("Invalid svn info xml for entry element. Please verify that you have checked out this project using " + + "Subversion 1.3 or above, not only that you are currently using this version."); + } - stringData = ""; - } + if (getInfoUtils().getRootUrl() == null && isRootFolder(attributes)) { + isRootFolder = true; + getInfoUtils().sRootRevisionNumber = attributes.getValue("revision"); + } - /** - * Is this the root of the workspace? - * - * @param attributes - * the xml attributes - * @return true if is the root folder. - */ - private static boolean isRootFolder(final Attributes attributes) { - return attributes.getValue("path").equals(".") && attributes.getValue("kind").equals("dir"); - } + sCurrentRevision = null; + sCurrentUrl = null; + sCurrentKind = attributes.getValue("kind"); + } else if (eName.equals("commit")) { + if (!isValidCommit(attributes)) { + throw new SAXException("Invalid svn info xml for commit element. Please verify that you have checked out this project using " + + "Subversion 1.3 or above, not only that you are currently using this version."); + } + sCurrentRevision = attributes.getValue("revision"); + } - /** - * Is this a valid commit? Check to see if wec an read the revision - * number. - * - * @param attributes - * the xml attributes - * @return true if is a valid commit. - */ - private static boolean isValidCommit(final Attributes attributes) { - return attributes != null && attributes.getValue("revision") != null; - } + stringData = ""; + } - /** - * Is this a valid info entry? Check to see if we can read path, kind - * and revision. - * - * @param attributes - * the xml attributes. - * @return true if is a valid info entry. - */ - private static boolean isValidInfoEntry(final Attributes attributes) { - return attributes != null && attributes.getValue("path") != null && attributes.getValue("kind") != null && attributes.getValue("revision") != null; - } - } + /** + * Is this the root of the workspace? + * + * @param attributes + * the xml attributes + * @return true if is the root folder. + */ + protected static boolean isRootFolder(final Attributes attributes) { + return attributes.getValue("path").equals(".") && attributes.getValue("kind").equals("dir"); + } - // enable caching to speed up calculations - private static final boolean ENABLE_CACHING = true; + /** + * Is this a valid commit? Check to see if wec an read the revision + * number. + * + * @param attributes + * the xml attributes + * @return true if is a valid commit. + */ + protected static boolean isValidCommit(final Attributes attributes) { + return attributes != null && attributes.getValue("revision") != null; + } - // relative path -> Revision Number - private static final HashMap HM_REVISIONS = new HashMap(); + /** + * Is this a valid info entry? Check to see if we can read path, kind + * and revision. + * + * @param attributes + * the xml attributes. + * @return true if is a valid info entry. + */ + protected static boolean isValidInfoEntry(final Attributes attributes) { + return attributes != null && attributes.getValue("path") != null && attributes.getValue("kind") != null && attributes.getValue("revision") != null; + } + } - // if HashSet contains relative path, path is a directory. - private static final HashSet HS_DIRECTORIES = new HashSet(); + // enable caching to speed up calculations + private final boolean ENABLE_CACHING = true; - // Path of . in repository. Can only be calculated if given an element from - // the SVN log. - private static String sModuleName = null; + // relative path -> Revision Number + private final HashMap HM_REVISIONS = new HashMap(); - // Revision number of root folder (.) - private static String sRootRevisionNumber = null; + // if HashSet contains relative path, path is a directory. + private final HashSet HS_DIRECTORIES = new HashSet(); - // URL of root (.) - private static String sRootUrl = null; + // Path of . in repository. Can only be calculated if given an element from + // the SVN log. + private String sModuleName = null; - // UUID of repository - private static String sRepositoryUuid = null; + // Revision number of root folder (.) + private String sRootRevisionNumber = null; - // URL of repository - private static String sRepositoryUrl = null; + // URL of root (.) + private String sRootUrl = null; - /** - * Converts an absolute path in the repository to a path relative to the - * working folder root. - * - * Will return null if absolute path does not start with getModuleName(); - * - * @param absolute - * Example (assume getModuleName() returns /trunk/statsvn) - * /trunk/statsvn/package.html - * @return Example: package.html - */ - public static String absoluteToRelativePath(String absolute) { - if (absolute.endsWith("/")) { - absolute = absolute.substring(0, absolute.length() - 1); - } + // UUID of repository + private String sRepositoryUuid = null; - if (absolute.equals(getModuleName())) { - return "."; - } else if (!absolute.startsWith(getModuleName())) { - return null; - } else { - return absolute.substring(getModuleName().length() + 1); - } - } + // URL of repository + private String sRepositoryUrl = null; - /** - * Converts an absolute path in the repository to a URL, using the - * repository URL - * - * @param absolute - * Example: /trunk/statsvn/package.html - * @return Example: svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html - */ - public static String absolutePathToUrl(final String absolute) { - return getRepositoryUrl() + (absolute.endsWith("/") ? absolute.substring(0, absolute.length() - 1) : absolute); - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#absoluteToRelativePath(java.lang.String) + */ + public String absoluteToRelativePath(String absolute) { + if (absolute.endsWith("/")) { + absolute = absolute.substring(0, absolute.length() - 1); + } - /** - * Converts a relative path in the working folder to a URL, using the - * working folder's root URL - * - * @param relative - * Example: src/Messages.java - * @return Example: - * svn://svn.statsvn.org/statsvn/trunk/statsvn/src/Messages.java - * - */ - public static String relativePathToUrl(String relative) { - relative = relative.replace('\\', '/'); - if (relative.equals(".") || relative.length() == 0) { - return getRootUrl(); - } else { - return getRootUrl() + "/" + (relative.endsWith("/") ? relative.substring(0, relative.length() - 1) : relative); - } - } + if (absolute.equals(getModuleName())) { + return "."; + } else if (!absolute.startsWith(getModuleName())) { + return null; + } else { + return absolute.substring(getModuleName().length() + 1); + } + } - /** - * Converts a relative path in the working folder to an absolute path in the - * repository. - * - * @param relative - * Example: src/Messages.java - * @return Example: /trunk/statsvn/src/Messages.java - * - */ - public static String relativeToAbsolutePath(final String relative) { - return urlToAbsolutePath(relativePathToUrl(relative)); - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#absolutePathToUrl(java.lang.String) + */ + public String absolutePathToUrl(final String absolute) { + return getRepositoryUrl() + (absolute.endsWith("/") ? absolute.substring(0, absolute.length() - 1) : absolute); + } - /** - * Returns true if the file exists in the working copy (according to the svn - * metadata, and not file system checks). - * - * @param relativePath - * the path - * @return <tt>true</tt> if it exists - */ - public static boolean existsInWorkingCopy(final String relativePath) { - return getRevisionNumber(relativePath) != null; - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#relativePathToUrl(java.lang.String) + */ + public String relativePathToUrl(String relative) { + relative = relative.replace('\\', '/'); + if (relative.equals(".") || relative.length() == 0) { + return getRootUrl(); + } else { + return getRootUrl() + "/" + (relative.endsWith("/") ? relative.substring(0, relative.length() - 1) : relative); + } + } - /** - * Assumes #loadInfo(String) has been called. Never ends with /, might be - * empty. - * - * @return The absolute path of the root of the working folder in the - * repository. - */ - public static String getModuleName() { + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#relativeToAbsolutePath(java.lang.String) + */ + public String relativeToAbsolutePath(final String relative) { + return urlToAbsolutePath(relativePathToUrl(relative)); + } - if (sModuleName == null) { + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#existsInWorkingCopy(java.lang.String) + */ + public boolean existsInWorkingCopy(final String relativePath) { + return getRevisionNumber(relativePath) != null; + } - if (getRootUrl().length() < getRepositoryUrl().length() || getRepositoryUrl().length() == 0) { - SvnConfigurationOptions.getTaskLogger().info("Unable to process module name."); - sModuleName = ""; - } else { - try { - sModuleName = URLDecoder.decode(getRootUrl().substring(getRepositoryUrl().length()), "UTF-8"); - } catch (final UnsupportedEncodingException e) { - SvnConfigurationOptions.getTaskLogger().error(e.toString()); - } - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#getModuleName() + */ + public String getModuleName() { - } - return sModuleName; - } + if (sModuleName == null) { - /** - * Returns the revision number of the file in the working copy. - * - * @param relativePath - * the filename - * @return the revision number if it exists in the working copy, null - * otherwise. - */ - public static String getRevisionNumber(final String relativePath) { - if (HM_REVISIONS.containsKey(relativePath)) { - return HM_REVISIONS.get(relativePath).toString(); - } else { - return null; - } - } + if (getRootUrl().length() < getRepositoryUrl().length() || getRepositoryUrl().length() == 0) { + SvnConfigurationOptions.getTaskLogger().info("Unable to process module name."); + sModuleName = ""; + } else { + try { + sModuleName = URLDecoder.decode(getRootUrl().substring(getRepositoryUrl().length()), "UTF-8"); + } catch (final UnsupportedEncodingException e) { + SvnConfigurationOptions.getTaskLogger().error(e.toString()); + } + } - /** - * Assumes #loadInfo() has been invoked. - * - * @return the root of the working folder's revision number (last checked - * out revision number) - */ - public static String getRootRevisionNumber() { - return sRootRevisionNumber; - } + } + return sModuleName; + } - /** - * Assumes #loadInfo() has been invoked. - * - * @return the root of the working folder's url (example: - * svn://svn.statsvn.org/statsvn/trunk/statsvn) - */ - public static String getRootUrl() { - return sRootUrl; - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#getRevisionNumber(java.lang.String) + */ + public String getRevisionNumber(final String relativePath) { + if (HM_REVISIONS.containsKey(relativePath)) { + return HM_REVISIONS.get(relativePath).toString(); + } else { + return null; + } + } - /** - * Assumes #loadInfo() has been invoked. - * - * @return the uuid of the repository - */ - public static String getRepositoryUuid() { - return sRepositoryUuid; - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#getRootRevisionNumber() + */ + public String getRootRevisionNumber() { + return sRootRevisionNumber; + } - /** - * Assumes #loadInfo() has been invoked. - * - * @return the repository url (example: svn://svn.statsvn.org/statsvn) - */ - public static String getRepositoryUrl() { - return sRepositoryUrl; - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#getRootUrl() + */ + public String getRootUrl() { + return sRootUrl; + } - /** - * Invokes svn info. - * - * @param bRootOnly - * true if should we check for the root only or false otherwise - * (recurse for all files) - * @return the response. - */ - protected static synchronized ProcessUtils getSvnInfo(boolean bRootOnly) { - String svnInfoCommand = "svn info --xml"; - if (!bRootOnly) { - svnInfoCommand += " -R"; - } - svnInfoCommand += SvnCommandHelper.getAuthString(); + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#getRepositoryUuid() + */ + public String getRepositoryUuid() { + return sRepositoryUuid; + } - try { - return ProcessUtils.call(svnInfoCommand); - } catch (final Exception e) { - SvnConfigurationOptions.getTaskLogger().error(e.toString()); - return null; - } - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#getRepositoryUrl() + */ + public String getRepositoryUrl() { + return sRepositoryUrl; + } - /** - * Returns true if the path has been identified as a directory. - * - * @param relativePath - * the path - * @return true if it is a known directory. - */ - public static boolean isDirectory(final String relativePath) { - return HS_DIRECTORIES.contains(relativePath); - } + /** + * Invokes svn info. + * + * @param bRootOnly + * true if should we check for the root only or false otherwise + * (recurse for all files) + * @return the response. + */ + protected synchronized ProcessUtils getSvnInfo(boolean bRootOnly) { + String svnInfoCommand = "svn info --xml"; + if (!bRootOnly) { + svnInfoCommand += " -R"; + } + svnInfoCommand += SvnCommandHelper.getAuthString(); - /** - * Adds a directory to the list of known directories. Used when inferring - * implicit actions on deleted paths. - * - * @param relativePath - * the relative path. - */ - public static void addDirectory(final String relativePath) { - if (!HS_DIRECTORIES.contains(relativePath)) { - HS_DIRECTORIES.add(relativePath); - } - } + try { + return ProcessUtils.call(svnInfoCommand); + } catch (final Exception e) { + SvnConfigurationOptions.getTaskLogger().error(e.toString()); + return null; + } + } - /** - * Do we need to re-invoke svn info? - * - * @param bRootOnly - * true if we need the root only - * @return true if we it needs to be re-invoked. - */ - protected static boolean isQueryNeeded(boolean bRootOnly) { - return !ENABLE_CACHING || (bRootOnly && sRootUrl == null) || (!bRootOnly && HM_REVISIONS == null); - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#isDirectory(java.lang.String) + */ + public boolean isDirectory(final String relativePath) { + return HS_DIRECTORIES.contains(relativePath); + } - /** - * Loads the information from svn info if needed. - * - * @param bRootOnly - * load only the root? - * @throws LogSyntaxException - * if the format of the svn info is invalid - * @throws IOException - * if we can't read from the response stream. - */ - protected static void loadInfo(final boolean bRootOnly) throws LogSyntaxException, IOException { - ProcessUtils pUtils = null; - try { - pUtils = getSvnInfo(bRootOnly); - loadInfo(pUtils); - } finally { - if (pUtils != null) { - pUtils.close(); - } - } - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#addDirectory(java.lang.String) + */ + public void addDirectory(final String relativePath) { + if (!HS_DIRECTORIES.contains(relativePath)) { + HS_DIRECTORIES.add(relativePath); + } + } - /** - * Loads the information from svn info if needed. - * - * @param pUtils - * the process util that contains the input stream representing - * an svn info command. - * @throws LogSyntaxException - * if the format of the svn info is invalid - * @throws IOException - * if we can't read from the response stream. - */ - public static void loadInfo(final ProcessUtils pUtils) throws LogSyntaxException, IOException { - // is public for tests - if (isQueryNeeded(true)) { - try { - HM_REVISIONS.clear(); - HS_DIRECTORIES.clear(); + /** + * Do we need to re-invoke svn info? + * + * @param bRootOnly + * true if we need the root only + * @return true if we it needs to be re-invoked. + */ + protected boolean isQueryNeeded(boolean bRootOnly) { + return !ENABLE_CACHING || (bRootOnly && sRootUrl == null) || (!bRootOnly && HM_REVISIONS == null); + } - final SAXParserFactory factory = SAXParserFactory.newInstance(); - final SAXParser parser = factory.newSAXParser(); - parser.parse(pUtils.getInputStream(), new SvnInfoHandler()); + /** + * Loads the information from svn info if needed. + * + * @param bRootOnly + * load only the root? + * @throws LogSyntaxException + * if the format of the svn info is invalid + * @throws IOException + * if we can't read from the response stream. + */ + protected void loadInfo(final boolean bRootOnly) throws LogSyntaxException, IOException { + ProcessUtils pUtils = null; + try { + pUtils = getSvnInfo(bRootOnly); + loadInfo(pUtils); + } finally { + if (pUtils != null) { + pUtils.close(); + } + } + } - if (pUtils.hasErrorOccured()) { - throw new IOException("svn info: " + pUtils.getErrorMessage()); - } + /* (non-Javadoc) + * @see net.sf.statsvn.util.ISvnInfoProcessor#loadInfo(net.sf.statsvn.util.ProcessUtils) + */ + public void loadInfo(final ProcessUtils pUtils) throws LogSyntaxException, IOException { + // is public for tests + if (isQueryNeeded(true)) { + try { + HM_REVISIONS.clear(); + HS_DIRECTORIES.clear(); - } catch (final ParserConfigurationException e) { - throw new LogSyntaxException("svn info: " + e.getMessage()); - } catch (final SAXException e) { - throw new LogSyntaxException("svn info: " + e.getMessage()); - } - } - } + final SAXParserFactory factory = SAXParserFactory.newInstance(); + final SAXParser parser = factory.newSAXParser(); + parser.parse(pUtils.getInputStream(), new SvnInfoHandler(this)); - /** - * Initializes our representation of the repository. - * - * @throws LogSyntaxException - * if the svn info --xml is malformed - * @throws IOException - * if there is an error reading from the stream - */ - public static void loadInfo() throws LogSyntaxException, IOException { - loadInfo(false); - } + if (pUtils.hasErrorOccured()) { + throw new IOException("svn info: " + pUtils.getErrorMessage()); + } - /** - * Converts a url to an absolute path in the repository. - * - * @param url - * Examples: svn://svn.statsvn.org/statsvn/trunk/statsvn, - * svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html - * @return Example: /trunk/statsvn, /trunk/statsvn/package.html - */ - public static String urlToAbsolutePath(String url) { - if (url.endsWith("/")) { - url = url.substring(0, url.length() - 1); - } - if (getModuleName().length() <= 1) { - ... [truncated message content] |
From: <be...@us...> - 2009-08-06 11:52:19
|
Revision: 392 http://statsvn.svn.sourceforge.net/statsvn/?rev=392&view=rev Author: benoitx Date: 2009-08-06 11:52:11 +0000 (Thu, 06 Aug 2009) Log Message: ----------- Prepare release 0.6.0 Modified Paths: -------------- trunk/statsvn/lib/statcvs-0.6.0.jar trunk/statsvn/project.xml trunk/statsvn/site/changes.xml trunk/statsvn/site/index.xml trunk/statsvn.bat Modified: trunk/statsvn/lib/statcvs-0.6.0.jar =================================================================== (Binary files differ) Modified: trunk/statsvn/project.xml =================================================================== --- trunk/statsvn/project.xml 2009-06-02 15:42:58 UTC (rev 391) +++ trunk/statsvn/project.xml 2009-08-06 11:52:11 UTC (rev 392) @@ -159,7 +159,7 @@ <dependency> <groupId>net.sf.statcvs</groupId> <artifactId>statcvs</artifactId> - <version>0.5.0</version> + <version>0.6.0</version> <type>jar</type> <url>http://statcvs.sourceforge.net/</url> </dependency> @@ -172,14 +172,14 @@ <dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> - <version>1.0.2</version> + <version>1.0.13</version> <type>jar</type> <url>http://www.jfree.org/</url> </dependency> <dependency> <groupId>jfree</groupId> <artifactId>jcommon</artifactId> - <version>1.0.5</version> + <version>1.0.16</version> <type>jar</type> <url>http://www.jfree.org/</url> </dependency> @@ -251,6 +251,11 @@ <versions> <version> + <id>0.6.0</id> + <name>0.6.0</name> + <tag>0.6.0</tag> + </version> + <version> <id>0.5.0</id> <name>0.5.0</name> <tag>0.5.0</tag> Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2009-06-02 15:42:58 UTC (rev 391) +++ trunk/statsvn/site/changes.xml 2009-08-06 11:52:11 UTC (rev 392) @@ -5,6 +5,7 @@ </properties> <body> <release version="0.6.0" date="in SVN" description="Maintenance"> + <action dev="benoitx" type="add">Automatic shortening of page URL, using bit.ly javascript for Twitter integration.</action> <action dev="benoitx" type="add">Reduce scope for the Builder (might save some memory).</action> </release> <release version="0.5.0" date="2009-05-22" description="Maintenance"> Modified: trunk/statsvn/site/index.xml =================================================================== --- trunk/statsvn/site/index.xml 2009-06-02 15:42:58 UTC (rev 391) +++ trunk/statsvn/site/index.xml 2009-08-06 11:52:11 UTC (rev 392) @@ -24,6 +24,8 @@ <section name="StatSVN News"> <p style="margin-top:10px; margin-bottom:0; padding-bottom:0; text-align:center; line-height:0"><a href="http://feeds.feedburner.com/~r/ObjectlabOpenSourceNews/~6/1"><img src="http://feeds.feedburner.com/ObjectlabOpenSourceNews.1.gif" alt="ObjectLab Open Source News" style="border:0"/></a></p><p style="margin-top:5px; padding-top:0; font-size:x-small; text-align:center"><a href="http://www.feedburner.com/fb/a/headlineanimator/install?id=829470&w=1" target="_blank">Grab this Headline Animator</a></p> + <p>2009-08-06: release of 0.6.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.6.0%20released%20on%202009-08-06%20try%20it%20http%3A%2F%2Ftr.im%2FkciG" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> + <p>2009-05-22: release of 0.5.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.5.0%20released%20on%202009-05-22%20try%20it%20http%3A%2F%2Ftr.im%2FkciG" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> <p>2009-03-16: release of 0.5.0 beta.</p> Modified: trunk/statsvn.bat =================================================================== --- trunk/statsvn.bat 2009-06-02 15:42:58 UTC (rev 391) +++ trunk/statsvn.bat 2009-08-06 11:52:11 UTC (rev 392) @@ -1,5 +1,5 @@ -svn log -v --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log +svn -v log --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log rem mkdir qalab\target\docs\statsvn -java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . +java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . -java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\statsvn-html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . +java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\statsvn-html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0|^0.6.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-06-02 15:42:59
|
Revision: 391 http://statsvn.svn.sourceforge.net/statsvn/?rev=391&view=rev Author: benoitx Date: 2009-06-02 15:42:58 +0000 (Tue, 02 Jun 2009) Log Message: ----------- Move to 0.6.0 and the StatCVS 0.6.0 which is far less memory hungry. Modified Paths: -------------- trunk/statsvn/.classpath trunk/statsvn/.settings/org.eclipse.jdt.ui.prefs trunk/statsvn/project.properties trunk/statsvn/site/index.xml Added Paths: ----------- trunk/statsvn/lib/statcvs-0.6.0.jar Removed Paths: ------------- trunk/statsvn/lib/statcvs-0.5.0.jar Modified: trunk/statsvn/.classpath =================================================================== --- trunk/statsvn/.classpath 2009-06-02 15:15:15 UTC (rev 390) +++ trunk/statsvn/.classpath 2009-06-02 15:42:58 UTC (rev 391) @@ -6,6 +6,6 @@ <classpathentry kind="lib" path="lib/ant.jar"/> <classpathentry kind="lib" path="lib/junit.jar"/> <classpathentry kind="lib" path="lib/backport-util-concurrent-3.0.jar"/> - <classpathentry kind="lib" path="lib/statcvs-0.5.0.jar" sourcepath="/statcvs"/> + <classpathentry kind="lib" path="lib/statcvs-0.6.0.jar" sourcepath="/statcvs"/> <classpathentry kind="output" path="bin"/> </classpath> Modified: trunk/statsvn/.settings/org.eclipse.jdt.ui.prefs =================================================================== --- trunk/statsvn/.settings/org.eclipse.jdt.ui.prefs 2009-06-02 15:15:15 UTC (rev 390) +++ trunk/statsvn/.settings/org.eclipse.jdt.ui.prefs 2009-06-02 15:42:58 UTC (rev 391) @@ -1,20 +1,24 @@ -#Tue Apr 01 16:25:36 BST 2008 +#Fri May 29 12:02:49 BST 2009 cleanup.add_default_serial_version_id=true cleanup.add_generated_serial_version_id=false cleanup.add_missing_annotations=false cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false cleanup.add_missing_nls_tags=false cleanup.add_missing_override_annotations=true -cleanup.add_serial_version_id=false +cleanup.add_serial_version_id=true cleanup.always_use_blocks=true cleanup.always_use_parentheses_in_expressions=false cleanup.always_use_this_for_non_static_field_access=false cleanup.always_use_this_for_non_static_method_access=false cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=false cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false cleanup.make_local_variable_final=true cleanup.make_parameters_final=true cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false cleanup.make_variable_declarations_final=true cleanup.never_use_blocks=false cleanup.never_use_parentheses_in_expressions=true Deleted: trunk/statsvn/lib/statcvs-0.5.0.jar =================================================================== (Binary files differ) Added: trunk/statsvn/lib/statcvs-0.6.0.jar =================================================================== (Binary files differ) Property changes on: trunk/statsvn/lib/statcvs-0.6.0.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/statsvn/project.properties =================================================================== --- trunk/statsvn/project.properties 2009-06-02 15:15:15 UTC (rev 390) +++ trunk/statsvn/project.properties 2009-06-02 15:42:58 UTC (rev 391) @@ -3,7 +3,7 @@ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - statsvn.version = 0.6.0 -statcvs.version = 0.5.0 +statcvs.version = 0.6.0 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # maven plugin properties Modified: trunk/statsvn/site/index.xml =================================================================== --- trunk/statsvn/site/index.xml 2009-06-02 15:15:15 UTC (rev 390) +++ trunk/statsvn/site/index.xml 2009-06-02 15:42:58 UTC (rev 391) @@ -115,7 +115,7 @@ </section> <section name="Quick Example for Maven 1"> - <p>Prior to run maven site (or simply maven xdoc), you can generate the XDOC files by running: + <p>Prior to run maven site (or simply maven xdoc), you can generate the XDOC files by running: (<strong>do not forget -v</strong>). <source> svn log -v --xml https://svn.sourceforge.net/svnroot/statsvn/ > svn.log java -jar statsvn.jar -xdoc -verbose -output-dir site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9" -title StatSVN @@ -127,7 +127,7 @@ </section> <section name="Quick Example of new 'dump'"> - <p>There is a new dump facility + <p>There is a new dump facility (<strong>do not forget -v</strong>). <source> svn log -v --xml https://svn.sourceforge.net/svnroot/statsvn/ > svn.log java -jar statsvn.jar -dump -verbose -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" ./svn.log . This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-06-02 15:15:16
|
Revision: 390 http://statsvn.svn.sourceforge.net/statsvn/?rev=390&view=rev Author: benoitx Date: 2009-06-02 15:15:15 +0000 (Tue, 02 Jun 2009) Log Message: ----------- Mentioning possible issues Modified Paths: -------------- trunk/statsvn/src/net/sf/statsvn/Main.java Modified: trunk/statsvn/src/net/sf/statsvn/Main.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/Main.java 2009-05-27 18:17:59 UTC (rev 389) +++ trunk/statsvn/src/net/sf/statsvn/Main.java 2009-06-02 15:15:15 UTC (rev 390) @@ -264,7 +264,11 @@ initLogManager(ConfigurationOptions.getLoggingProperties()); SvnConfigurationOptions.getTaskLogger().info( - "Parsing SVN log '" + ConfigurationOptions.getLogFileName() + "' exclude pattern '" + ConfigurationOptions.getExcludePattern() + "'"); + "Parsing SVN log '" + + ConfigurationOptions.getLogFileName() + + "'" + + (ConfigurationOptions.getExcludePattern() != null ? " exclude pattern '" + ConfigurationOptions.getExcludePattern() + "'" + : "No exclude pattern")); FileInputStream logFile = null; Builder builder = null; @@ -296,7 +300,7 @@ builder.clean(); builder = null; - + // make JFreeChart work on systems without GUI System.setProperty("java.awt.headless", "true"); @@ -329,8 +333,10 @@ private static void validate(final ReportConfig config) { if (config.getRepository() == null || config.getRepository().getRoot() == null || config.getRepository().getDirectories() == null) { - printErrorMessageAndExit("The repository object is not valid. Please check your settings." + System.getProperty("line.separator") - + "Is the log file empty? Do you run from a checked out directory? Do you have non-committed items?"); + String cr = System.getProperty("line.separator"); + printErrorMessageAndExit("The repository object is not valid. Please check your settings." + cr + "Possible reasons:" + cr + + "1/ Did you use the option -v to create the SVN log" + cr + "2/ Is the log file empty?" + cr + + "3/ Do you run from a checked out directory (you should)?" + cr + "4/ Do you have non-committed items?"); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-05-27 18:19:13
|
Revision: 389 http://statsvn.svn.sourceforge.net/statsvn/?rev=389&view=rev Author: benoitx Date: 2009-05-27 18:17:59 +0000 (Wed, 27 May 2009) Log Message: ----------- free the Builder as soon as possible in order to reduce the max memory required. Modified Paths: -------------- trunk/statsvn/project.properties trunk/statsvn/qalab.xml trunk/statsvn/site/changes.xml trunk/statsvn/site/index.xml trunk/statsvn/site/navigation.xml trunk/statsvn/src/net/sf/statsvn/Main.java trunk/statsvn/src/net/sf/statsvn/input/Builder.java trunk/statsvn.bat Modified: trunk/statsvn/project.properties =================================================================== --- trunk/statsvn/project.properties 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn/project.properties 2009-05-27 18:17:59 UTC (rev 389) @@ -2,7 +2,7 @@ # project properties # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -statsvn.version = 0.5.0 +statsvn.version = 0.6.0 statcvs.version = 0.5.0 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Modified: trunk/statsvn/qalab.xml =================================================================== --- trunk/statsvn/qalab.xml 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn/qalab.xml 2009-05-27 18:17:59 UTC (rev 389) @@ -449,6 +449,14 @@ project="statsvn" statvalue="45" type="cobertura-line"/> <summaryresult date="2009-04-25" filecount="37" module="statsvn" project="statsvn" statvalue="39" type="cobertura-branch"/> + <summaryresult date="2009-05-22" filecount="42" module="statsvn" + project="statsvn" statvalue="2" type="checkstyle"/> + <summaryresult date="2009-05-22" filecount="3" module="statsvn" + project="statsvn" statvalue="4" type="findbugs"/> + <summaryresult date="2009-05-22" filecount="37" module="statsvn" + project="statsvn" statvalue="45" type="cobertura-line"/> + <summaryresult date="2009-05-22" filecount="37" module="statsvn" + project="statsvn" statvalue="39" type="cobertura-branch"/> </summary> <file id="statsvn-statsvn-net_sf_statsvn_output_package.html" module="statsvn" path="net/sf/statsvn/output/package.html" project="statsvn"> @@ -639,6 +647,9 @@ <result date="2009-04-25" statvalue="2" type="findbugs"/> <result date="2009-04-25" statvalue="37" type="cobertura-line"/> <result date="2009-04-25" statvalue="28" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="2" type="findbugs"/> + <result date="2009-05-22" statvalue="37" type="cobertura-line"/> + <result date="2009-05-22" statvalue="28" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_Messages.java" module="statsvn" path="net/sf/statsvn/Messages.java" project="statsvn"> @@ -794,6 +805,9 @@ <result date="2009-04-25" statvalue="1" type="findbugs"/> <result date="2009-04-25" statvalue="82" type="cobertura-line"/> <result date="2009-04-25" statvalue="62" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="1" type="findbugs"/> + <result date="2009-05-22" statvalue="82" type="cobertura-line"/> + <result date="2009-05-22" statvalue="62" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CacheBuilder.java" module="statsvn" path="net/sf/statsvn/input/CacheBuilder.java" project="statsvn"> @@ -899,6 +913,8 @@ <result date="2009-03-14" statvalue="30" type="cobertura-branch"/> <result date="2009-04-25" statvalue="57" type="cobertura-line"/> <result date="2009-04-25" statvalue="30" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="57" type="cobertura-line"/> + <result date="2009-05-22" statvalue="30" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CommitListBuilder.java" @@ -1054,6 +1070,8 @@ <result date="2009-03-14" statvalue="58" type="cobertura-branch"/> <result date="2009-04-25" statvalue="73" type="cobertura-line"/> <result date="2009-04-25" statvalue="58" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="73" type="cobertura-line"/> + <result date="2009-05-22" statvalue="58" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_LogSyntaxException.java" @@ -1233,6 +1251,9 @@ <result date="2009-04-25" statvalue="1" type="findbugs"/> <result date="2009-04-25" statvalue="40" type="cobertura-line"/> <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="1" type="findbugs"/> + <result date="2009-05-22" statvalue="40" type="cobertura-line"/> + <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_RevisionData.java" module="statsvn" path="net/sf/statsvn/input/RevisionData.java" project="statsvn"> @@ -1374,6 +1395,8 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-line"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="100" type="cobertura-line"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnLogfileParser.java" @@ -1525,6 +1548,8 @@ <result date="2009-03-14" statvalue="64" type="cobertura-branch"/> <result date="2009-04-25" statvalue="76" type="cobertura-line"/> <result date="2009-04-25" statvalue="64" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="76" type="cobertura-line"/> + <result date="2009-05-22" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlCacheFileHandler.java" @@ -1626,6 +1651,8 @@ <result date="2009-03-14" statvalue="61" type="cobertura-branch"/> <result date="2009-04-25" statvalue="87" type="cobertura-line"/> <result date="2009-04-25" statvalue="61" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="87" type="cobertura-line"/> + <result date="2009-05-22" statvalue="61" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlLogFileHandler.java" @@ -1749,6 +1776,8 @@ <result date="2009-03-14" statvalue="68" type="cobertura-branch"/> <result date="2009-04-25" statvalue="85" type="cobertura-line"/> <result date="2009-04-25" statvalue="68" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="85" type="cobertura-line"/> + <result date="2009-05-22" statvalue="68" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlRepositoriesFileHandler.java" @@ -1850,6 +1879,8 @@ <result date="2009-03-14" statvalue="60" type="cobertura-branch"/> <result date="2009-04-25" statvalue="84" type="cobertura-line"/> <result date="2009-04-25" statvalue="60" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="84" type="cobertura-line"/> + <result date="2009-05-22" statvalue="60" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_Author.java" module="statsvn" path="net/sf/statsvn/model/Author.java" project="statsvn"> @@ -3288,6 +3319,8 @@ <result date="2009-03-14" statvalue="50" type="cobertura-branch"/> <result date="2009-04-25" statvalue="83" type="cobertura-line"/> <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="83" type="cobertura-line"/> + <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_IntegerMap.java" module="statsvn" path="net/sf/statsvn/util/IntegerMap.java" project="statsvn"> @@ -3530,6 +3563,8 @@ <result date="2009-03-14" statvalue="25" type="cobertura-branch"/> <result date="2009-04-25" statvalue="34" type="cobertura-line"/> <result date="2009-04-25" statvalue="25" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="34" type="cobertura-line"/> + <result date="2009-05-22" statvalue="25" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandHelper.java" module="statsvn" @@ -3691,6 +3726,8 @@ <result date="2009-03-14" statvalue="53" type="cobertura-branch"/> <result date="2009-04-25" statvalue="62" type="cobertura-line"/> <result date="2009-04-25" statvalue="53" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="62" type="cobertura-line"/> + <result date="2009-05-22" statvalue="53" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnPropgetUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnPropgetUtils.java" project="statsvn"> @@ -3803,6 +3840,8 @@ <result date="2009-03-14" statvalue="19" type="cobertura-branch"/> <result date="2009-04-25" statvalue="27" type="cobertura-line"/> <result date="2009-04-25" statvalue="19" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="27" type="cobertura-line"/> + <result date="2009-05-22" statvalue="19" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnStartupUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnStartupUtils.java" project="statsvn"> @@ -3870,6 +3909,7 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_XMLUtil.java" module="statsvn" path="net/sf/statsvn/util/XMLUtil.java" project="statsvn"> @@ -3999,6 +4039,8 @@ <result date="2009-03-14" statvalue="56" type="cobertura-branch"/> <result date="2009-04-25" statvalue="75" type="cobertura-line"/> <result date="2009-04-25" statvalue="56" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="75" type="cobertura-line"/> + <result date="2009-05-22" statvalue="56" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_reports_FilesLocComparator.java" @@ -4121,6 +4163,8 @@ <result date="2009-03-14" statvalue="50" type="cobertura-branch"/> <result date="2009-04-25" statvalue="79" type="cobertura-line"/> <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="79" type="cobertura-line"/> + <result date="2009-05-22" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_CssHandler.java" module="statsvn" path="net/sf/statsvn/output/CssHandler.java" project="statsvn"> @@ -4287,6 +4331,7 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_DirectoryRoot.java" module="statsvn" path="net/sf/statsvn/model/DirectoryRoot.java" project="statsvn"> @@ -4347,6 +4392,7 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleOutHandler.java" @@ -4459,6 +4505,8 @@ <result date="2009-03-14" statvalue="20" type="cobertura-branch"/> <result date="2009-04-25" statvalue="44" type="cobertura-line"/> <result date="2009-04-25" statvalue="20" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="44" type="cobertura-line"/> + <result date="2009-05-22" statvalue="20" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_SvnCommandLineParser.java" @@ -4556,6 +4604,9 @@ <result date="2009-04-25" statvalue="1" type="checkstyle"/> <result date="2009-04-25" statvalue="32" type="cobertura-line"/> <result date="2009-04-25" statvalue="13" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="1" type="checkstyle"/> + <result date="2009-05-22" statvalue="32" type="cobertura-line"/> + <result date="2009-05-22" statvalue="13" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleTaskLogger.java" @@ -4614,6 +4665,7 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_TaskLogger.java" module="statsvn" path="net/sf/statsvn/util/TaskLogger.java" project="statsvn"> @@ -4695,6 +4747,8 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-line"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="100" type="cobertura-line"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_ant_AntTaskLogger.java" module="statsvn" path="net/sf/statsvn/ant/AntTaskLogger.java" project="statsvn"> @@ -4754,6 +4808,7 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="StatSvn-statsvn-net_sf_statsvn_input_Builder.java" module="statsvn" path="net/sf/statsvn/input/Builder.java" project="StatSvn"/> @@ -5328,6 +5383,8 @@ <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> <result date="2009-04-25" statvalue="75" type="cobertura-line"/> <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> + <result date="2009-05-22" statvalue="75" type="cobertura-line"/> + <result date="2009-05-22" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_EnvReport.java" module="statsvn" path="net/sf/statsvn/util/EnvReport.java" project="statsvn"> @@ -5356,5 +5413,6 @@ <result date="2009-03-13" statvalue="1" type="checkstyle"/> <result date="2009-03-14" statvalue="1" type="checkstyle"/> <result date="2009-04-25" statvalue="1" type="checkstyle"/> + <result date="2009-05-22" statvalue="1" type="checkstyle"/> </file> </qalab> Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn/site/changes.xml 2009-05-27 18:17:59 UTC (rev 389) @@ -4,23 +4,27 @@ <title>StatSVN Changes</title> </properties> <body> - <release version="0.5.0" date="2009-05-22" description="Maintenance"> - <action dev="benoitx" type="add">Add new report for 12m Rolling Developer report.</action> - <action dev="benoitx" type="add"> - Add ability to MERGE 2 users through the config-file user.[userName].replacedBy=[newUserName] - </action> - <action dev="benoitx" type="add"> - Add ability to MERGE 2 users through the config-file user.[userName].replacedBy=[newUserName] - </action> - <action dev="benoitx" type="add"> - A bit of fun, added links to Twitter. In the statsvn.properties file defining the user, See - <a href="http://wiki.statsvn.org/User%20Manual.ashx">manual</a> - </action> - <action dev="benoitx" type="add"> - Charts are now configurable, See - <a href="http://wiki.statsvn.org/User%20Manual.ashx">manual</a> - </action> + <release version="0.6.0" date="in SVN" description="Maintenance"> + <action dev="benoitx" type="add">Reduce scope for the Builder (might save some memory).</action> </release> + <release version="0.5.0" date="2009-05-22" description="Maintenance"> + <action dev="benoitx" type="add">Add new report for 12m Rolling Developer report.</action> + <action dev="benoitx" type="add"> + Add ability to MERGE 2 users through the config-file user.[userName].replacedBy=[newUserName] + </action> + <action dev="benoitx" type="add"> + A bit of fun, added links to Twitter. In the statsvn.properties file defining the user, See + <a href="http://wiki.statsvn.org/User%20Manual.ashx">manual</a> + </action> + <action dev="benoitx" type="add"> + Charts are now configurable, See + <a href="http://wiki.statsvn.org/User%20Manual.ashx">manual</a> + </action> + <action dev="benoitx" type="add"> + Through StatCVS, a few cool Twitter features to either have links to your Twitter profile, widgets (see <a href="statsvn/user_benoitx.html">this page</a>) or to be able to Tweet some StatSVN stats straight from + the StatSVN generated pages (see <a href="statsvn/index.html">this page</a>). + </action> + </release> <release version="0.4.1" date="2008-06-20" description="Maintenance"> <action dev="jkealey" type="fix" issue="1963918" due-to="Joseph Armbruster">Fixed issue when the only change was a property change.</action> <action dev="jkealey" type="fix" issue="1993217" due-to="Edward Oubrayrie">Fixed issue in command line help with regards to -concurrency-threshold</action> Modified: trunk/statsvn/site/index.xml =================================================================== --- trunk/statsvn/site/index.xml 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn/site/index.xml 2009-05-27 18:17:59 UTC (rev 389) @@ -24,6 +24,8 @@ <section name="StatSVN News"> <p style="margin-top:10px; margin-bottom:0; padding-bottom:0; text-align:center; line-height:0"><a href="http://feeds.feedburner.com/~r/ObjectlabOpenSourceNews/~6/1"><img src="http://feeds.feedburner.com/ObjectlabOpenSourceNews.1.gif" alt="ObjectLab Open Source News" style="border:0"/></a></p><p style="margin-top:5px; padding-top:0; font-size:x-small; text-align:center"><a href="http://www.feedburner.com/fb/a/headlineanimator/install?id=829470&w=1" target="_blank">Grab this Headline Animator</a></p> + <p>2009-05-22: release of 0.5.0 is released, see <a href="changes-report.html">changes</a>.<a href="http://twitter.com/home?status=StatSVN%200.5.0%20released%20on%202009-05-22%20try%20it%20http%3A%2F%2Ftr.im%2FkciG" class="externalLink" title="External Link"><img style="border:0px" alt="Tweet this" src="statsvn/tweet-this.png"></img></a></p> + <p>2009-03-16: release of 0.5.0 beta.</p> <p>2008-06-20: release of 0.4.1, re-launch of the <a href="http://wiki.statsvn.org">Wiki site</a> and inclusion of the forums as embedded pages: <a href="forum.html">User Forum</a> Modified: trunk/statsvn/site/navigation.xml =================================================================== --- trunk/statsvn/site/navigation.xml 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn/site/navigation.xml 2009-05-27 18:17:59 UTC (rev 389) @@ -16,7 +16,7 @@ <item name="In the press" href="press/index.html" /> <item name="StatSVN on StatSVN" href="statsvn/index.html" /> <item name="Demos" href="demo/index.html" /> - <item name="HTML Sample" href="http://jucmnav.softwareengineering.ca/jucmnav/statsvn/" /> + <item name="HTML Sample" href="statsvn-html/index.html" /> </menu> <sitemap/> Modified: trunk/statsvn/src/net/sf/statsvn/Main.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/Main.java 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn/src/net/sf/statsvn/Main.java 2009-05-27 18:17:59 UTC (rev 389) @@ -56,275 +56,281 @@ * @version $Id: Main.java,v 1.47 2005/03/20 19:12:25 squig Exp $ */ public final class Main { - private static final int KB_IN_ONE_MB = 1024; + private static final int KB_IN_ONE_MB = 1024; - private static final int NUMBER_OF_MS_IN_ONE_SEC = 1000; + private static final int NUMBER_OF_MS_IN_ONE_SEC = 1000; - private static final LogManager LM = LogManager.getLogManager(); + private static final LogManager LM = LogManager.getLogManager(); - /** - * A utility class (only static methods) should be final and have a private - * constructor. - */ - private Main() { - } + /** + * A utility class (only static methods) should be final and have a private + * constructor. + */ + private Main() { + } - /** - * Main method of StatSVN - * - * @param args - * command line options - */ - public static void main(final String[] args) { - init(); - verifyArguments(args); - generate(); - System.exit(0); - } + /** + * Main method of StatSVN + * + * @param args + * command line options + */ + public static void main(final String[] args) { + init(); + verifyArguments(args); + generate(); + System.exit(0); + } - private static void verifyArguments(final String[] args) { - if (args.length == 0) { - printProperUsageAndExit(); - } - if (args.length == 1) { - final String arg = args[0].toLowerCase(Locale.getDefault()); - if (arg.equals("-h") || arg.equals("-help")) { - printProperUsageAndExit(); - } else if (arg.equals("-version")) { - printVersionAndExit(); - } - } + private static void verifyArguments(final String[] args) { + if (args.length == 0) { + printProperUsageAndExit(); + } + if (args.length == 1) { + final String arg = args[0].toLowerCase(Locale.getDefault()); + if (arg.equals("-h") || arg.equals("-help")) { + printProperUsageAndExit(); + } else if (arg.equals("-version")) { + printVersionAndExit(); + } + } - try { - new SvnCommandLineParser(args).parse(); - } catch (final ConfigurationException cex) { - SvnConfigurationOptions.getTaskLogger().error(cex.getMessage()); - System.exit(1); - } - } + try { + new SvnCommandLineParser(args).parse(); + } catch (final ConfigurationException cex) { + SvnConfigurationOptions.getTaskLogger().error(cex.getMessage()); + System.exit(1); + } + } - public static void generate() { - try { - final boolean isNewerDiffPossible = SvnStartupUtils.checkDiffPerRevPossible(SvnStartupUtils.checkSvnVersionSufficient()); - // fall-back to older option. - if (!isNewerDiffPossible) { - SvnConfigurationOptions.setLegacyDiff(true); - } + public static void generate() { + try { + final boolean isNewerDiffPossible = SvnStartupUtils.checkDiffPerRevPossible(SvnStartupUtils.checkSvnVersionSufficient()); + // fall-back to older option. + if (!isNewerDiffPossible) { + SvnConfigurationOptions.setLegacyDiff(true); + } - SvnStartupUtils.checkRepoRootAvailable(); - generateDefaultHTMLSuite(); - } catch (final ConfigurationException cex) { - SvnConfigurationOptions.getTaskLogger().error(cex.getMessage()); - System.exit(1); - } catch (final LogSyntaxException lex) { - printLogErrorMessageAndExit(lex.getMessage()); - } catch (final IOException ioex) { - printIoErrorMessageAndExit(ioex.getMessage()); - } catch (final OutOfMemoryError oome) { - printOutOfMemMessageAndExit(); - } catch (final SvnVersionMismatchException ever) { - printErrorMessageAndExit(ever.getMessage()); - } - } + SvnStartupUtils.checkRepoRootAvailable(); + generateDefaultHTMLSuite(); + } catch (final ConfigurationException cex) { + SvnConfigurationOptions.getTaskLogger().error(cex.getMessage()); + System.exit(1); + } catch (final LogSyntaxException lex) { + printLogErrorMessageAndExit(lex.getMessage()); + } catch (final IOException ioex) { + printIoErrorMessageAndExit(ioex.getMessage()); + } catch (final OutOfMemoryError oome) { + printOutOfMemMessageAndExit(); + } catch (final SvnVersionMismatchException ever) { + printErrorMessageAndExit(ever.getMessage()); + } + } - public static void init() { - Messages.setPrimaryResource("net.sf.statsvn.statcvs"); // primary is - // statcvs.properties in net.sf.statsvn + public static void init() { + Messages.setPrimaryResource("net.sf.statsvn.statcvs"); // primary is + // statcvs.properties in net.sf.statsvn - SvnConfigurationOptions.getTaskLogger().info(Messages.getString("PROJECT_NAME") + Messages.NL); - } + SvnConfigurationOptions.getTaskLogger().info(Messages.getString("PROJECT_NAME") + Messages.NL); + } - private static void initLogManager(final String loggingProperties) { - InputStream stream = null; - try { - stream = Main.class.getResourceAsStream(loggingProperties); - LM.readConfiguration(stream); - } catch (final IOException e) { - SvnConfigurationOptions.getTaskLogger().error("ERROR: Logging could not be initialized!"); - } finally { - if (stream != null) { - try { - stream.close(); - } catch (final IOException e) { - SvnConfigurationOptions.getTaskLogger().error("ERROR: could not close stream!"); - } - } - } - } + private static void initLogManager(final String loggingProperties) { + InputStream stream = null; + try { + stream = Main.class.getResourceAsStream(loggingProperties); + LM.readConfiguration(stream); + } catch (final IOException e) { + SvnConfigurationOptions.getTaskLogger().error("ERROR: Logging could not be initialized!"); + } finally { + if (stream != null) { + try { + stream.close(); + } catch (final IOException e) { + SvnConfigurationOptions.getTaskLogger().error("ERROR: could not close stream!"); + } + } + } + } - private static void printProperUsageAndExit() { - final String cr = System.getProperty("line.separator"); - SvnConfigurationOptions.getTaskLogger().error( - // max. 80 chars - // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 - "Usage: java -jar statsvn.jar [options] <logfile> <directory>" + cr + cr + "Required parameters:" + cr - + " <logfile> path to the svn logfile of the module" + cr - + " <directory> path to the directory of the checked out module" + cr + cr - + "Some options:" + cr - + " -version print the version information and exit" + cr - + " -output-dir <dir> directory where HTML suite will be saved" + cr - + " -include <pattern> include only files matching pattern, e.g. **/*.c;**/*.h" + cr - + " -exclude <pattern> exclude matching files, e.g. tests/**;docs/**" + cr - + " -tags <regexp> show matching tags in lines of code chart, e.g. version-.*" + cr - + " -title <title> Project title to be used in reports" + cr - + " -viewvc <url> integrate with ViewVC installation at <url>" +cr - + " -trac <url> integrate with Trac at <url>" + cr - + " -bugzilla <url> integrate with Bugzilla installation at <url>" + cr - + " -username <svnusername> username to pass to svn" + cr - + " -password <svnpassword> password to pass to svn" + cr - + " -verbose print extra progress information" + cr - + " -xdoc optional switch output to xdoc" + cr - + " -xml optional switch output to xml" + cr - + " -threads <int> how many threads for svn diff (default: 25)" + cr - + " -concurrency-threshold <millisec> switch to concurrent svn diff if 1st call>threshold (default: 4000)" + cr - + " -dump dump the Repository content on console" + cr + private static void printProperUsageAndExit() { + final String cr = System.getProperty("line.separator"); + SvnConfigurationOptions.getTaskLogger().error( + // max. 80 chars + // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 + "Usage: java -jar statsvn.jar [options] <logfile> <directory>" + cr + cr + "Required parameters:" + cr + + " <logfile> path to the svn logfile of the module" + cr + + " <directory> path to the directory of the checked out module" + cr + cr + "Some options:" + cr + + " -version print the version information and exit" + cr + " -output-dir <dir> directory where HTML suite will be saved" + + cr + " -include <pattern> include only files matching pattern, e.g. **/*.c;**/*.h" + cr + + " -exclude <pattern> exclude matching files, e.g. tests/**;docs/**" + cr + + " -tags <regexp> show matching tags in lines of code chart, e.g. version-.*" + cr + + " -title <title> Project title to be used in reports" + cr + " -viewvc <url> integrate with ViewVC installation at <url>" + + cr + " -trac <url> integrate with Trac at <url>" + cr + " -bugzilla <url> integrate with Bugzilla installation at <url>" + + cr + " -username <svnusername> username to pass to svn" + cr + " -password <svnpassword> password to pass to svn" + cr + + " -verbose print extra progress information" + cr + " -xdoc optional switch output to xdoc" + cr + + " -xml optional switch output to xml" + cr + " -threads <int> how many threads for svn diff (default: 25)" + + cr + " -concurrency-threshold <millisec> switch to concurrent svn diff if 1st call>threshold (default: 4000)" + cr + + " -dump dump the Repository content on console" + cr + " -charset <charset> specify the charset to use for html/xdoc\n" - + " -tags-dir <directory> optional, specifies the director for tags (default '/tags/')" + cr + cr - + "Full options list: http://www.statsvn.org"); - System.exit(1); - } + + " -tags-dir <directory> optional, specifies the director for tags (default '/tags/')" + cr + cr + + "Full options list: http://www.statsvn.org"); + System.exit(1); + } - private static void printVersionAndExit() { - SvnConfigurationOptions.getTaskLogger().error("Version " + Messages.getString("PROJECT_VERSION")); - System.exit(1); - } + private static void printVersionAndExit() { + SvnConfigurationOptions.getTaskLogger().error("Version " + Messages.getString("PROJECT_VERSION")); + System.exit(1); + } - private static void printOutOfMemMessageAndExit() { - SvnConfigurationOptions.getTaskLogger().error("OutOfMemoryError."); - SvnConfigurationOptions.getTaskLogger().error("Try running java with the -mx option (e.g. -mx128m for 128Mb)."); - System.exit(1); - } + private static void printOutOfMemMessageAndExit() { + SvnConfigurationOptions.getTaskLogger().error("OutOfMemoryError."); + SvnConfigurationOptions.getTaskLogger().error("Try running java with the -mx option (e.g. -mx128m for 128Mb)."); + System.exit(1); + } - private static void printLogErrorMessageAndExit(final String message) { - SvnConfigurationOptions.getTaskLogger().error("Logfile parsing failed."); - SvnConfigurationOptions.getTaskLogger().error(message); - System.exit(1); - } + private static void printLogErrorMessageAndExit(final String message) { + SvnConfigurationOptions.getTaskLogger().error("Logfile parsing failed."); + SvnConfigurationOptions.getTaskLogger().error(message); + System.exit(1); + } - private static void printIoErrorMessageAndExit(final String message) { - SvnConfigurationOptions.getTaskLogger().error(message); - System.exit(1); - } + private static void printIoErrorMessageAndExit(final String message) { + SvnConfigurationOptions.getTaskLogger().error(message); + System.exit(1); + } - public static String printStackTrace(final Exception e) { - try { - final StringWriter sw = new StringWriter(); - final PrintWriter pw = new PrintWriter(sw); - e.printStackTrace(pw); - return sw.toString(); - } catch (final Exception e2) { - if (e != null) { - return e.getMessage(); - } else { - return ""; - } - } - } + public static String printStackTrace(final Exception e) { + try { + final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + return sw.toString(); + } catch (final Exception e2) { + if (e != null) { + return e.getMessage(); + } else { + return ""; + } + } + } - private static void printErrorMessageAndExit(final String message) { - SvnConfigurationOptions.getTaskLogger().error(message); - System.exit(1); - } + private static void printErrorMessageAndExit(final String message) { + SvnConfigurationOptions.getTaskLogger().error(message); + System.exit(1); + } - /** - * Generates HTML report. {@link net.sf.statsvn.output.ConfigurationOptions} - * must be initialized before calling this method. - * - * @throws LogSyntaxException - * if the logfile contains unexpected syntax - * @throws IOException - * if some file can't be read or written - * @throws ConfigurationException - * if a required ConfigurationOption was not set - */ - public static void generateDefaultHTMLSuite() throws LogSyntaxException, IOException, ConfigurationException { - generateDefaultHTMLSuite(new RepositoryFileManager(ConfigurationOptions.getCheckedOutDirectory())); - } + /** + * Generates HTML report. {@link net.sf.statsvn.output.ConfigurationOptions} + * must be initialized before calling this method. + * + * @throws LogSyntaxException + * if the logfile contains unexpected syntax + * @throws IOException + * if some file can't be read or written + * @throws ConfigurationException + * if a required ConfigurationOption was not set + */ + public static void generateDefaultHTMLSuite() throws LogSyntaxException, IOException, ConfigurationException { + generateDefaultHTMLSuite(new RepositoryFileManager(ConfigurationOptions.getCheckedOutDirectory())); + } - /** - * Generates HTML report. {@link net.sf.statsvn.output.ConfigurationOptions} - * must be initialized before calling this method. - * - * @param externalRepositoryFileManager - * RepositoryFileManager which is used to access the files in the - * repository. - * - * @throws LogSyntaxException - * if the logfile contains unexpected syntax - * @throws IOException - * if some file can't be read or written - * @throws ConfigurationException - * if a required ConfigurationOption was not set - */ - public static void generateDefaultHTMLSuite(final RepositoryFileManager repFileMan) throws LogSyntaxException, IOException, ConfigurationException { + /** + * Generates HTML report. {@link net.sf.statsvn.output.ConfigurationOptions} + * must be initialized before calling this method. + * + * @param externalRepositoryFileManager + * RepositoryFileManager which is used to access the files in the + * repository. + * + * @throws LogSyntaxException + * if the logfile contains unexpected syntax + * @throws IOException + * if some file can't be read or written + * @throws ConfigurationException + * if a required ConfigurationOption was not set + */ + public static void generateDefaultHTMLSuite(final RepositoryFileManager repFileMan) throws LogSyntaxException, IOException, ConfigurationException { - if (ConfigurationOptions.getLogFileName() == null) { - throw new ConfigurationException("Missing logfile name"); - } - if (ConfigurationOptions.getCheckedOutDirectory() == null) { - throw new ConfigurationException("Missing checked out directory"); - } + if (ConfigurationOptions.getLogFileName() == null) { + throw new ConfigurationException("Missing logfile name"); + } + if (ConfigurationOptions.getCheckedOutDirectory() == null) { + throw new ConfigurationException("Missing checked out directory"); + } - final long memoryUsedOnStart = Runtime.getRuntime().totalMemory(); - final long startTime = System.currentTimeMillis(); + final long memoryUsedOnStart = Runtime.getRuntime().totalMemory(); + final long startTime = System.currentTimeMillis(); - initLogManager(ConfigurationOptions.getLoggingProperties()); + initLogManager(ConfigurationOptions.getLoggingProperties()); - SvnConfigurationOptions.getTaskLogger().info( - "Parsing SVN log '" + ConfigurationOptions.getLogFileName() + "' exclude pattern '" + ConfigurationOptions.getExcludePattern() + "'"); + SvnConfigurationOptions.getTaskLogger().info( + "Parsing SVN log '" + ConfigurationOptions.getLogFileName() + "' exclude pattern '" + ConfigurationOptions.getExcludePattern() + "'"); - final FileInputStream logFile = new FileInputStream(ConfigurationOptions.getLogFileName()); - final Builder builder = new Builder(repFileMan, ConfigurationOptions.getIncludePattern(), ConfigurationOptions.getExcludePattern(), - ConfigurationOptions.getSymbolicNamesPattern()); - new SvnLogfileParser(repFileMan, logFile, builder).parse(); - logFile.close(); + FileInputStream logFile = null; + Builder builder = null; + try { + logFile = new FileInputStream(ConfigurationOptions.getLogFileName()); + builder = new Builder(repFileMan, ConfigurationOptions.getIncludePattern(), ConfigurationOptions.getExcludePattern(), ConfigurationOptions + .getSymbolicNamesPattern()); + new SvnLogfileParser(repFileMan, logFile, builder).parse(); + } finally { + if (logFile != null) { + logFile.close(); + } + } - if (ConfigurationOptions.getProjectName() == null) { - ConfigurationOptions.setProjectName(builder.getProjectName()); - } - if (ConfigurationOptions.getWebRepository() != null) { - ConfigurationOptions.getWebRepository().setAtticFileNames(builder.getAtticFileNames()); - } + if (ConfigurationOptions.getProjectName() == null) { + ConfigurationOptions.setProjectName(builder.getProjectName()); + } + if (ConfigurationOptions.getWebRepository() != null) { + ConfigurationOptions.getWebRepository().setAtticFileNames(builder.getAtticFileNames()); + } - SvnConfigurationOptions.getTaskLogger().info( - "Generating report for " + ConfigurationOptions.getProjectName() + " into " + ConfigurationOptions.getOutputDir()); - SvnConfigurationOptions.getTaskLogger().info("Using " + ConfigurationOptions.getCssHandler()); - final Repository content = builder.createRepository(); + SvnConfigurationOptions.getTaskLogger().info( + "Generating report for " + ConfigurationOptions.getProjectName() + " into " + ConfigurationOptions.getOutputDir()); + SvnConfigurationOptions.getTaskLogger().info("Using " + ConfigurationOptions.getCssHandler()); + final Repository content = builder.createRepository(); - // make JFreeChart work on systems without GUI - System.setProperty("java.awt.headless", "true"); + long memoryUsedOnEnd = Runtime.getRuntime().totalMemory(); + SvnConfigurationOptions.getTaskLogger().info("memory usage After Build: " + (((double) memoryUsedOnEnd - memoryUsedOnStart) / KB_IN_ONE_MB) + " kb"); - final ReportConfig config = new ReportConfig(content, ConfigurationOptions.getProjectName(), ConfigurationOptions.getOutputDir(), ConfigurationOptions - .getMarkupSyntax(), ConfigurationOptions.getCssHandler(), ConfigurationOptions.getCharSet()); - config.setWebRepository(ConfigurationOptions.getWebRepository()); - config.setWebBugtracker(ConfigurationOptions.getWebBugtracker()); - config.setNonDeveloperLogins(ConfigurationOptions.getNonDeveloperLogins()); + builder.clean(); + builder = null; + + // make JFreeChart work on systems without GUI + System.setProperty("java.awt.headless", "true"); - validate(config); + final ReportConfig config = new ReportConfig(content, ConfigurationOptions.getProjectName(), ConfigurationOptions.getOutputDir(), ConfigurationOptions + .getMarkupSyntax(), ConfigurationOptions.getCssHandler(), ConfigurationOptions.getCharSet()); + config.setWebRepository(ConfigurationOptions.getWebRepository()); + config.setWebBugtracker(ConfigurationOptions.getWebBugtracker()); + config.setNonDeveloperLogins(ConfigurationOptions.getNonDeveloperLogins()); - if (SvnConfigurationOptions.isDumpContent()) { - new RepoDump(content).dump(); - } else { - // add new reports - final List extraReports = new ArrayList(); + validate(config); - if ("xml".equalsIgnoreCase(ConfigurationOptions.getOutputFormat())) { - new ReportSuiteMaker(config, ConfigurationOptions.getNotes(), extraReports).toXml(); - } else { - new ReportSuiteMaker(config, ConfigurationOptions.getNotes(), extraReports).toFile().write(); - } - } - final long endTime = System.currentTimeMillis(); - final long memoryUsedOnEnd = Runtime.getRuntime().totalMemory(); + if (SvnConfigurationOptions.isDumpContent()) { + new RepoDump(content).dump(); + } else { + // add new reports + final List extraReports = new ArrayList(); - SvnConfigurationOptions.getTaskLogger().info("runtime: " + (((double) endTime - startTime) / NUMBER_OF_MS_IN_ONE_SEC) + " seconds"); - SvnConfigurationOptions.getTaskLogger().info("memory usage: " + (((double) memoryUsedOnEnd - memoryUsedOnStart) / KB_IN_ONE_MB) + " kb"); - } + if ("xml".equalsIgnoreCase(ConfigurationOptions.getOutputFormat())) { + new ReportSuiteMaker(config, ConfigurationOptions.getNotes(), extraReports).toXml(); + } else { + new ReportSuiteMaker(config, ConfigurationOptions.getNotes(), extraReports).toFile().write(); + } + } + final long endTime = System.currentTimeMillis(); + memoryUsedOnEnd = Runtime.getRuntime().totalMemory(); - private static void validate(final ReportConfig config) { - if (config.getRepository() == null || config.getRepository().getRoot() == null || config.getRepository().getDirectories() == null) { - printErrorMessageAndExit("The repository object is not valid. Please check your settings." + System.getProperty("line.separator") - + "Is the log file empty? Do you run from a checked out directory? Do you have non-committed items?"); - } - } + SvnConfigurationOptions.getTaskLogger().info("runtime: " + (((double) endTime - startTime) / NUMBER_OF_MS_IN_ONE_SEC) + " seconds"); + SvnConfigurationOptions.getTaskLogger().info("memory usage: " + (((double) memoryUsedOnEnd - memoryUsedOnStart) / KB_IN_ONE_MB) + " kb"); + } + + private static void validate(final ReportConfig config) { + if (config.getRepository() == null || config.getRepository().getRoot() == null || config.getRepository().getDirectories() == null) { + printErrorMessageAndExit("The repository object is not valid. Please check your settings." + System.getProperty("line.separator") + + "Is the log file empty? Do you run from a checked out directory? Do you have non-committed items?"); + } + } } Modified: trunk/statsvn/src/net/sf/statsvn/input/Builder.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/input/Builder.java 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn/src/net/sf/statsvn/input/Builder.java 2009-05-27 18:17:59 UTC (rev 389) @@ -92,6 +92,14 @@ private final Map symbolicNames = new HashMap(); private final Pattern tagsPattern; + + public void clean() { + atticFileNames.clear(); + authors.clear(); + directories.clear(); + fileBuilders.clear(); + symbolicNames.clear(); + } /** * Creates a new <tt>Builder</tt> Modified: trunk/statsvn.bat =================================================================== --- trunk/statsvn.bat 2009-05-22 15:55:05 UTC (rev 388) +++ trunk/statsvn.bat 2009-05-27 18:17:59 UTC (rev 389) @@ -1,5 +1,5 @@ -rem svn log -v --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log +svn log -v --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log rem mkdir qalab\target\docs\statsvn java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . -java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . +java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -config-file ./demo/script/statsvn.properties -output-dir statsvn\target\statsvn-html -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-05-22 15:55:12
|
Revision: 388 http://statsvn.svn.sourceforge.net/statsvn/?rev=388&view=rev Author: benoitx Date: 2009-05-22 15:55:05 +0000 (Fri, 22 May 2009) Log Message: ----------- Added Paths: ----------- tags/0.5.0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-05-22 15:52:50
|
Revision: 387 http://statsvn.svn.sourceforge.net/statsvn/?rev=387&view=rev Author: benoitx Date: 2009-05-22 15:52:45 +0000 (Fri, 22 May 2009) Log Message: ----------- Preparing release 0.5.0 Modified Paths: -------------- trunk/statsvn/build.xml trunk/statsvn/lib/statcvs-0.5.0.jar trunk/statsvn/site/changes.xml Added Paths: ----------- trunk/statsvn/site/images/chartExplanation.png Modified: trunk/statsvn/build.xml =================================================================== --- trunk/statsvn/build.xml 2009-05-01 16:59:43 UTC (rev 386) +++ trunk/statsvn/build.xml 2009-05-22 15:52:45 UTC (rev 387) @@ -147,7 +147,7 @@ </jar> </target> - <target name="release" depends="zip.source,dist,test,zip"> + <target name="release" depends="clean,dist,javadoc,zip.source,dist,test,zip"> </target> <target name="zip" depends="dist"> Modified: trunk/statsvn/lib/statcvs-0.5.0.jar =================================================================== (Binary files differ) Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2009-05-01 16:59:43 UTC (rev 386) +++ trunk/statsvn/site/changes.xml 2009-05-22 15:52:45 UTC (rev 387) @@ -4,11 +4,22 @@ <title>StatSVN Changes</title> </properties> <body> - <release version="0.5.0" date="2008-04-01" description="Maintenance"> + <release version="0.5.0" date="2009-05-22" description="Maintenance"> <action dev="benoitx" type="add">Add new report for 12m Rolling Developer report.</action> <action dev="benoitx" type="add"> Add ability to MERGE 2 users through the config-file user.[userName].replacedBy=[newUserName] </action> + <action dev="benoitx" type="add"> + Add ability to MERGE 2 users through the config-file user.[userName].replacedBy=[newUserName] + </action> + <action dev="benoitx" type="add"> + A bit of fun, added links to Twitter. In the statsvn.properties file defining the user, See + <a href="http://wiki.statsvn.org/User%20Manual.ashx">manual</a> + </action> + <action dev="benoitx" type="add"> + Charts are now configurable, See + <a href="http://wiki.statsvn.org/User%20Manual.ashx">manual</a> + </action> </release> <release version="0.4.1" date="2008-06-20" description="Maintenance"> <action dev="jkealey" type="fix" issue="1963918" due-to="Joseph Armbruster">Fixed issue when the only change was a property change.</action> Added: trunk/statsvn/site/images/chartExplanation.png =================================================================== (Binary files differ) Property changes on: trunk/statsvn/site/images/chartExplanation.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-05-01 16:59:44
|
Revision: 386 http://statsvn.svn.sourceforge.net/statsvn/?rev=386&view=rev Author: benoitx Date: 2009-05-01 16:59:43 +0000 (Fri, 01 May 2009) Log Message: ----------- New StatCVS Beta Modified Paths: -------------- trunk/demo/script/statsvn.properties trunk/statsvn/lib/statcvs-0.5.0.jar trunk/statsvn/src/net/sf/statsvn/statcvs.properties Modified: trunk/demo/script/statsvn.properties =================================================================== --- trunk/demo/script/statsvn.properties 2009-04-26 09:02:46 UTC (rev 385) +++ trunk/demo/script/statsvn.properties 2009-05-01 16:59:43 UTC (rev 386) @@ -14,6 +14,9 @@ user.marchy.url= user.marchy.image= user.marchy.email= +user.marchy.twitterUsername=marcin_jekot +user.marchy.twitterUserId= +user.marchy.twitterIncludeHtml=true # user.davesag.realName=David Sag user.davesag.url=http://www.davesag.com/ Modified: trunk/statsvn/lib/statcvs-0.5.0.jar =================================================================== (Binary files differ) Modified: trunk/statsvn/src/net/sf/statsvn/statcvs.properties =================================================================== --- trunk/statsvn/src/net/sf/statsvn/statcvs.properties 2009-04-26 09:02:46 UTC (rev 385) +++ trunk/statsvn/src/net/sf/statsvn/statcvs.properties 2009-05-01 16:59:43 UTC (rev 386) @@ -3,6 +3,7 @@ PROJECT_SHORTNAME=StatSVN PROJECT_VERSION=@VERSION@ PROJECT_URL=http://www.statsvn.org +PROJECT_SMALL_URL=http://tr.im/kciG # authors and directories tables AUTHOR_UNKNOWN=Unknown This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-04-26 09:02:52
|
Revision: 385 http://statsvn.svn.sourceforge.net/statsvn/?rev=385&view=rev Author: benoitx Date: 2009-04-26 09:02:46 +0000 (Sun, 26 Apr 2009) Log Message: ----------- updated statCVS to latest beta with cloud and chart background images facilities. Modified Paths: -------------- trunk/demo/script/statsvn.properties trunk/statsvn/lib/statcvs-0.5.0.jar trunk/statsvn/project.xml trunk/statsvn/qalab.xml trunk/statsvn.bat Modified: trunk/demo/script/statsvn.properties =================================================================== --- trunk/demo/script/statsvn.properties 2009-04-22 08:22:39 UTC (rev 384) +++ trunk/demo/script/statsvn.properties 2009-04-26 09:02:46 UTC (rev 385) @@ -148,3 +148,10 @@ # + +## +# CLOUD +## +cloud.minFrequency=5 +cloud.maxWordNumberInCloud=100 +cloud.maxWordNumberInTable=50 Modified: trunk/statsvn/lib/statcvs-0.5.0.jar =================================================================== (Binary files differ) Modified: trunk/statsvn/project.xml =================================================================== --- trunk/statsvn/project.xml 2009-04-22 08:22:39 UTC (rev 384) +++ trunk/statsvn/project.xml 2009-04-26 09:02:46 UTC (rev 385) @@ -303,7 +303,7 @@ <report>maven-changelog-plugin</report> <report>maven-file-activity-plugin</report> <report>maven-developer-activity-plugin</report> - <report>maven-tasklist-plugin</report> + <!--<report>maven-tasklist-plugin</report>--> <!--<report>maven-statcvs-plugin</report>--> </reports> Modified: trunk/statsvn/qalab.xml =================================================================== --- trunk/statsvn/qalab.xml 2009-04-22 08:22:39 UTC (rev 384) +++ trunk/statsvn/qalab.xml 2009-04-26 09:02:46 UTC (rev 385) @@ -441,6 +441,14 @@ project="statsvn" statvalue="47" type="cobertura-line"/> <summaryresult date="2009-03-14" filecount="34" module="statsvn" project="statsvn" statvalue="40" type="cobertura-branch"/> + <summaryresult date="2009-04-25" filecount="42" module="statsvn" + project="statsvn" statvalue="2" type="checkstyle"/> + <summaryresult date="2009-04-25" filecount="3" module="statsvn" + project="statsvn" statvalue="4" type="findbugs"/> + <summaryresult date="2009-04-25" filecount="37" module="statsvn" + project="statsvn" statvalue="45" type="cobertura-line"/> + <summaryresult date="2009-04-25" filecount="37" module="statsvn" + project="statsvn" statvalue="39" type="cobertura-branch"/> </summary> <file id="statsvn-statsvn-net_sf_statsvn_output_package.html" module="statsvn" path="net/sf/statsvn/output/package.html" project="statsvn"> @@ -628,6 +636,9 @@ <result date="2009-03-14" statvalue="2" type="findbugs"/> <result date="2009-03-14" statvalue="35" type="cobertura-line"/> <result date="2009-03-14" statvalue="27" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="2" type="findbugs"/> + <result date="2009-04-25" statvalue="37" type="cobertura-line"/> + <result date="2009-04-25" statvalue="28" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_Messages.java" module="statsvn" path="net/sf/statsvn/Messages.java" project="statsvn"> @@ -780,6 +791,9 @@ <result date="2009-03-14" statvalue="1" type="findbugs"/> <result date="2009-03-14" statvalue="79" type="cobertura-line"/> <result date="2009-03-14" statvalue="62" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="1" type="findbugs"/> + <result date="2009-04-25" statvalue="82" type="cobertura-line"/> + <result date="2009-04-25" statvalue="62" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CacheBuilder.java" module="statsvn" path="net/sf/statsvn/input/CacheBuilder.java" project="statsvn"> @@ -883,6 +897,8 @@ <result date="2009-03-13" statvalue="30" type="cobertura-branch"/> <result date="2009-03-14" statvalue="57" type="cobertura-line"/> <result date="2009-03-14" statvalue="30" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="57" type="cobertura-line"/> + <result date="2009-04-25" statvalue="30" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_CommitListBuilder.java" @@ -1036,6 +1052,8 @@ <result date="2009-03-13" statvalue="58" type="cobertura-branch"/> <result date="2009-03-14" statvalue="73" type="cobertura-line"/> <result date="2009-03-14" statvalue="58" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="73" type="cobertura-line"/> + <result date="2009-04-25" statvalue="58" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_LogSyntaxException.java" @@ -1212,6 +1230,9 @@ <result date="2009-03-14" statvalue="1" type="findbugs"/> <result date="2009-03-14" statvalue="40" type="cobertura-line"/> <result date="2009-03-14" statvalue="50" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="1" type="findbugs"/> + <result date="2009-04-25" statvalue="40" type="cobertura-line"/> + <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_RevisionData.java" module="statsvn" path="net/sf/statsvn/input/RevisionData.java" project="statsvn"> @@ -1351,6 +1372,8 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-line"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="100" type="cobertura-line"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnLogfileParser.java" @@ -1500,6 +1523,8 @@ <result date="2009-03-13" statvalue="64" type="cobertura-branch"/> <result date="2009-03-14" statvalue="76" type="cobertura-line"/> <result date="2009-03-14" statvalue="64" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="76" type="cobertura-line"/> + <result date="2009-04-25" statvalue="64" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlCacheFileHandler.java" @@ -1599,6 +1624,8 @@ <result date="2009-03-13" statvalue="61" type="cobertura-branch"/> <result date="2009-03-14" statvalue="87" type="cobertura-line"/> <result date="2009-03-14" statvalue="61" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="87" type="cobertura-line"/> + <result date="2009-04-25" statvalue="61" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlLogFileHandler.java" @@ -1720,6 +1747,8 @@ <result date="2009-03-13" statvalue="68" type="cobertura-branch"/> <result date="2009-03-14" statvalue="85" type="cobertura-line"/> <result date="2009-03-14" statvalue="68" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="85" type="cobertura-line"/> + <result date="2009-04-25" statvalue="68" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_input_SvnXmlRepositoriesFileHandler.java" @@ -1819,6 +1848,8 @@ <result date="2009-03-13" statvalue="60" type="cobertura-branch"/> <result date="2009-03-14" statvalue="84" type="cobertura-line"/> <result date="2009-03-14" statvalue="60" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="84" type="cobertura-line"/> + <result date="2009-04-25" statvalue="60" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_Author.java" module="statsvn" path="net/sf/statsvn/model/Author.java" project="statsvn"> @@ -3255,6 +3286,8 @@ <result date="2009-03-13" statvalue="50" type="cobertura-branch"/> <result date="2009-03-14" statvalue="83" type="cobertura-line"/> <result date="2009-03-14" statvalue="50" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="83" type="cobertura-line"/> + <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_IntegerMap.java" module="statsvn" path="net/sf/statsvn/util/IntegerMap.java" project="statsvn"> @@ -3495,6 +3528,8 @@ <result date="2009-03-13" statvalue="25" type="cobertura-branch"/> <result date="2009-03-14" statvalue="34" type="cobertura-line"/> <result date="2009-03-14" statvalue="25" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="34" type="cobertura-line"/> + <result date="2009-04-25" statvalue="25" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnCommandHelper.java" module="statsvn" @@ -3654,6 +3689,8 @@ <result date="2009-03-13" statvalue="53" type="cobertura-branch"/> <result date="2009-03-14" statvalue="62" type="cobertura-line"/> <result date="2009-03-14" statvalue="53" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="62" type="cobertura-line"/> + <result date="2009-04-25" statvalue="53" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnPropgetUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnPropgetUtils.java" project="statsvn"> @@ -3764,6 +3801,8 @@ <result date="2009-03-13" statvalue="19" type="cobertura-branch"/> <result date="2009-03-14" statvalue="27" type="cobertura-line"/> <result date="2009-03-14" statvalue="19" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="27" type="cobertura-line"/> + <result date="2009-04-25" statvalue="19" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_SvnStartupUtils.java" module="statsvn" path="net/sf/statsvn/util/SvnStartupUtils.java" project="statsvn"> @@ -3830,6 +3869,7 @@ <result date="2009-03-12" statvalue="100" type="cobertura-branch"/> <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_XMLUtil.java" module="statsvn" path="net/sf/statsvn/util/XMLUtil.java" project="statsvn"> @@ -3957,6 +3997,8 @@ <result date="2009-03-13" statvalue="56" type="cobertura-branch"/> <result date="2009-03-14" statvalue="75" type="cobertura-line"/> <result date="2009-03-14" statvalue="56" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="75" type="cobertura-line"/> + <result date="2009-04-25" statvalue="56" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_reports_FilesLocComparator.java" @@ -4077,6 +4119,8 @@ <result date="2009-03-13" statvalue="50" type="cobertura-branch"/> <result date="2009-03-14" statvalue="79" type="cobertura-line"/> <result date="2009-03-14" statvalue="50" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="79" type="cobertura-line"/> + <result date="2009-04-25" statvalue="50" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_CssHandler.java" module="statsvn" path="net/sf/statsvn/output/CssHandler.java" project="statsvn"> @@ -4242,6 +4286,7 @@ <result date="2009-03-12" statvalue="100" type="cobertura-branch"/> <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_model_DirectoryRoot.java" module="statsvn" path="net/sf/statsvn/model/DirectoryRoot.java" project="statsvn"> @@ -4301,6 +4346,7 @@ <result date="2009-03-12" statvalue="100" type="cobertura-branch"/> <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleOutHandler.java" @@ -4411,6 +4457,8 @@ <result date="2009-03-13" statvalue="20" type="cobertura-branch"/> <result date="2009-03-14" statvalue="44" type="cobertura-line"/> <result date="2009-03-14" statvalue="20" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="44" type="cobertura-line"/> + <result date="2009-04-25" statvalue="20" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_output_SvnCommandLineParser.java" @@ -4505,6 +4553,9 @@ <result date="2009-03-14" statvalue="1" type="checkstyle"/> <result date="2009-03-14" statvalue="32" type="cobertura-line"/> <result date="2009-03-14" statvalue="13" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="1" type="checkstyle"/> + <result date="2009-04-25" statvalue="32" type="cobertura-line"/> + <result date="2009-04-25" statvalue="13" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_ConsoleTaskLogger.java" @@ -4562,6 +4613,7 @@ <result date="2009-03-12" statvalue="100" type="cobertura-branch"/> <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_TaskLogger.java" module="statsvn" path="net/sf/statsvn/util/TaskLogger.java" project="statsvn"> @@ -4641,6 +4693,8 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-line"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="100" type="cobertura-line"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_ant_AntTaskLogger.java" module="statsvn" path="net/sf/statsvn/ant/AntTaskLogger.java" project="statsvn"> @@ -4699,6 +4753,7 @@ <result date="2009-03-12" statvalue="100" type="cobertura-branch"/> <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="StatSvn-statsvn-net_sf_statsvn_input_Builder.java" module="statsvn" path="net/sf/statsvn/input/Builder.java" project="StatSvn"/> @@ -5271,6 +5326,8 @@ <result date="2009-03-13" statvalue="100" type="cobertura-branch"/> <result date="2009-03-14" statvalue="75" type="cobertura-line"/> <result date="2009-03-14" statvalue="100" type="cobertura-branch"/> + <result date="2009-04-25" statvalue="75" type="cobertura-line"/> + <result date="2009-04-25" statvalue="100" type="cobertura-branch"/> </file> <file id="statsvn-statsvn-net_sf_statsvn_util_EnvReport.java" module="statsvn" path="net/sf/statsvn/util/EnvReport.java" project="statsvn"> @@ -5298,5 +5355,6 @@ <result date="2009-03-12" statvalue="1" type="checkstyle"/> <result date="2009-03-13" statvalue="1" type="checkstyle"/> <result date="2009-03-14" statvalue="1" type="checkstyle"/> + <result date="2009-04-25" statvalue="1" type="checkstyle"/> </file> </qalab> Modified: trunk/statsvn.bat =================================================================== --- trunk/statsvn.bat 2009-04-22 08:22:39 UTC (rev 384) +++ trunk/statsvn.bat 2009-04-26 09:02:46 UTC (rev 385) @@ -1,4 +1,4 @@ -svn log -v --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log +rem svn log -v --xml https://statsvn.svn.sourceforge.net/svnroot/statsvn/ > svn.log rem mkdir qalab\target\docs\statsvn java -jar statsvn\dist\statsvn.jar -debug -verbose -charset ISO-8859-1 -xdoc -config-file ./demo/script/statsvn.properties -output-dir statsvn\site\statsvn -tags "^0.2.0|^0.1.3|^0.1.2|^0.0.9|^0.3.0|^0.3.1|^0.3.2|^0.4.0|^0.4.1|^0.5.0" -title StatSVN -exclude "**/qalab.xml|**/*.pdf|**/etc/LICENSE" -viewvc http://svn.sourceforge.net/viewvc/statsvn/trunk ./svn.log . This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-04-22 08:22:41
|
Revision: 384 http://statsvn.svn.sourceforge.net/statsvn/?rev=384&view=rev Author: benoitx Date: 2009-04-22 08:22:39 +0000 (Wed, 22 Apr 2009) Log Message: ----------- Tidy up. Modified Paths: -------------- trunk/statsvn/src/net/sf/statsvn/Main.java trunk/statsvn/src/net/sf/statsvn/statcvs.properties Modified: trunk/statsvn/src/net/sf/statsvn/Main.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/Main.java 2009-03-18 16:33:31 UTC (rev 383) +++ trunk/statsvn/src/net/sf/statsvn/Main.java 2009-04-22 08:22:39 UTC (rev 384) @@ -311,8 +311,6 @@ if ("xml".equalsIgnoreCase(ConfigurationOptions.getOutputFormat())) { new ReportSuiteMaker(config, ConfigurationOptions.getNotes(), extraReports).toXml(); } else { - // extraReports.add(new RepoMapPageMaker(config).toFile()); - // extraReports.add(new ChurnPageMaker(config).toFile()); new ReportSuiteMaker(config, ConfigurationOptions.getNotes(), extraReports).toFile().write(); } } Modified: trunk/statsvn/src/net/sf/statsvn/statcvs.properties =================================================================== --- trunk/statsvn/src/net/sf/statsvn/statcvs.properties 2009-03-18 16:33:31 UTC (rev 383) +++ trunk/statsvn/src/net/sf/statsvn/statcvs.properties 2009-04-22 08:22:39 UTC (rev 384) @@ -28,4 +28,11 @@ CHURN_RANGE=Lines touched CHURN_TITLE=LOC and Churn CHURN_DESCRIPTION=LOC and Churn shows the usual LOC with the amount of code touched per day. Hopefully this should go decreasingly towards a release. -LOC_CHURN_CHART_TITLE=Lines of Code and Churn Level \ No newline at end of file +LOC_CHURN_CHART_TITLE=Lines of Code and Churn Level + +# CLOUD +CLOUD=Cloud Commit +CLOUD_SECTION_TITLE=Tag Cloud of Words in Commit Log Messages +CLOUD_TABLE_TITLE=Tag Cloud of Words in Commit Log Messages +CLOUD_COUNT_COL=Frequency +CLOUD_WORD_COL=Word This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-03-18 17:02:16
|
Revision: 383 http://statsvn.svn.sourceforge.net/statsvn/?rev=383&view=rev Author: benoitx Date: 2009-03-18 16:33:31 +0000 (Wed, 18 Mar 2009) Log Message: ----------- When replacing the name for Author, one should also replace the author ID. Modified Paths: -------------- trunk/statsvn/lib/statcvs-0.5.0.jar trunk/statsvn/src/net/sf/statsvn/input/Builder.java Modified: trunk/statsvn/lib/statcvs-0.5.0.jar =================================================================== (Binary files differ) Modified: trunk/statsvn/src/net/sf/statsvn/input/Builder.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/input/Builder.java 2009-03-16 23:44:00 UTC (rev 382) +++ trunk/statsvn/src/net/sf/statsvn/input/Builder.java 2009-03-18 16:33:31 UTC (rev 383) @@ -267,6 +267,7 @@ return (Author) this.authors.get(replacementUser); } lowerCaseName = replacementUser; + newAuthor = new Author(lowerCaseName); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2009-03-16 23:44:11
|
Revision: 382 http://statsvn.svn.sourceforge.net/statsvn/?rev=382&view=rev Author: benoitx Date: 2009-03-16 23:44:00 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Add ability to MERGE 2 users through the config-file user.[userName].replacedBy=[newUserName] Modified Paths: -------------- trunk/statsvn/lib/statcvs-0.5.0.jar trunk/statsvn/site/changes.xml trunk/statsvn/site/index.xml trunk/statsvn/src/net/sf/statsvn/input/Builder.java Modified: trunk/statsvn/lib/statcvs-0.5.0.jar =================================================================== (Binary files differ) Modified: trunk/statsvn/site/changes.xml =================================================================== --- trunk/statsvn/site/changes.xml 2009-03-14 11:37:23 UTC (rev 381) +++ trunk/statsvn/site/changes.xml 2009-03-16 23:44:00 UTC (rev 382) @@ -1,128 +1,132 @@ <?xml version="1.0"?> <document> - <properties> - <title>StatSVN Changes</title> - </properties> - <body> - <release version="0.5.0" date="2008-04-01" description="Maintenance"> - <action dev="benoitx" type="add">Add new report for 12m Rolling Developer report.</action> - </release> - <release version="0.4.1" date="2008-06-20" description="Maintenance"> - <action dev="jkealey" type="fix" issue="1963918" due-to="Joseph Armbruster">Fixed issue when the only change was a property change.</action> - <action dev="jkealey" type="fix" issue="1993217" due-to="Edward Oubrayrie">Fixed issue in command line help with regards to -concurrency-threshold</action> - <action dev="benoitx" type="add">Add charset option on command line.</action> - <action dev="benoitx" type="add">Add maillist as Nabble forums.</action> - </release> - <release version="0.4.0" date="2008-04-20" description="Maintenance+move to StatCVS"> - <action dev="benoitx" type="add" due-to="Nilendra Weerasinghe">Added support for an XML export of the main reports, just use option -xml, based on patched proposed by Nilendra Weerasinghe.</action> - <action dev="benoitx" type="add" issue="1639462" due-to="Jean-Francois Burdet">Applied patch for [ 1639462 ] Added TRAC Support.</action> - <action dev="benoitx" type="add" issue="1932689" due-to="Martin Majlis"> - Applied patch to StatCVS to show the Head Revision (had to change it to hide it for CVS as it does not make sense for CVS). + <properties> + <title>StatSVN Changes</title> + </properties> + <body> + <release version="0.5.0" date="2008-04-01" description="Maintenance"> + <action dev="benoitx" type="add">Add new report for 12m Rolling Developer report.</action> + <action dev="benoitx" type="add"> + Add ability to MERGE 2 users through the config-file user.[userName].replacedBy=[newUserName] + </action> + </release> + <release version="0.4.1" date="2008-06-20" description="Maintenance"> + <action dev="jkealey" type="fix" issue="1963918" due-to="Joseph Armbruster">Fixed issue when the only change was a property change.</action> + <action dev="jkealey" type="fix" issue="1993217" due-to="Edward Oubrayrie">Fixed issue in command line help with regards to -concurrency-threshold</action> + <action dev="benoitx" type="add">Add charset option on command line.</action> + <action dev="benoitx" type="add">Add maillist as Nabble forums.</action> + </release> + <release version="0.4.0" date="2008-04-20" description="Maintenance+move to StatCVS"> + <action dev="benoitx" type="add" due-to="Nilendra Weerasinghe">Added support for an XML export of the main reports, just use option -xml, based on patched proposed by + Nilendra Weerasinghe.</action> + <action dev="benoitx" type="add" issue="1639462" due-to="Jean-Francois Burdet">Applied patch for [ 1639462 ] Added TRAC Support.</action> + <action dev="benoitx" type="add" issue="1932689" due-to="Martin Majlis"> + Applied patch to StatCVS to show the Head Revision (had to change it to hide it for CVS as it does not make sense for CVS). </action> - <action dev="benoitx" type="update"> - The RepoMap and LOCChurn reports have been promoted to StatCVS and hence, removed from the StatSVN source tree. + <action dev="benoitx" type="update"> + The RepoMap and LOCChurn reports have been promoted to StatCVS and hence, removed from the StatSVN source tree. </action> - <action dev="jkealey" type="add"> - Performance enhancement. If SVN 1.4 is available, do one diff per revision instead of one diff per file per revision. Added -force-legacy-diff - option to retain previous functionality. + <action dev="jkealey" type="add"> + Performance enhancement. If SVN 1.4 is available, do one diff per revision instead of one diff per file per revision. Added -force-legacy-diff + option to retain previous functionality. </action> - <action dev="benoitx" type="add" due-to="Martin Majlis">Applied patch to StatCVS to add Affected files count per commit.</action> - <action dev="benoitx" type="add" issue="1839303" due-to="Martin Majlis">Applied patch to StatCVS to add Revision number on commit page.</action> - <action dev="benoitx" type="add"> - I have added a validation mechanism that checks the Repository object once the log is parsed, if root is null, it will terminate the execution. + <action dev="benoitx" type="add" due-to="Martin Majlis">Applied patch to StatCVS to add Affected files count per commit.</action> + <action dev="benoitx" type="add" issue="1839303" due-to="Martin Majlis">Applied patch to StatCVS to add Revision number on commit page.</action> + <action dev="benoitx" type="add"> + I have added a validation mechanism that checks the Repository object once the log is parsed, if root is null, it will terminate the execution. </action> - <action dev="benoitx" type="add" issue="1687928"> - I have added a small project attribute which makes it more obvious which cache belongs to what project in the repositories.xml and xml cache - files. + <action dev="benoitx" type="add" issue="1687928"> + I have added a small project attribute which makes it more obvious which cache belongs to what project in the repositories.xml and xml cache + files. </action> - <action dev="benoitx" type="add" issue="1692245"> - Added support for tags-dir as a way to specify 'top' directory where the tags are stored, defaulted to "/tags/". + <action dev="benoitx" type="add" issue="1692245"> + Added support for tags-dir as a way to specify 'top' directory where the tags are stored, defaulted to "/tags/". </action> - <action dev="benoitx" type="fix">Changed RSS to use the common one: http://feeds.feedburner.com/ObjectlabOpenSourceNews</action> - <action dev="jpdaigle" type="add" issue="1743119">Added support for a '-anonymize' command line option, to anonymize committer names.</action> - </release> + <action dev="benoitx" type="fix">Changed RSS to use the common one: http://feeds.feedburner.com/ObjectlabOpenSourceNews</action> + <action dev="jpdaigle" type="add" issue="1743119">Added support for a '-anonymize' command line option, to anonymize committer names.</action> + </release> - <release version="0.3.1" date="2007-03-10" description="Maintenance"> - <action dev="benoitx" type="fix"> - Fix an issue in detecting tags that may be further down than the root directory of the log. Also use the tag pattern earlier on in the log - parser, so only required tags will be considered. + <release version="0.3.1" date="2007-03-10" description="Maintenance"> + <action dev="benoitx" type="fix"> + Fix an issue in detecting tags that may be further down than the root directory of the log. Also use the tag pattern earlier on in the log + parser, so only required tags will be considered. </action> - <action dev="benoitx" type="fix">Exclude pattern is now used also for the diffs (avoid attempting to svn diff '.htaccess' at all cost!).</action> - <action dev="benoitx" type="fix" issue="1653392" due-to="Dermot Daly">Fixing url encoded module name.</action> - <action dev="jpdaigle" type="add"> - Added EnvReport function to aid in identifying common failure cases (no change to StatSVN command line, it is a seperate executable class). + <action dev="benoitx" type="fix">Exclude pattern is now used also for the diffs (avoid attempting to svn diff '.htaccess' at all cost!).</action> + <action dev="benoitx" type="fix" issue="1653392" due-to="Dermot Daly">Fixing url encoded module name.</action> + <action dev="jpdaigle" type="add"> + Added EnvReport function to aid in identifying common failure cases (no change to StatSVN command line, it is a seperate executable class). </action> - <action dev="benoitx" type="add">Added introduction page for demos.</action> - <action dev="benoitx" type="fix" issue="1673601" due-to="Benoit Xhenseval"> - Support the tags command line parameter (will only show a given set of tags). + <action dev="benoitx" type="add">Added introduction page for demos.</action> + <action dev="benoitx" type="fix" issue="1673601" due-to="Benoit Xhenseval"> + Support the tags command line parameter (will only show a given set of tags). </action> - <action dev="benoitx" type="fix">Removed JDK 1.5 dependency on String.replace(CharSequence,CharSequence).</action> - <action dev="benoitx" type="fix" issue="1657197" due-to="p_michalczyk">Fixed an NPE in RepoPageMaker (only happening if repo has no dates.</action> - <action dev="jkealey" type="add" issue="1637082">Improved reporting of XML parsing errors.</action> - <action dev="benoitx" type="fix" issue="1655200" due-to="Alejandro Scandroli"> - Changed the Maven dependencies to use a backport concurrent compiled with jdk 1.4 + <action dev="benoitx" type="fix">Removed JDK 1.5 dependency on String.replace(CharSequence,CharSequence).</action> + <action dev="benoitx" type="fix" issue="1657197" due-to="p_michalczyk">Fixed an NPE in RepoPageMaker (only happening if repo has no dates.</action> + <action dev="jkealey" type="add" issue="1637082">Improved reporting of XML parsing errors.</action> + <action dev="benoitx" type="fix" issue="1655200" due-to="Alejandro Scandroli"> + Changed the Maven dependencies to use a backport concurrent compiled with jdk 1.4 </action> - <action dev="jpdaigle" type="fix" issue="1654750" due-to="Jean-Philippe Daigle"> - Fixed a glitch for SvnInfoUtils.urlToAbsolutePath path mangling + <action dev="jpdaigle" type="fix" issue="1654750" due-to="Jean-Philippe Daigle"> + Fixed a glitch for SvnInfoUtils.urlToAbsolutePath path mangling </action> - </release> - <release version="0.3.0" date="2007-01-12" description="Maintenance, concurrent diff, new RepoMap and Loc/Churn Reports"> - <action dev="benoitx" type="fix"> - Included a small fix in StatCVS (just post 0.3 release) in order to avoid NPE with Ant for ViewCVS integration. + </release> + <release version="0.3.0" date="2007-01-12" description="Maintenance, concurrent diff, new RepoMap and Loc/Churn Reports"> + <action dev="benoitx" type="fix"> + Included a small fix in StatCVS (just post 0.3 release) in order to avoid NPE with Ant for ViewCVS integration. </action> - <action dev="jkealey" type="update" issue="1601433" due-to="John Brugge"> - Earlier fix did not work on all operating systems; our support for spaces in filenames no longer causes problems. + <action dev="jkealey" type="update" issue="1601433" due-to="John Brugge"> + Earlier fix did not work on all operating systems; our support for spaces in filenames no longer causes problems. </action> - <action dev="jkealey" type="fix" issue="1573421" due-to="John Brugge"> - Ant task was broken in 0.2.0; fixed and changed to use same conventions as StatCVS + <action dev="jkealey" type="fix" issue="1573421" due-to="John Brugge"> + Ant task was broken in 0.2.0; fixed and changed to use same conventions as StatCVS </action> - <action dev="jkealey" type="fix" issue="1605167" due-to="Anonymous"> - Fixed a mime-type problem discovered when running StatSVN on Widelands project. + <action dev="jkealey" type="fix" issue="1605167" due-to="Anonymous"> + Fixed a mime-type problem discovered when running StatSVN on Widelands project. </action> - <action dev="benoitx" type="fix"> - Fixed a number of issues related to the LOC for files that have been moved or directories moved and/or deleted. + <action dev="benoitx" type="fix"> + Fixed a number of issues related to the LOC for files that have been moved or directories moved and/or deleted. </action> - <action dev="benoitx" type="fix" issue="1601433" due-to="Anonymous"> - The error report highlighted an issue with filenames containing space(s) in the svn diff call. + <action dev="benoitx" type="fix" issue="1601433" due-to="Anonymous"> + The error report highlighted an issue with filenames containing space(s) in the svn diff call. </action> - <action dev="benoitx" type="add"> - New Report: LOC and Churn shows the usual LOC with the amount of code touched per day. Hopefully the churn should go decreasingly towards a - release. + <action dev="benoitx" type="add"> + New Report: LOC and Churn shows the usual LOC with the amount of code touched per day. Hopefully the churn should go decreasingly towards a + release. </action> - <action dev="benoitx" type="add"> - New Report: Repo Map, a jtreemap-based report (applet) that shows the entire source tree in a hierarchical manner, the size of each box is - related to LOC and the colour to the changes over the last 30 days (red -loc, green +loc). + <action dev="benoitx" type="add"> + New Report: Repo Map, a jtreemap-based report (applet) that shows the entire source tree in a hierarchical manner, the size of each box is + related to LOC and the colour to the changes over the last 30 days (red -loc, green +loc). </action> - <action dev="benoitx" type="add" issue="1608782"> - Adding basic support for Symbolic Names (i.e. tags). You MUST get a log at the top level of the project, not the trunk level, e.g.: svn log -v - --xml https://svn.sourceforge.net/svnroot/statsvn/ That way, the log will contain some information about the tags. At the moment, StatSVN only - works with "/tags/" directory. + <action dev="benoitx" type="add" issue="1608782"> + Adding basic support for Symbolic Names (i.e. tags). You MUST get a log at the top level of the project, not the trunk level, e.g.: svn log -v + --xml https://svn.sourceforge.net/svnroot/statsvn/ That way, the log will contain some information about the tags. At the moment, StatSVN only + works with "/tags/" directory. </action> - <action dev="benoitx" type="update" issue="1612184" due-to="Richard Cyganiak">Patch for upgrade to StatCVS 0.3.0-dev.</action> - <action dev="benoitx" type="fix" issue="1612997" due-to="samuli">Removed 1.5-specific code.</action> - <action dev="benoitx" type="fix" issue="1608474" due-to="samuli">Removed 1.5-specific code.</action> - <action dev="benoitx" type="add" issue="1605731"> - Overhaul of the SVN Diff to use multiple threads if required. Command line parameters -threads (default 25) and -concurrency-threshold (default - 2000 ms) added. + <action dev="benoitx" type="update" issue="1612184" due-to="Richard Cyganiak">Patch for upgrade to StatCVS 0.3.0-dev.</action> + <action dev="benoitx" type="fix" issue="1612997" due-to="samuli">Removed 1.5-specific code.</action> + <action dev="benoitx" type="fix" issue="1608474" due-to="samuli">Removed 1.5-specific code.</action> + <action dev="benoitx" type="add" issue="1605731"> + Overhaul of the SVN Diff to use multiple threads if required. Command line parameters -threads (default 25) and -concurrency-threshold (default + 2000 ms) added. </action> - <action dev="benoitx" type="update">Upgrade dependency to statcvs-0.3 which allows extra reports to be integrated.</action> - <action dev="benoitx" type="fix" issue="1602429" due-to="Miroslav Sulc"> - Patch to fix issue:running tests doesn't work because writing to /root/.statsvn is not allowed. + <action dev="benoitx" type="update">Upgrade dependency to statcvs-0.3 which allows extra reports to be integrated.</action> + <action dev="benoitx" type="fix" issue="1602429" due-to="Miroslav Sulc"> + Patch to fix issue:running tests doesn't work because writing to /root/.statsvn is not allowed. </action> - <action dev="benoitx" type="add" issue="1605311" due-to="Benoit Xhenseval"> - Adding a counter for the number of diff calls made and to be made, save the cache every 2 minutes (takes 15ms) and provides an estimate for - completion time. + <action dev="benoitx" type="add" issue="1605311" due-to="Benoit Xhenseval"> + Adding a counter for the number of diff calls made and to be made, save the cache every 2 minutes (takes 15ms) and provides an estimate for + completion time. </action> - </release> - <release version="0.2.0" date="2006-11-28" description="Removing the StatCvs code from StatSVN"> - <action dev="benoitx" type="remove">Removing the StatCvs code from StatSVN</action> - <action dev="benoitx" type="fix">Fixed issues related to InputStream from svn command line executions</action> - <action dev="benoitx" type="fix">Acted on FindBugs, PMD and Checkstyle warnings.</action> - <action dev="benoitx" type="fix">Fixed issue related to number of files when they are moved/deleted.</action> - </release> - <release version="0.1.3" date="2006-11-20" description="XDoc support and move to net.sf.statsvn"> - <action dev="benoitx" type="add">Added support for xdoc.</action> - <action dev="benoitx" type="add">Moved code to net.sf.statsvn in preparation of removing the code that belongs to StatCvs.</action> - </release> - </body> + </release> + <release version="0.2.0" date="2006-11-28" description="Removing the StatCvs code from StatSVN"> + <action dev="benoitx" type="remove">Removing the StatCvs code from StatSVN</action> + <action dev="benoitx" type="fix">Fixed issues related to InputStream from svn command line executions</action> + <action dev="benoitx" type="fix">Acted on FindBugs, PMD and Checkstyle warnings.</action> + <action dev="benoitx" type="fix">Fixed issue related to number of files when they are moved/deleted.</action> + </release> + <release version="0.1.3" date="2006-11-20" description="XDoc support and move to net.sf.statsvn"> + <action dev="benoitx" type="add">Added support for xdoc.</action> + <action dev="benoitx" type="add">Moved code to net.sf.statsvn in preparation of removing the code that belongs to StatCvs.</action> + </release> + </body> </document> Modified: trunk/statsvn/site/index.xml =================================================================== --- trunk/statsvn/site/index.xml 2009-03-14 11:37:23 UTC (rev 381) +++ trunk/statsvn/site/index.xml 2009-03-16 23:44:00 UTC (rev 382) @@ -24,6 +24,8 @@ <section name="StatSVN News"> <p style="margin-top:10px; margin-bottom:0; padding-bottom:0; text-align:center; line-height:0"><a href="http://feeds.feedburner.com/~r/ObjectlabOpenSourceNews/~6/1"><img src="http://feeds.feedburner.com/ObjectlabOpenSourceNews.1.gif" alt="ObjectLab Open Source News" style="border:0"/></a></p><p style="margin-top:5px; padding-top:0; font-size:x-small; text-align:center"><a href="http://www.feedburner.com/fb/a/headlineanimator/install?id=829470&w=1" target="_blank">Grab this Headline Animator</a></p> + <p>2009-03-16: release of 0.5.0 beta.</p> + <p>2008-06-20: release of 0.4.1, re-launch of the <a href="http://wiki.statsvn.org">Wiki site</a> and inclusion of the forums as embedded pages: <a href="forum.html">User Forum</a> and <a href="dev-forum.html">Developers Forum</a>. Enjoy!</p> Modified: trunk/statsvn/src/net/sf/statsvn/input/Builder.java =================================================================== --- trunk/statsvn/src/net/sf/statsvn/input/Builder.java 2009-03-14 11:37:23 UTC (rev 381) +++ trunk/statsvn/src/net/sf/statsvn/input/Builder.java 2009-03-16 23:44:00 UTC (rev 382) @@ -47,6 +47,7 @@ import net.sf.statcvs.output.ConfigurationOptions; import net.sf.statcvs.util.FilePatternMatcher; import net.sf.statcvs.util.FileUtils; +import net.sf.statcvs.util.StringUtils; import net.sf.statsvn.output.SvnConfigurationOptions; /** @@ -68,200 +69,212 @@ * */ public class Builder implements SvnLogBuilder { - private final Set atticFileNames = new HashSet(); + private final Set atticFileNames = new HashSet(); - private final Map authors = new HashMap(); + private final Map authors = new HashMap(); - private FileBuilder currentFileBuilder = null; + private FileBuilder currentFileBuilder = null; - private final Map directories = new HashMap(); + private final Map directories = new HashMap(); - private final FilePatternMatcher excludePattern; + private final FilePatternMatcher excludePattern; - private final Map fileBuilders = new HashMap(); + private final Map fileBuilders = new HashMap(); - private final FilePatternMatcher includePattern; + private final FilePatternMatcher includePattern; - private String projectName = null; + private String projectName = null; - private final RepositoryFileManager repositoryFileManager; + private final RepositoryFileManager repositoryFileManager; - private Date startDate = null; + private Date startDate = null; - private final Map symbolicNames = new HashMap(); + private final Map symbolicNames = new HashMap(); - private final Pattern tagsPattern; + private final Pattern tagsPattern; - /** - * Creates a new <tt>Builder</tt> - * - * @param repositoryFileManager - * the {@link RepositoryFileManager} that can be used to retrieve LOC counts for the files that this builder will create - * @param includePattern - * a list of Ant-style wildcard patterns, seperated by : or ; - * @param excludePattern - * a list of Ant-style wildcard patterns, seperated by : or ; - */ - public Builder(final RepositoryFileManager repositoryFileManager, final FilePatternMatcher includePattern, final FilePatternMatcher excludePattern, - final Pattern tagsPattern) { - this.repositoryFileManager = repositoryFileManager; - this.includePattern = includePattern; - this.excludePattern = excludePattern; - this.tagsPattern = tagsPattern; - directories.put("", Directory.createRoot()); - } + /** + * Creates a new <tt>Builder</tt> + * + * @param repositoryFileManager + * the {@link RepositoryFileManager} that can be used to retrieve LOC counts for the files that this builder will create + * @param includePattern + * a list of Ant-style wildcard patterns, seperated by : or ; + * @param excludePattern + * a list of Ant-style wildcard patterns, seperated by : or ; + */ + public Builder(final RepositoryFileManager repositoryFileManager, final FilePatternMatcher includePattern, final FilePatternMatcher excludePattern, + final Pattern tagsPattern) { + this.repositoryFileManager = repositoryFileManager; + this.includePattern = includePattern; + this.excludePattern = excludePattern; + this.tagsPattern = tagsPattern; + directories.put("", Directory.createRoot()); + } - /** - * Adds a file to the attic. This method should only be called if our first invocation to (@link #buildFile(String, boolean, boolean, Map)) was given an - * invalid isInAttic field. - * - * This is a hack to handle post-processing of implicit deletions at the same time as the implicit additions that can be found in Subversion. - * - * @param filename - * the filename to add to the attic. - */ - public void addToAttic(final String filename) { - if (!atticFileNames.contains(filename)) { - atticFileNames.add(filename); - } - } + /** + * Adds a file to the attic. This method should only be called if our first invocation to (@link #buildFile(String, boolean, boolean, Map)) was given an + * invalid isInAttic field. + * + * This is a hack to handle post-processing of implicit deletions at the same time as the implicit additions that can be found in Subversion. + * + * @param filename + * the filename to add to the attic. + */ + public void addToAttic(final String filename) { + if (!atticFileNames.contains(filename)) { + atticFileNames.add(filename); + } + } - /** - * <p> - * Starts building a new file. The files are not expected to be created in any particular order. Subsequent calls to (@link #buildRevision(RevisionData)) - * will add revisions to this file. - * </p> - * - * <p> - * New in StatSVN: If the method has already been invoked with the same filename, the original file will be re-loaded and the other arguments are ignored. - * </p> - * - * @param filename - * the file's name with path, for example "path/file.txt" - * @param isBinary - * <tt>true</tt> if it's a binary file - * @param isInAttic - * <tt>true</tt> if the file is dead on the main branch - * @param revBySymnames - * maps revision (string) by symbolic name (string) - * @param dateBySymnames - * maps date (date) by symbolic name (string) - */ - public void buildFile(final String filename, final boolean isBinary, final boolean isInAttic, final Map revBySymnames, final Map dateBySymnames) { - if (fileBuilders.containsKey(filename)) { - currentFileBuilder = (FileBuilder) fileBuilders.get(filename); - } else { - currentFileBuilder = new FileBuilder(this, filename, isBinary, revBySymnames, dateBySymnames); - fileBuilders.put(filename, currentFileBuilder); - if (isInAttic) { - addToAttic(filename); - } - } - } + /** + * <p> + * Starts building a new file. The files are not expected to be created in any particular order. Subsequent calls to (@link #buildRevision(RevisionData)) + * will add revisions to this file. + * </p> + * + * <p> + * New in StatSVN: If the method has already been invoked with the same filename, the original file will be re-loaded and the other arguments are ignored. + * </p> + * + * @param filename + * the file's name with path, for example "path/file.txt" + * @param isBinary + * <tt>true</tt> if it's a binary file + * @param isInAttic + * <tt>true</tt> if the file is dead on the main branch + * @param revBySymnames + * maps revision (string) by symbolic name (string) + * @param dateBySymnames + * maps date (date) by symbolic name (string) + */ + public void buildFile(final String filename, final boolean isBinary, final boolean isInAttic, final Map revBySymnames, final Map dateBySymnames) { + if (fileBuilders.containsKey(filename)) { + currentFileBuilder = (FileBuilder) fileBuilders.get(filename); + } else { + currentFileBuilder = new FileBuilder(this, filename, isBinary, revBySymnames, dateBySymnames); + fileBuilders.put(filename, currentFileBuilder); + if (isInAttic) { + addToAttic(filename); + } + } + } - /** - * Starts building the module. - * - * @param moduleName - * name of the module - */ - public void buildModule(final String moduleName) { - this.projectName = moduleName; - } + /** + * Starts building the module. + * + * @param moduleName + * name of the module + */ + public void buildModule(final String moduleName) { + this.projectName = moduleName; + } - /** - * Adds a revision to the current file. The revisions must be added in SVN logfile order, that is starting with the most recent one. - * - * @param data - * the revision - */ - public void buildRevision(final RevisionData data) { + /** + * Adds a revision to the current file. The revisions must be added in SVN logfile order, that is starting with the most recent one. + * + * @param data + * the revision + */ + public void buildRevision(final RevisionData data) { - currentFileBuilder.addRevisionData(data); + currentFileBuilder.addRevisionData(data); - if (startDate == null || startDate.compareTo(data.getDate()) > 0) { - startDate = data.getDate(); - } - } + if (startDate == null || startDate.compareTo(data.getDate()) > 0) { + startDate = data.getDate(); + } + } - /** - * Returns a Repository object of all files. - * - * @return Repository a Repository object - */ - public Repository createRepository() { + /** + * Returns a Repository object of all files. + * + * @return Repository a Repository object + */ + public Repository createRepository() { - if (startDate == null) { - return new Repository(); - } + if (startDate == null) { + return new Repository(); + } - final Repository result = new Repository(); - final Iterator it = fileBuilders.values().iterator(); - while (it.hasNext()) { - final FileBuilder fileBuilder = (FileBuilder) it.next(); - final VersionedFile file = fileBuilder.createFile(startDate); - if (file == null) { - continue; - } - result.addFile(file); - SvnConfigurationOptions.getTaskLogger().log("adding " + file.getFilenameWithPath() + " (" + file.getRevisions().size() + " revisions)"); - } + final Repository result = new Repository(); + final Iterator it = fileBuilders.values().iterator(); + while (it.hasNext()) { + final FileBuilder fileBuilder = (FileBuilder) it.next(); + final VersionedFile file = fileBuilder.createFile(startDate); + if (file == null) { + continue; + } + result.addFile(file); + SvnConfigurationOptions.getTaskLogger().log("adding " + file.getFilenameWithPath() + " (" + file.getRevisions().size() + " revisions)"); + } - // Uh oh... - final SortedSet revisions = result.getRevisions(); - final List commits = new CommitListBuilder(revisions).createCommitList(); - result.setCommits(commits); + // Uh oh... + final SortedSet revisions = result.getRevisions(); + final List commits = new CommitListBuilder(revisions).createCommitList(); + result.setCommits(commits); - // result.setSymbolicNames(new TreeSet(symbolicNames.values())); - result.setSymbolicNames(getMatchingSymbolicNames()); + // result.setSymbolicNames(new TreeSet(symbolicNames.values())); + result.setSymbolicNames(getMatchingSymbolicNames()); - SvnConfigurationOptions.getTaskLogger().log("SYMBOLIC NAMES - " + symbolicNames); + SvnConfigurationOptions.getTaskLogger().log("SYMBOLIC NAMES - " + symbolicNames); - return result; - } + return result; + } - /** - * Returns the <tt>Set</tt> of filenames that are "in the attic". - * - * @return a <tt>Set</tt> of <tt>String</tt>s - */ - public Set getAtticFileNames() { - return atticFileNames; - } + /** + * Returns the <tt>Set</tt> of filenames that are "in the attic". + * + * @return a <tt>Set</tt> of <tt>String</tt>s + */ + public Set getAtticFileNames() { + return atticFileNames; + } - /** - * returns the <tt>Author</tt> of the given name or creates it if it does not yet exist. Author names are handled as case-insensitive. - * - * @param name - * the author's name - * @return a corresponding <tt>Author</tt> object - */ - public Author getAuthor(String name) { - if (name == null || name.length() == 0) { - name = Messages.getString("AUTHOR_UNKNOWN"); - } + /** + * returns the <tt>Author</tt> of the given name or creates it if it does not yet exist. Author names are handled as case-insensitive. + * + * @param name + * the author's name + * @return a corresponding <tt>Author</tt> object + */ + public Author getAuthor(String name) { + if (name == null || name.length() == 0) { + name = Messages.getString("AUTHOR_UNKNOWN"); + } - final String lowerCaseName = name.toLowerCase(Locale.getDefault()); - final boolean bAnon = SvnConfigurationOptions.isAnonymize(); - if (this.authors.containsKey(lowerCaseName)) { - return (Author) this.authors.get(lowerCaseName); - } + String lowerCaseName = name.toLowerCase(Locale.getDefault()); + final boolean bAnon = SvnConfigurationOptions.isAnonymize(); + if (this.authors.containsKey(lowerCaseName)) { + return (Author) this.authors.get(lowerCaseName); + } - Author newAuthor; - if (bAnon) { - // The first time a particular name is encountered, create an anonymized name. - newAuthor = new Author(AuthorAnonymizingProvider.getNewName()); - } else { - newAuthor = new Author(name); - } + Author newAuthor; + if (bAnon) { + // The first time a particular name is encountered, create an anonymized name. + newAuthor = new Author(AuthorAnonymizingProvider.getNewName()); + } else { + newAuthor = new Author(name); + } - final Properties p = ConfigurationOptions.getConfigProperties(); - this.authors.put(lowerCaseName, newAuthor); - if (p != null && !bAnon) { - newAuthor.setRealName(p.getProperty("user." + lowerCaseName + ".realName")); - newAuthor.setHomePageUrl(p.getProperty("user." + lowerCaseName + ".url")); - newAuthor.setImageUrl(p.getProperty("user." + lowerCaseName + ".image")); - newAuthor.setEmail(p.getProperty("user." + lowerCaseName + ".email")); + final Properties p = ConfigurationOptions.getConfigProperties(); + + if (p != null) { + String replacementUser = p.getProperty("user." + lowerCaseName + ".replacedBy"); + + if (StringUtils.isNotEmpty(replacementUser)) { + replacementUser = replacementUser.toLowerCase(); + if (this.authors.containsKey(replacementUser)) { + return (Author) this.authors.get(replacementUser); + } + lowerCaseName = replacementUser; + } + } + + if (p != null && !bAnon) { + newAuthor.setRealName(p.getProperty("user." + lowerCaseName + ".realName")); + newAuthor.setHomePageUrl(p.getProperty("user." + lowerCaseName + ".url")); + newAuthor.setImageUrl(p.getProperty("user." + lowerCaseName + ".image")); + newAuthor.setEmail(p.getProperty("user." + lowerCaseName + ".email")); newAuthor.setTwitterUserName(p.getProperty("user." + name.toLowerCase() + ".twitterUsername")); newAuthor.setTwitterUserId(p.getProperty("user." + name.toLowerCase() + ".twitterUserId")); String val = p.getProperty("user." + name.toLowerCase() + ".twitterIncludeFlash"); @@ -272,177 +285,178 @@ if (val != null && val.length() > 0) { newAuthor.setTwitterIncludeHtml(Boolean.valueOf(val).booleanValue()); } - } - return newAuthor; - } + } + this.authors.put(lowerCaseName, newAuthor); + return newAuthor; + } - /** - * Returns the <tt>Directory</tt> of the given filename or creates it if it does not yet exist. - * - * @param filename - * the name and path of a file, for example "src/Main.java" - * @return a corresponding <tt>Directory</tt> object - */ - public Directory getDirectory(final String filename) { - final int lastSlash = filename.lastIndexOf('/'); - if (lastSlash == -1) { - return getDirectoryForPath(""); - } - return getDirectoryForPath(filename.substring(0, lastSlash + 1)); - } + /** + * Returns the <tt>Directory</tt> of the given filename or creates it if it does not yet exist. + * + * @param filename + * the name and path of a file, for example "src/Main.java" + * @return a corresponding <tt>Directory</tt> object + */ + public Directory getDirectory(final String filename) { + final int lastSlash = filename.lastIndexOf('/'); + if (lastSlash == -1) { + return getDirectoryForPath(""); + } + return getDirectoryForPath(filename.substring(0, lastSlash + 1)); + } - /** - * @param path - * for example "src/net/sf/statcvs/" - * @return the <tt>Directory</tt> corresponding to <tt>statcvs</tt> - */ - private Directory getDirectoryForPath(final String path) { - if (directories.containsKey(path)) { - return (Directory) directories.get(path); - } - final Directory parent = getDirectoryForPath(FileUtils.getParentDirectoryPath(path)); - final Directory newDirectory = parent.createSubdirectory(FileUtils.getDirectoryName(path)); - directories.put(path, newDirectory); - return newDirectory; - } + /** + * @param path + * for example "src/net/sf/statcvs/" + * @return the <tt>Directory</tt> corresponding to <tt>statcvs</tt> + */ + private Directory getDirectoryForPath(final String path) { + if (directories.containsKey(path)) { + return (Directory) directories.get(path); + } + final Directory parent = getDirectoryForPath(FileUtils.getParentDirectoryPath(path)); + final Directory newDirectory = parent.createSubdirectory(FileUtils.getDirectoryName(path)); + directories.put(path, newDirectory); + return newDirectory; + } - /** - * New in StatSVN: We need to have access to FileBuilders after they have been created to populate them with version numbers later on. - * - * @todo Beef up this interface to better encapsulate the data structure. - * - * @return this builder's contained (@link FileBuilder)s. - */ - public Map getFileBuilders() { - return fileBuilders; - } + /** + * New in StatSVN: We need to have access to FileBuilders after they have been created to populate them with version numbers later on. + * + * @todo Beef up this interface to better encapsulate the data structure. + * + * @return this builder's contained (@link FileBuilder)s. + */ + public Map getFileBuilders() { + return fileBuilders; + } - /** - * @see RepositoryFileManager#getLinesOfCode(String) - */ - public int getLOC(final String filename) throws NoLineCountException { - if (repositoryFileManager == null) { - throw new NoLineCountException("no RepositoryFileManager"); - } + /** + * @see RepositoryFileManager#getLinesOfCode(String) + */ + public int getLOC(final String filename) throws NoLineCountException { + if (repositoryFileManager == null) { + throw new NoLineCountException("no RepositoryFileManager"); + } - return repositoryFileManager.getLinesOfCode(filename); - } + return repositoryFileManager.getLinesOfCode(filename); + } - public String getProjectName() { - return projectName; - } + public String getProjectName() { + return projectName; + } - /** - * @see RepositoryFileManager#getRevision(String) - */ - public String getRevision(final String filename) throws IOException { - if (repositoryFileManager == null) { - throw new IOException("no RepositoryFileManager"); - } - return repositoryFileManager.getRevision(filename); - } + /** + * @see RepositoryFileManager#getRevision(String) + */ + public String getRevision(final String filename) throws IOException { + if (repositoryFileManager == null) { + throw new IOException("no RepositoryFileManager"); + } + return repositoryFileManager.getRevision(filename); + } - /** - * Returns the {@link SymbolicName} with the given name or creates it if it does not yet exist. - * - * @param name - * the symbolic name's name - * @return the corresponding symbolic name object - */ - public SymbolicName getSymbolicName(final String name, final Date date) { - SymbolicName sym = (SymbolicName) symbolicNames.get(name); + /** + * Returns the {@link SymbolicName} with the given name or creates it if it does not yet exist. + * + * @param name + * the symbolic name's name + * @return the corresponding symbolic name object + */ + public SymbolicName getSymbolicName(final String name, final Date date) { + SymbolicName sym = (SymbolicName) symbolicNames.get(name); - if (sym != null) { - return sym; - } else { - sym = new SymbolicName(name, date); - symbolicNames.put(name, sym); + if (sym != null) { + return sym; + } else { + sym = new SymbolicName(name, date); + symbolicNames.put(name, sym); - return sym; - } - } + return sym; + } + } - /** - * Matches a filename against the include and exclude patterns. If no include pattern was specified, all files will be included. If no exclude pattern was - * specified, no files will be excluded. - * - * @param filename - * a filename - * @return <tt>true</tt> if the filename matches one of the include patterns and does not match any of the exclude patterns. If it matches an include and - * an exclude pattern, <tt>false</tt> will be returned. - */ - public boolean matchesPatterns(final String filename) { - if (excludePattern != null && excludePattern.matches(filename)) { - return false; - } - if (includePattern != null) { - return includePattern.matches(filename); - } - return true; - } + /** + * Matches a filename against the include and exclude patterns. If no include pattern was specified, all files will be included. If no exclude pattern was + * specified, no files will be excluded. + * + * @param filename + * a filename + * @return <tt>true</tt> if the filename matches one of the include patterns and does not match any of the exclude patterns. If it matches an include and + * an exclude pattern, <tt>false</tt> will be returned. + */ + public boolean matchesPatterns(final String filename) { + if (excludePattern != null && excludePattern.matches(filename)) { + return false; + } + if (includePattern != null) { + return includePattern.matches(filename); + } + return true; + } - /** - * Matches a tag against the tag patterns. - * - * @param tag - * a tag - * @return <tt>true</tt> if the tag matches the tag pattern. - */ - public boolean matchesTagPatterns(final String tag) { - if (tagsPattern != null) { - return tagsPattern.matcher(tag).matches(); - } - return false; - } + /** + * Matches a tag against the tag patterns. + * + * @param tag + * a tag + * @return <tt>true</tt> if the tag matches the tag pattern. + */ + public boolean matchesTagPatterns(final String tag) { + if (tagsPattern != null) { + return tagsPattern.matcher(tag).matches(); + } + return false; + } - /** - * New in StatSVN: Updates a particular revision for a file with new line count information. If the file or revision does not exist, action will do nothing. - * - * Necessary because line counts are not given in the log file and hence can only be added in a second pass. - * - * @param filename - * the file to be updated - * @param revisionNumber - * the revision number to be updated - * @param linesAdded - * the lines that were added - * @param linesRemoved - * the lines that were removed - */ - public synchronized void updateRevision(final String filename, final String revisionNumber, final int linesAdded, final int linesRemoved) { - final FileBuilder fb = (FileBuilder) fileBuilders.get(filename); - if (fb != null) { - fb.updateRevision(revisionNumber, linesAdded, linesRemoved); - } - } + /** + * New in StatSVN: Updates a particular revision for a file with new line count information. If the file or revision does not exist, action will do nothing. + * + * Necessary because line counts are not given in the log file and hence can only be added in a second pass. + * + * @param filename + * the file to be updated + * @param revisionNumber + * the revision number to be updated + * @param linesAdded + * the lines that were added + * @param linesRemoved + * the lines that were removed + */ + public synchronized void updateRevision(final String filename, final String revisionNumber, final int linesAdded, final int linesRemoved) { + final FileBuilder fb = (FileBuilder) fileBuilders.get(filename); + if (fb != null) { + fb.updateRevision(revisionNumber, linesAdded, linesRemoved); + } + } - /** - * return only a set of matching tag names (from a list on the command line). - */ - private SortedSet getMatchingSymbolicNames() { - final TreeSet result = new TreeSet(); - if (this.tagsPattern == null) { - return result; - } - for (final Iterator it = this.symbolicNames.values().iterator(); it.hasNext();) { - final SymbolicName sn = (SymbolicName) it.next(); - if (sn.getDate() != null && this.tagsPattern.matcher(sn.getName()).matches()) { - result.add(sn); - } - } - return result; - } + /** + * return only a set of matching tag names (from a list on the command line). + */ + private SortedSet getMatchingSymbolicNames() { + final TreeSet result = new TreeSet(); + if (this.tagsPattern == null) { + return result; + } + for (final Iterator it = this.symbolicNames.values().iterator(); it.hasNext();) { + final SymbolicName sn = (SymbolicName) it.next(); + if (sn.getDate() != null && this.tagsPattern.matcher(sn.getName()).matches()) { + result.add(sn); + } + } + return result; + } - private static final class AuthorAnonymizingProvider { - private AuthorAnonymizingProvider() { - // no access - } + private static final class AuthorAnonymizingProvider { + private AuthorAnonymizingProvider() { + // no access + } - private static int count = 0; + private static int count = 0; - static synchronized String getNewName() { - return "author" + (String.valueOf(++count)); - } + static synchronized String getNewName() { + return "author" + (String.valueOf(++count)); + } - } + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |