diff options
author | James Moger <james.moger@gitblit.com> | 2011-06-01 19:51:41 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2011-06-01 19:51:41 -0400 |
commit | 424fe1b372d225d65eb42e6125b24cbb982c5969 (patch) | |
tree | 587c27859ec4289268ad3e65ad74acbe72f1686f /src/com/gitblit/utils | |
parent | f1720ca884bc3fa9da1288ad955e46f165aa4168 (diff) | |
download | gitblit-424fe1b372d225d65eb42e6125b24cbb982c5969.tar.gz gitblit-424fe1b372d225d65eb42e6125b24cbb982c5969.zip |
Stats -> Metrics. Docs in distribution zip. Created MetricUtils.
Diffstat (limited to 'src/com/gitblit/utils')
-rw-r--r-- | src/com/gitblit/utils/JGitUtils.java | 144 | ||||
-rw-r--r-- | src/com/gitblit/utils/MetricUtils.java | 179 |
2 files changed, 180 insertions, 143 deletions
diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index 4c7f14f6..5f72c9a2 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -21,9 +21,7 @@ import java.io.IOException; import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;
-import java.text.DateFormat;
import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -73,7 +71,6 @@ import org.eclipse.jgit.util.io.DisabledOutputStream; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.gitblit.models.Metric;
import com.gitblit.models.PathModel;
import com.gitblit.models.PathModel.PathChangeModel;
import com.gitblit.models.RefModel;
@@ -82,7 +79,7 @@ import com.gitblit.models.TicketModel.Comment; public class JGitUtils {
- private static final Logger LOGGER = LoggerFactory.getLogger(JGitUtils.class);
+ static final Logger LOGGER = LoggerFactory.getLogger(JGitUtils.class);
public static Repository createRepository(File repositoriesFolder, String name, boolean bare) {
Git git = Git.init().setDirectory(new File(repositoriesFolder, name)).setBare(bare).call();
@@ -780,145 +777,6 @@ public class JGitUtils { return false;
}
- public static List<Metric> getDateMetrics(Repository r, boolean includeTotal, String format) {
- Metric total = new Metric("TOTAL");
- final Map<String, Metric> metricMap = new HashMap<String, Metric>();
-
- if (hasCommits(r)) {
- try {
- RevWalk walk = new RevWalk(r);
- ObjectId object = r.resolve(Constants.HEAD);
- RevCommit lastCommit = walk.parseCommit(object);
- walk.markStart(lastCommit);
- SimpleDateFormat df = new SimpleDateFormat(format);
- Iterable<RevCommit> revlog = walk;
- for (RevCommit rev : revlog) {
- Date d = getCommitDate(rev);
- String p = df.format(d);
- if (!metricMap.containsKey(p)) {
- metricMap.put(p, new Metric(p));
- }
- Metric m = metricMap.get(p);
- m.count++;
- total.count++;
- }
- } catch (Throwable t) {
- LOGGER.error("Failed to mine log history for metrics", t);
- }
- }
- List<String> keys = new ArrayList<String>(metricMap.keySet());
- Collections.sort(keys);
- List<Metric> metrics = new ArrayList<Metric>();
- for (String key : keys) {
- metrics.add(metricMap.get(key));
- }
- if (includeTotal) {
- metrics.add(0, total);
- }
- return metrics;
- }
-
- public static List<Metric> getDateMetrics(Repository r, boolean includeTotal) {
- Metric total = new Metric("TOTAL");
- final Map<String, Metric> metricMap = new HashMap<String, Metric>();
-
- if (hasCommits(r)) {
- final List<RefModel> tags = getTags(r, -1);
- final Map<ObjectId, RefModel> tagMap = new HashMap<ObjectId, RefModel>();
- for (RefModel tag : tags) {
- tagMap.put(tag.getCommitId(), tag);
- }
- try {
- RevWalk walk = new RevWalk(r);
- ObjectId object = r.resolve(Constants.HEAD);
-
- RevCommit firstCommit = getFirstCommit(r, Constants.HEAD);
- RevCommit lastCommit = walk.parseCommit(object);
- int diffDays = (lastCommit.getCommitTime() - firstCommit.getCommitTime())
- / (60 * 60 * 24);
- total.duration = diffDays;
- DateFormat df;
- if (diffDays <= 90) {
- // Days
- df = new SimpleDateFormat("yyyy-MM-dd");
- } else if (diffDays > 90 && diffDays < 365) {
- // Weeks
- df = new SimpleDateFormat("yyyy-MM (w)");
- } else {
- // Months
- df = new SimpleDateFormat("yyyy-MM");
- }
- walk.markStart(lastCommit);
-
- Iterable<RevCommit> revlog = walk;
- for (RevCommit rev : revlog) {
- Date d = getCommitDate(rev);
- String p = df.format(d);
- if (!metricMap.containsKey(p)) {
- metricMap.put(p, new Metric(p));
- }
- Metric m = metricMap.get(p);
- m.count++;
- total.count++;
- if (tagMap.containsKey(rev.getId())) {
- m.tag++;
- total.tag++;
- }
- }
- } catch (Throwable t) {
- LOGGER.error("Failed to mine log history for metrics", t);
- }
- }
- List<String> keys = new ArrayList<String>(metricMap.keySet());
- Collections.sort(keys);
- List<Metric> metrics = new ArrayList<Metric>();
- for (String key : keys) {
- metrics.add(metricMap.get(key));
- }
- if (includeTotal) {
- metrics.add(0, total);
- }
- return metrics;
- }
-
- public static List<Metric> getAuthorMetrics(Repository r) {
- Metric total = new Metric("TOTAL");
- final Map<String, Metric> metricMap = new HashMap<String, Metric>();
-
- if (hasCommits(r)) {
- try {
- RevWalk walk = new RevWalk(r);
- ObjectId object = r.resolve(Constants.HEAD);
- RevCommit lastCommit = walk.parseCommit(object);
- walk.markStart(lastCommit);
-
- Iterable<RevCommit> revlog = walk;
- for (RevCommit rev : revlog) {
- String p = rev.getAuthorIdent().getName();
- if (StringUtils.isEmpty(p)) {
- p = rev.getAuthorIdent().getEmailAddress();
- }
- if (!metricMap.containsKey(p)) {
- metricMap.put(p, new Metric(p));
- }
- Metric m = metricMap.get(p);
- m.count++;
- total.count++;
- }
- } catch (Throwable t) {
- LOGGER.error("Failed to mine log history for metrics", t);
- }
- }
- List<String> keys = new ArrayList<String>(metricMap.keySet());
- Collections.sort(keys);
- List<Metric> metrics = new ArrayList<Metric>();
- for (String key : keys) {
- metrics.add(metricMap.get(key));
- }
- return metrics;
- }
-
-
public static RefModel getTicketsBranch(Repository r) {
RefModel ticgitBranch = null;
try {
diff --git a/src/com/gitblit/utils/MetricUtils.java b/src/com/gitblit/utils/MetricUtils.java new file mode 100644 index 00000000..b1da2738 --- /dev/null +++ b/src/com/gitblit/utils/MetricUtils.java @@ -0,0 +1,179 @@ +/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.utils;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.gitblit.models.Metric;
+import com.gitblit.models.RefModel;
+
+public class MetricUtils {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(MetricUtils.class);
+
+ public static List<Metric> getDateMetrics(Repository r, boolean includeTotal, String format) {
+ Metric total = new Metric("TOTAL");
+ final Map<String, Metric> metricMap = new HashMap<String, Metric>();
+
+ if (JGitUtils.hasCommits(r)) {
+ try {
+ RevWalk walk = new RevWalk(r);
+ ObjectId object = r.resolve(Constants.HEAD);
+ RevCommit lastCommit = walk.parseCommit(object);
+ walk.markStart(lastCommit);
+ SimpleDateFormat df = new SimpleDateFormat(format);
+ Iterable<RevCommit> revlog = walk;
+ for (RevCommit rev : revlog) {
+ Date d = JGitUtils.getCommitDate(rev);
+ String p = df.format(d);
+ if (!metricMap.containsKey(p)) {
+ metricMap.put(p, new Metric(p));
+ }
+ Metric m = metricMap.get(p);
+ m.count++;
+ total.count++;
+ }
+ } catch (Throwable t) {
+ JGitUtils.LOGGER.error("Failed to mine log history for metrics", t);
+ }
+ }
+ List<String> keys = new ArrayList<String>(metricMap.keySet());
+ Collections.sort(keys);
+ List<Metric> metrics = new ArrayList<Metric>();
+ for (String key : keys) {
+ metrics.add(metricMap.get(key));
+ }
+ if (includeTotal) {
+ metrics.add(0, total);
+ }
+ return metrics;
+ }
+
+ public static List<Metric> getDateMetrics(Repository r, boolean includeTotal) {
+ Metric total = new Metric("TOTAL");
+ final Map<String, Metric> metricMap = new HashMap<String, Metric>();
+
+ if (JGitUtils.hasCommits(r)) {
+ final List<RefModel> tags = JGitUtils.getTags(r, -1);
+ final Map<ObjectId, RefModel> tagMap = new HashMap<ObjectId, RefModel>();
+ for (RefModel tag : tags) {
+ tagMap.put(tag.getCommitId(), tag);
+ }
+ try {
+ RevWalk walk = new RevWalk(r);
+ ObjectId object = r.resolve(Constants.HEAD);
+
+ RevCommit firstCommit = JGitUtils.getFirstCommit(r, Constants.HEAD);
+ RevCommit lastCommit = walk.parseCommit(object);
+ int diffDays = (lastCommit.getCommitTime() - firstCommit.getCommitTime())
+ / (60 * 60 * 24);
+ total.duration = diffDays;
+ DateFormat df;
+ if (diffDays <= 90) {
+ // Days
+ df = new SimpleDateFormat("yyyy-MM-dd");
+ } else if (diffDays > 90 && diffDays < 365) {
+ // Weeks
+ df = new SimpleDateFormat("yyyy-MM (w)");
+ } else {
+ // Months
+ df = new SimpleDateFormat("yyyy-MM");
+ }
+ walk.markStart(lastCommit);
+
+ Iterable<RevCommit> revlog = walk;
+ for (RevCommit rev : revlog) {
+ Date d = JGitUtils.getCommitDate(rev);
+ String p = df.format(d);
+ if (!metricMap.containsKey(p)) {
+ metricMap.put(p, new Metric(p));
+ }
+ Metric m = metricMap.get(p);
+ m.count++;
+ total.count++;
+ if (tagMap.containsKey(rev.getId())) {
+ m.tag++;
+ total.tag++;
+ }
+ }
+ } catch (Throwable t) {
+ JGitUtils.LOGGER.error("Failed to mine log history for metrics", t);
+ }
+ }
+ List<String> keys = new ArrayList<String>(metricMap.keySet());
+ Collections.sort(keys);
+ List<Metric> metrics = new ArrayList<Metric>();
+ for (String key : keys) {
+ metrics.add(metricMap.get(key));
+ }
+ if (includeTotal) {
+ metrics.add(0, total);
+ }
+ return metrics;
+ }
+
+ public static List<Metric> getAuthorMetrics(Repository r) {
+ Metric total = new Metric("TOTAL");
+ final Map<String, Metric> metricMap = new HashMap<String, Metric>();
+
+ if (JGitUtils.hasCommits(r)) {
+ try {
+ RevWalk walk = new RevWalk(r);
+ ObjectId object = r.resolve(Constants.HEAD);
+ RevCommit lastCommit = walk.parseCommit(object);
+ walk.markStart(lastCommit);
+
+ Iterable<RevCommit> revlog = walk;
+ for (RevCommit rev : revlog) {
+ String p = rev.getAuthorIdent().getName();
+ if (StringUtils.isEmpty(p)) {
+ p = rev.getAuthorIdent().getEmailAddress();
+ }
+ if (!metricMap.containsKey(p)) {
+ metricMap.put(p, new Metric(p));
+ }
+ Metric m = metricMap.get(p);
+ m.count++;
+ total.count++;
+ }
+ } catch (Throwable t) {
+ JGitUtils.LOGGER.error("Failed to mine log history for metrics", t);
+ }
+ }
+ List<String> keys = new ArrayList<String>(metricMap.keySet());
+ Collections.sort(keys);
+ List<Metric> metrics = new ArrayList<Metric>();
+ for (String key : keys) {
+ metrics.add(metricMap.get(key));
+ }
+ return metrics;
+ }
+}
|