From 9d921f83d48fff71762bb4a579870107c788ecf9 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 24 Feb 2012 17:34:31 -0500 Subject: [PATCH] Activity page now considers all local branches (issue 65) --- src/com/gitblit/utils/ActivityUtils.java | 97 +++++++++++++++++++++++------------------------- 1 files changed, 46 insertions(+), 51 deletions(-) diff --git a/src/com/gitblit/utils/ActivityUtils.java b/src/com/gitblit/utils/ActivityUtils.java index d6afd93..61b6242 100644 --- a/src/com/gitblit/utils/ActivityUtils.java +++ b/src/com/gitblit/utils/ActivityUtils.java @@ -23,7 +23,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; -import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -59,8 +58,8 @@ * @param daysBack * the number of days back from Now to collect * @param objectId - * the branch to retrieve. If this value is null the default - * branch of the repository is used. + * the branch to retrieve. If this value is null or empty all + * branches are queried. * @return */ public static List<Activity> getRecentActivity(List<RepositoryModel> models, int daysBack, @@ -73,64 +72,60 @@ // Build a map of DailyActivity from the available repositories for the // specified threshold date. DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + df.setTimeZone(GitBlit.getTimezone()); Calendar cal = Calendar.getInstance(); + cal.setTimeZone(GitBlit.getTimezone()); Map<String, Activity> activity = new HashMap<String, Activity>(); for (RepositoryModel model : models) { if (model.hasCommits && model.lastChange.after(thresholdDate)) { - Repository repository = GitBlit.self().getRepository(model.name); - List<RevCommit> commits = JGitUtils.getRevLog(repository, objectId, thresholdDate); - Map<ObjectId, List<RefModel>> allRefs = JGitUtils.getAllRefs(repository); + Repository repository = GitBlit.self() + .getRepository(model.name); + List<String> branches = new ArrayList<String>(); + if (StringUtils.isEmpty(objectId)) { + for (RefModel local : JGitUtils.getLocalBranches( + repository, true, -1)) { + branches.add(local.getName()); + } + } else { + branches.add(objectId); + } + Map<ObjectId, List<RefModel>> allRefs = JGitUtils + .getAllRefs(repository); + + for (String branch : branches) { + String shortName = branch; + if (shortName.startsWith(Constants.R_HEADS)) { + shortName = shortName.substring(Constants.R_HEADS.length()); + } + List<RevCommit> commits = JGitUtils.getRevLog(repository, + branch, thresholdDate); + for (RevCommit commit : commits) { + Date date = JGitUtils.getCommitDate(commit); + String dateStr = df.format(date); + if (!activity.containsKey(dateStr)) { + // Normalize the date to midnight + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + activity.put(dateStr, new Activity(cal.getTime())); + } + RepositoryCommit commitModel = activity.get(dateStr) + .addCommit(model.name, shortName, commit); + if (commitModel != null) { + commitModel.setRefs(allRefs.get(commit.getId())); + } + } + } + + // close the repository repository.close(); - - // determine commit branch - String branch = objectId; - if (StringUtils.isEmpty(branch) && !commits.isEmpty()) { - List<RefModel> headRefs = allRefs.get(commits.get(0).getId()); - List<String> localBranches = new ArrayList<String>(); - for (RefModel ref : headRefs) { - if (ref.getName().startsWith(Constants.R_HEADS)) { - localBranches.add(ref.getName().substring(Constants.R_HEADS.length())); - } - } - // determine branch - if (localBranches.size() == 1) { - // only one branch, choose it - branch = localBranches.get(0); - } else if (localBranches.size() > 1) { - if (localBranches.contains("master")) { - // choose master - branch = "master"; - } else { - // choose first branch - branch = localBranches.get(0); - } - } - } - - for (RevCommit commit : commits) { - Date date = JGitUtils.getCommitDate(commit); - String dateStr = df.format(date); - if (!activity.containsKey(dateStr)) { - // Normalize the date to midnight - cal.setTime(date); - cal.set(Calendar.HOUR_OF_DAY, 0); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); - activity.put(dateStr, new Activity(cal.getTime())); - } - RepositoryCommit commitModel = activity.get(dateStr).addCommit(model.name, - branch, commit); - commitModel.setRefs(allRefs.get(commit.getId())); - } } } List<Activity> recentActivity = new ArrayList<Activity>(activity.values()); - for (Activity daily : recentActivity) { - Collections.sort(daily.commits); - } return recentActivity; } -- Gitblit v1.9.1