James Moger
2013-12-09 5e3521f8496511db4df45f011ea72f25623ad90f
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));
                                }