| | |
| | | */ |
| | | 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); |
| | |
| | | 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; |
| | |
| | | // 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) { |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | 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)); |
| | | } |
| | |
| | | } 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)); |
| | | } |