From acaa2a2765c4864ef001ae1097285c4f5cf2987d Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 03 Mar 2014 21:37:54 -0500 Subject: [PATCH] Merged #1 "Ticket tracker with patchset contributions" --- src/main/java/com/gitblit/utils/RefLogUtils.java | 44 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gitblit/utils/RefLogUtils.java b/src/main/java/com/gitblit/utils/RefLogUtils.java index af24773..4c082d0 100644 --- a/src/main/java/com/gitblit/utils/RefLogUtils.java +++ b/src/main/java/com/gitblit/utils/RefLogUtils.java @@ -213,6 +213,22 @@ */ public static boolean updateRefLog(UserModel user, Repository repository, Collection<ReceiveCommand> commands) { + + // only track branches and tags + List<ReceiveCommand> filteredCommands = new ArrayList<ReceiveCommand>(); + for (ReceiveCommand cmd : commands) { + if (!cmd.getRefName().startsWith(Constants.R_HEADS) + && !cmd.getRefName().startsWith(Constants.R_TAGS)) { + continue; + } + filteredCommands.add(cmd); + } + + if (filteredCommands.isEmpty()) { + // nothing to log + return true; + } + RefModel reflogBranch = getRefLogBranch(repository); if (reflogBranch == null) { JGitUtils.createOrphanBranch(repository, GB_REFLOG, null); @@ -443,7 +459,15 @@ Date date = push.getAuthorIdent().getWhen(); RefLogEntry log = new RefLogEntry(repositoryName, date, user); - List<PathChangeModel> changedRefs = JGitUtils.getFilesInCommit(repository, push); + + // only report HEADS and TAGS for now + List<PathChangeModel> changedRefs = new ArrayList<PathChangeModel>(); + for (PathChangeModel refChange : JGitUtils.getFilesInCommit(repository, push)) { + if (refChange.path.startsWith(Constants.R_HEADS) + || refChange.path.startsWith(Constants.R_TAGS)) { + changedRefs.add(refChange); + } + } if (changedRefs.isEmpty()) { // skip empty commits continue; @@ -466,12 +490,16 @@ // ref deletion continue; } - List<RevCommit> pushedCommits = JGitUtils.getRevLog(repository, oldId, newId); - for (RevCommit pushedCommit : pushedCommits) { - RepositoryCommit repoCommit = log.addCommit(change.path, pushedCommit); - if (repoCommit != null) { - repoCommit.setRefs(allRefs.get(pushedCommit.getId())); + try { + List<RevCommit> pushedCommits = JGitUtils.getRevLog(repository, oldId, newId); + for (RevCommit pushedCommit : pushedCommits) { + RepositoryCommit repoCommit = log.addCommit(change.path, pushedCommit); + if (repoCommit != null) { + repoCommit.setRefs(allRefs.get(pushedCommit.getId())); + } } + } catch (Exception e) { + } } } @@ -642,7 +670,7 @@ if (ref.getName().startsWith(Constants.R_TAGS)) { // treat tags as special events in the log if (!tags.containsKey(dateStr)) { - UserModel tagUser = newUserModelFrom(commit.getAuthorIdent()); + UserModel tagUser = newUserModelFrom(ref.getAuthorIdent()); Date tagDate = commit.getAuthorIdent().getWhen(); tags.put(dateStr, new DailyLogEntry(repositoryName, tagDate, tagUser)); } @@ -653,7 +681,7 @@ } else if (ref.getName().startsWith(Constants.R_PULL)) { // treat pull requests as special events in the log if (!pulls.containsKey(dateStr)) { - UserModel commitUser = newUserModelFrom(commit.getAuthorIdent()); + UserModel commitUser = newUserModelFrom(ref.getAuthorIdent()); Date commitDate = commit.getAuthorIdent().getWhen(); pulls.put(dateStr, new DailyLogEntry(repositoryName, commitDate, commitUser)); } -- Gitblit v1.9.1