|
From: <be...@us...> - 2008-03-28 16:55:51
|
Revision: 348
http://statsvn.svn.sourceforge.net/statsvn/?rev=348&view=rev
Author: benoitx
Date: 2008-03-28 09:55:48 -0700 (Fri, 28 Mar 2008)
Log Message:
-----------
The RepoMap and LOCChurn pages are now managed by StatCVS.
Also enable the -xml option in StatSVN.
Modified Paths:
--------------
trunk/statsvn/lib/statcvs-0.3.1-dev.jar
trunk/statsvn/site/changes.xml
trunk/statsvn/src/net/sf/statsvn/Main.java
Removed Paths:
-------------
trunk/statsvn/src/net/sf/statsvn/output/ChurnPageMaker.java
trunk/statsvn/src/net/sf/statsvn/output/LOCChurnChartMaker.java
trunk/statsvn/src/net/sf/statsvn/output/RepoMapPageMaker.java
trunk/statsvn/src/net/sf/statsvn/output/web-files/
Modified: trunk/statsvn/lib/statcvs-0.3.1-dev.jar
===================================================================
(Binary files differ)
Modified: trunk/statsvn/site/changes.xml
===================================================================
--- trunk/statsvn/site/changes.xml 2008-03-28 13:17:55 UTC (rev 347)
+++ trunk/statsvn/site/changes.xml 2008-03-28 16:55:48 UTC (rev 348)
@@ -5,6 +5,7 @@
</properties>
<body>
<release version="0.3.2-SNAPSHOT" date="in svn" description="Maintenance">
+ <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>
<action dev="benoitx" type="add" due-to="Martin Majlis">Applied patch to StatCVS to add Affected files count per commit.</action>
<action dev="benoitx" issue="1839303" due-to="Martin Majlis">Applied patch to StatCVS to add Revision number on commit page.</action>
Modified: trunk/statsvn/src/net/sf/statsvn/Main.java
===================================================================
--- trunk/statsvn/src/net/sf/statsvn/Main.java 2008-03-28 13:17:55 UTC (rev 347)
+++ trunk/statsvn/src/net/sf/statsvn/Main.java 2008-03-28 16:55:48 UTC (rev 348)
@@ -42,8 +42,8 @@
import net.sf.statsvn.input.Builder;
import net.sf.statsvn.input.RepositoryFileManager;
import net.sf.statsvn.input.SvnLogfileParser;
-import net.sf.statsvn.output.ChurnPageMaker;
-import net.sf.statsvn.output.RepoMapPageMaker;
+import net.sf.statcvs.output.ChurnPageMaker;
+import net.sf.statcvs.output.RepoMapPageMaker;
import net.sf.statsvn.output.SvnCommandLineParser;
import net.sf.statsvn.output.SvnConfigurationOptions;
import net.sf.statsvn.util.SvnStartupUtils;
@@ -298,12 +298,12 @@
} else {
// add new reports
List extraReports = new ArrayList();
- extraReports.add(new RepoMapPageMaker(config).toFile());
- extraReports.add(new ChurnPageMaker(config).toFile());
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();
}
}
Deleted: trunk/statsvn/src/net/sf/statsvn/output/ChurnPageMaker.java
===================================================================
--- trunk/statsvn/src/net/sf/statsvn/output/ChurnPageMaker.java 2008-03-28 13:17:55 UTC (rev 347)
+++ trunk/statsvn/src/net/sf/statsvn/output/ChurnPageMaker.java 2008-03-28 16:55:48 UTC (rev 348)
@@ -1,127 +0,0 @@
-/*
- StatSVN - SVN Subversion statistics generation
- Copyright (C) 2006 Benoit Xhenseval
- http://www.statsvn.org
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-*/
-package net.sf.statsvn.output;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.Map.Entry;
-
-import net.sf.statcvs.Messages;
-import net.sf.statcvs.charts.ChartImage;
-import net.sf.statcvs.charts.SymbolicNameAnnotation;
-import net.sf.statcvs.model.Revision;
-import net.sf.statcvs.output.ReportConfig;
-import net.sf.statcvs.pages.NavigationNode;
-import net.sf.statcvs.pages.Page;
-import net.sf.statcvs.reports.LOCSeriesBuilder;
-
-import org.jfree.data.time.Day;
-import org.jfree.data.time.TimeSeries;
-
-/**
- * A LOC and Churn Chart shows both the LOC and the number of lines touched per
- * day, this allows you to see the evolution of lines of code and the amount of
- * changes. A flat LOC with a lot of Churn implies a lot of refactoring, an
- * increase in LOC in line with churn implies new functionality.
- *
- * @author Benoit Xhenseval (www.ObjectLab.co.uk)
- */
-public class ChurnPageMaker {
- private final ReportConfig config;
-
- /**
- * @see net.sf.statcvs.output.HTMLPage#HTMLPage(Repository)
- */
- public ChurnPageMaker(final ReportConfig config) {
- this.config = config;
- }
-
- public NavigationNode toFile() {
- final Page page = this.config.createPage("churn", Messages.getString("CHURN_TITLE"), Messages.getString("CHURN_TITLE"));
- page.addRawContent("\n\n<!-- The LOC and Churn Report was designed by Benoit Xhenseval (http://www.objectlab.co.uk/open)-->");
- page.addRawContent("\n<!-- Initially part of StatSVN -->\n\n");
- page.addRawContent("<p>" + Messages.getString("CHURN_DESCRIPTION") + "</p>");
- page.add(buildChart());
- return page;
- }
-
- private ChartImage buildChart() {
- Map changePerRevision = new HashMap();
- SortedSet revisions = config.getRepository().getRevisions();
- for (Iterator it = revisions.iterator(); it.hasNext();) {
- Revision rev = (Revision) it.next();
- Date dateToUse = blastTime(rev.getDate());
- Integer changes = (Integer) changePerRevision.get(dateToUse);
- if (changes == null) {
- changePerRevision.put(dateToUse, new Integer(Math.abs(getLineChanges(rev))));
- } else {
- changePerRevision.put(dateToUse, new Integer(Math.abs(changes.intValue()) + getLineChanges(rev)));
- }
- }
-
- List annotations = SymbolicNameAnnotation.createAnnotations(config.getRepository().getSymbolicNames());
- TimeSeries timeLine = new TimeSeries(Messages.getString("CHURN_TOUCHED_LINE"), Day.class);
-
- for (Iterator it = changePerRevision.entrySet().iterator(); it.hasNext();) {
- Map.Entry entry = (Entry) it.next();
-
- SvnConfigurationOptions.getTaskLogger().log("Churn on " + entry.getKey() + " ==> " + entry.getValue());
- timeLine.add(new Day((Date) entry.getKey()), ((Integer) entry.getValue()).intValue());
- }
-
- TimeSeries locSeries = getLOCTimeSeries(revisions, Messages.getString("TIME_LOC_SUBTITLE"));
-
- LOCChurnChartMaker chart = new LOCChurnChartMaker(config, timeLine, locSeries, Messages.getString("LOC_CHURN_CHART_TITLE"), "locandchurn.png", config
- .getLargeChartSize(), annotations);
- return chart.toFile();
- }
-
- private Date blastTime(final Date date) {
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- cal.set(Calendar.MILLISECOND, 0);
- cal.set(Calendar.HOUR_OF_DAY, 0);
- cal.set(Calendar.MINUTE, 0);
- cal.set(Calendar.SECOND, 0);
- return cal.getTime();
- }
-
- private int getLineChanges(Revision rev) {
- if (rev.isDead()) {
- return rev.getLinesDelta();
- }
- return Math.abs(rev.getLinesDelta()) + 2 * rev.getReplacedLines();
- }
-
- private TimeSeries getLOCTimeSeries(final SortedSet revisions, final String title) {
- final Iterator it = revisions.iterator();
- final LOCSeriesBuilder locCounter = new LOCSeriesBuilder(title, true);
- while (it.hasNext()) {
- locCounter.addRevision((Revision) it.next());
- }
- return locCounter.getTimeSeries();
- }
-}
Deleted: trunk/statsvn/src/net/sf/statsvn/output/LOCChurnChartMaker.java
===================================================================
--- trunk/statsvn/src/net/sf/statsvn/output/LOCChurnChartMaker.java 2008-03-28 13:17:55 UTC (rev 347)
+++ trunk/statsvn/src/net/sf/statsvn/output/LOCChurnChartMaker.java 2008-03-28 16:55:48 UTC (rev 348)
@@ -1,125 +0,0 @@
-/*
- StatSVN - SVN Subversion statistics generation
- Copyright (C) 2006 Benoit Xhenseval
- http://www.statsvn.org
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- */
-package net.sf.statsvn.output;
-
-import java.awt.Dimension;
-import java.util.Iterator;
-import java.util.List;
-
-import net.sf.statcvs.Messages;
-import net.sf.statcvs.charts.ChartImage;
-import net.sf.statcvs.output.ConfigurationOptions;
-import net.sf.statcvs.output.ReportConfig;
-
-import org.jfree.chart.ChartFactory;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.annotations.XYAnnotation;
-import org.jfree.chart.axis.DateAxis;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.plot.XYPlot;
-import org.jfree.chart.renderer.xy.XYBarRenderer;
-import org.jfree.chart.renderer.xy.XYStepRenderer;
-import org.jfree.data.time.TimeSeries;
-import org.jfree.data.time.TimeSeriesCollection;
-import org.jfree.data.xy.IntervalXYDataset;
-
-/**
- * Class for producing Lines Of Code with Churn charts
- *
- * @author Benoit Xhenseval (www.ObjectLab.co.uk)
- */
-public class LOCChurnChartMaker {
- private static final double LOWER_MARGIN = 0.40;
- private ChartImage chartFile = null;
-
- /**
- * Creates a Lines Of Code chart from a <tt>BasicTimeSeries</tt> and saves
- * it as PNG
- *
- * @param churnSeries
- * the Churn history
- * @param locSeries
- * the LOC history
- * @param title
- * the chart title
- * @param fileName
- * the filename where the chart will be saved
- * @param width
- * width of PNG in pixels
- * @param height
- * height of PNG in pixels
- * @param annotations
- */
- public LOCChurnChartMaker(final ReportConfig config, final TimeSeries churnSeries, final TimeSeries locSeries, final String title, final String fileName,
- final Dimension size, final List annotations) {
- final TimeSeriesCollection collection = new TimeSeriesCollection(locSeries);
- // collection.setDomainIsPointsInTime(false);
- final TimeSeriesCollection churnCollection = new TimeSeriesCollection(churnSeries);
- // churnCollection.setDomainIsPointsInTime(false);
- final JFreeChart chart = createChart(collection, churnCollection, title, annotations);
-
- chartFile = config.createChartImage(fileName, title, chart, size);
- }
-
- public ChartImage toFile() {
- return this.chartFile;
- }
-
- private JFreeChart createChart(final TimeSeriesCollection locCollection, final TimeSeriesCollection churnSet, final String title, final List annotations) {
- final String domain = Messages.getString("TIME_LOC_DOMAIN");
- final String range = Messages.getString("TIME_LOC_RANGE");
-
- final IntervalXYDataset data = locCollection;
- final boolean legend = true;// (locCollection.getSeriesCount() > 1);
-
- final JFreeChart chart = ChartFactory.createXYBarChart(ConfigurationOptions.getProjectName() + ":" + title, domain, true, range, data,
- PlotOrientation.VERTICAL, legend, false, false);
-
- final XYPlot plot = chart.getXYPlot();
- plot.setRenderer(new XYStepRenderer());
-
- // new...
- final NumberAxis rangeAxis1 = (NumberAxis) plot.getRangeAxis();
- rangeAxis1.setLowerMargin(LOWER_MARGIN); // to leave room for volume bars
-
- final DateAxis domainAxis = (DateAxis) plot.getDomainAxis();
- domainAxis.setVerticalTickLabels(true);
-
- // now add the churnSet
- final NumberAxis rangeAxis2 = new NumberAxis(Messages.getString("CHURN_RANGE"));
- rangeAxis2.setUpperMargin(1.00); // to leave room for price line
- plot.setRangeAxis(1, rangeAxis2);
- plot.setDataset(1, churnSet);
- plot.setRangeAxis(1, rangeAxis2);
- plot.mapDatasetToRangeAxis(1, 1);
- final XYBarRenderer renderer2 = new XYBarRenderer(0.20);
- plot.setRenderer(1, renderer2);
-
- if (annotations != null) {
- for (final Iterator it = annotations.iterator(); it.hasNext();) {
- plot.addAnnotation((XYAnnotation) it.next());
- }
- }
-
- return chart;
- }
-}
Deleted: trunk/statsvn/src/net/sf/statsvn/output/RepoMapPageMaker.java
===================================================================
--- trunk/statsvn/src/net/sf/statsvn/output/RepoMapPageMaker.java 2008-03-28 13:17:55 UTC (rev 347)
+++ trunk/statsvn/src/net/sf/statsvn/output/RepoMapPageMaker.java 2008-03-28 16:55:48 UTC (rev 348)
@@ -1,273 +0,0 @@
-/*
- StatSVN - SVN Subversion statistics generation
- Copyright (C) 2006 Benoit Xhenseval
- http://www.statsvn.org
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- */
-package net.sf.statsvn.output;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Writer;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.SortedSet;
-
-import net.sf.statcvs.Messages;
-import net.sf.statcvs.model.Directory;
-import net.sf.statcvs.model.Revision;
-import net.sf.statcvs.model.VersionedFile;
-import net.sf.statcvs.output.ConfigurationOptions;
-import net.sf.statcvs.output.ReportConfig;
-import net.sf.statcvs.pages.HTML;
-import net.sf.statcvs.pages.NavigationNode;
-import net.sf.statcvs.pages.Page;
-import net.sf.statcvs.util.FileUtils;
-
-/**
- * New report that 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).
- *
- * @author Benoit Xhenseval (www.objectlab.co.uk)
- * @see http://jtreemap.sourceforge.net for more about JTreeMap.
- */
-public class RepoMapPageMaker {
- private static final int DAYS_FROM_LAST_DATE = 30;
-
- private static final String WEB_FILE_PATH = "web-files/";
-
- private static final String REPO_FILE = "repomap-data.txt";
-
- private final Date deadline;
-
- private final Date currentDate;
-
- private final ReportConfig config;
-
- private int indent = 0;
-
- /**
- * @see net.sf.statcvs.output.HTMLPage#HTMLPage(Repository)
- */
- public RepoMapPageMaker(final ReportConfig config) {
- final Calendar cal = Calendar.getInstance();
- if (config !=null && config.getRepository() != null && config.getRepository().getLastDate()!=null) {
- cal.setTime(config.getRepository().getLastDate());
- }
- currentDate = cal.getTime();
- cal.add(Calendar.DATE, -DAYS_FROM_LAST_DATE);
- deadline = cal.getTime();
- this.config = config;
- }
-
- public NavigationNode toFile() {
- final Page page = this.config.createPage("repomap", Messages.getString("REPOMAP_TITLE"), Messages.getString("REPOMAP_TITLE"));
- page.addRawAttribute(Messages.getString("REPOMAP_START_DATE"), HTML.getDate(deadline));
- page.addRawAttribute(Messages.getString("REPOMAP_END_DATE"), HTML.getDate(currentDate));
-
- page.addRawContent("<p>" + Messages.getString("REPOMAP_DESCRIPTION") + "</p>");
- page.addRawContent("<p>" + getApplet() + "</p>");
- page.addRawContent("<p><small>This page uses <a href=\"http://jtreemap.sourceforge.net\">JTreeMap</a>.</small></p>");
- buildXmlForJTreeMap();
-
- return page;
- }
-
- private String getApplet() {
- return "<applet archive=\"./" + Messages.getString("JTREEMAP_JAR") + "\" code=\"net.sf.jtreemap.swing.example.JTreeMapAppletExample\""
- + " width=\"940\" height=\"600\"><param name=\"dataFile\" value=\"" + REPO_FILE + "\"/>" + "<param name=\"viewTree\" value=\"true\"/>"
- + "<param name=\"showWeight\" value=\"true\"/>" + "<param name=\"valuePrefix\" value=\"Change:\"/>"
- + "<param name=\"weightPrefix\" value=\"LOC:\"/>" + "<param name=\"dataFileType\" value=\"xml\"/>"
- + "<param name=\"colorProvider\" value=\"HSBLog\"/>" + "</applet>";
- }
-
- private void buildXmlForJTreeMap() {
- BufferedWriter out = null;
- try {
- copyJar(Messages.getString("JTREEMAP_JAR"));
- out = new BufferedWriter(new FileWriter(ConfigurationOptions.getOutputDir() + REPO_FILE));
- out.write("<?xml version='1.0' encoding='ISO-8859-1'?>\n");
- // out.append("<!DOCTYPE root SYSTEM \"TreeMap.dtd\" >\n");
- out.write("<root>\n");
- final Iterator it = config.getRepository().getDirectories().iterator();
- if (it.hasNext()) {
- final Directory dir = (Directory) it.next();
- doDirectory(out, dir);
- }
- out.write("</root>");
- } catch (final IOException e) {
- e.printStackTrace();
- } finally {
- if (out != null) {
- try {
- out.close();
- } catch (final IOException e) {
- SvnConfigurationOptions.getTaskLogger().error(e.toString());
- }
- }
- }
- }
-
- private void copyJar(final String jtreemapJar) throws IOException {
- InputStream stream = null;
- try {
- stream = RepoMapPageMaker.class.getResourceAsStream(WEB_FILE_PATH + jtreemapJar);
- if (stream != null) {
- FileUtils.copyFile(stream, new File(ConfigurationOptions.getOutputDir() + jtreemapJar));
- } else {
- throw new IOException("The stream to " + (WEB_FILE_PATH + jtreemapJar) + " failed, is it copied in the jar?");
- }
- } finally {
- if (stream != null) {
- stream.close();
- }
- }
- }
-
- private void addSpaces(final int count, final BufferedWriter out) throws IOException {
- out.write(getSpaces(count));
- }
-
- private String getSpaces(final int count) {
- final StringBuffer result = new StringBuffer();
- for (int i = 0; i < count; i++) {
- result.append(" ");
- }
- return result.toString();
- }
-
- private void doDirectory(final BufferedWriter out, final Directory dir) throws IOException {
- indent++;
- SvnConfigurationOptions.getTaskLogger().log("Directory:" + getSpaces(indent) + dir.getName());
-
- if (dir.isEmpty()) {
- indent--;
- return;
- }
-
- final SortedSet set = dir.getSubdirectories();
- final SortedSet files = dir.getFiles();
- final String name = dir.isRoot() ? Messages.getString("NAVIGATION_ROOT") : dir.getName();
- boolean addedBranch = false;
- if (indent > 1 && set != null && !set.isEmpty()) {
- out.write("\n");
- addSpaces(indent, out);
- out.write("<branch>\n");
- addSpaces(indent + 2, out);
- labelTag(out, name);
- addedBranch = true;
- } else if (indent == 1) {
- addSpaces(indent, out);
- labelTag(out, name);
- }
- if (set != null) {
- for (final Iterator it2 = set.iterator(); it2.hasNext();) {
- doDirectory(out, (Directory) it2.next());
- }
- }
- addedBranch = handleEachFileInDir(out, files, name, addedBranch);
- if (addedBranch) {
- addSpaces(indent, out);
- out.write("</branch>\n");
- }
- indent--;
- }
-
- private boolean handleEachFileInDir(final BufferedWriter out, final SortedSet files, final String name, boolean addedBranch) throws IOException {
- if (files != null && !files.isEmpty()) {
- for (final Iterator file = files.iterator(); file.hasNext();) {
- final VersionedFile vfile = (VersionedFile) file.next();
-
- int loc = vfile.getCurrentLinesOfCode();
-
- SvnConfigurationOptions.getTaskLogger().log("File:" + vfile.getFilename() + " LOC:" + loc);
-
- int delta = calculateTotalDelta(vfile);
- if (loc == 0) {
- loc = Math.abs(delta);
- }
- if (loc == 0) {
- continue;
- }
- if (!addedBranch) {
- out.write("\n");
- addSpaces(indent, out);
- out.write("<branch>\n");
- addSpaces(indent + 2, out);
- labelTag(out, name);
- out.write("\n");
- addedBranch = true;
- }
- addSpaces(indent + 2, out);
- out.write("<leaf>");
- labelTag(out, vfile.getFilename());
- tag(out, "weight", String.valueOf(loc));
- final double percentage = ((double) delta) / (double) loc * 100.0;
- tag(out, "value", String.valueOf(percentage));
- out.write("</leaf>\n");
- SvnConfigurationOptions.getTaskLogger().log("===========>>> LOC=" + loc + " totalDelta=" + delta + " Delta%=" + percentage);
- }
- }
- return addedBranch;
- }
-
- private int calculateTotalDelta(final VersionedFile vfile) {
- int delta = 0;
- final SortedSet revisions = vfile.getRevisions();
- // take all deltas for the last 30 days.
- for (final Iterator rev = revisions.iterator(); rev.hasNext();) {
- final Revision revision = (Revision) rev.next();
-
- SvnConfigurationOptions.getTaskLogger().log(
- "Revision " + revision.getDate() + " file:" + vfile.getFilename() + " Dead:" + vfile.isDead() + " LOC:" + revision.getLines() + " delta:"
- + revision.getLinesDelta());
-
- if (deadline.before(revision.getDate())) {
- delta += revision.getLinesDelta();
-
- SvnConfigurationOptions.getTaskLogger().log(
- "Revision " + revision.getRevisionNumber() + " Delta:" + revision.getLinesDelta() + " totalDelta:" + delta + " LOC:"
- + revision.getLines() + " Dead:" + revision.isDead());
- }
- }
- return delta;
- }
-
- private void labelTag(final Writer result, final String name) throws IOException {
- if (name == null || name.length() == 0) {
- tag(result, "label", "[root]");
- } else {
- tag(result, "label", name);
- }
- }
-
- private void tag(final Writer result, final String tagName, final String value) throws IOException {
- result.write("<");
- result.write(tagName);
- result.write(">");
- result.write(value);
- result.write("</");
- result.write(tagName);
- result.write(">");
- }
-}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|