From 548b29e87dedac76bad2011cda4e39a9f3d72a21 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 05 Oct 2015 08:04:10 -0400 Subject: [PATCH] Ensure a repository is only searched once --- src/main/java/com/gitblit/utils/JGitUtils.java | 31 +++++++++++++++++-------------- 1 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/gitblit/utils/JGitUtils.java b/src/main/java/com/gitblit/utils/JGitUtils.java index 69084ca..c3d0207 100644 --- a/src/main/java/com/gitblit/utils/JGitUtils.java +++ b/src/main/java/com/gitblit/utils/JGitUtils.java @@ -30,7 +30,6 @@ import java.util.Map.Entry; import java.util.regex.Pattern; -import com.google.common.base.Strings; import org.apache.commons.io.filefilter.TrueFileFilter; import org.eclipse.jgit.api.CloneCommand; import org.eclipse.jgit.api.FetchCommand; @@ -91,6 +90,7 @@ import com.gitblit.models.PathModel.PathChangeModel; import com.gitblit.models.RefModel; import com.gitblit.models.SubmoduleModel; +import com.google.common.base.Strings; /** * Collection of static methods for retrieving information from a repository. @@ -691,7 +691,10 @@ if (commit == null) { return new Date(0); } - return commit.getAuthorIdent().getWhen(); + if (commit.getAuthorIdent() != null) { + return commit.getAuthorIdent().getWhen(); + } + return getCommitDate(commit); } /** @@ -774,7 +777,7 @@ } } finally { rw.dispose(); - tw.release(); + tw.close(); } return content; } @@ -885,7 +888,7 @@ } catch (IOException e) { error(e, repository, "{0} failed to get files for commit {1}", commit.getName()); } finally { - tw.release(); + tw.close(); } Collections.sort(list); return list; @@ -942,7 +945,7 @@ } catch (IOException e) { error(e, repository, "{0} failed to get files for commit {1}", commit.getName()); } finally { - tw.release(); + tw.close(); } Collections.sort(list); return list; @@ -994,7 +997,7 @@ .getRawMode(0), tw.getObjectId(0).getName(), commit.getId().getName(), ChangeType.ADD)); } - tw.release(); + tw.close(); } else { RevCommit parent = rw.parseCommit(commit.getParent(0).getId()); DiffStatFormatter df = new DiffStatFormatter(commit.getName()); @@ -1049,7 +1052,7 @@ RevCommit start = rw.parseCommit(startRange); RevCommit end = rw.parseCommit(endRange); list.addAll(getFilesInRange(repository, start, end)); - rw.release(); + rw.close(); } catch (Throwable t) { error(t, repository, "{0} failed to determine files in range {1}..{2}!", startCommit, endCommit); } @@ -1147,7 +1150,7 @@ } catch (IOException e) { error(e, repository, "{0} failed to get documents for commit {1}", commit.getName()); } finally { - tw.release(); + tw.close(); } Collections.sort(list); return list; @@ -2044,7 +2047,7 @@ error(t, repository, "{0} can't find {1} in commit {2}", path, commit.name()); } finally { rw.dispose(); - tw.release(); + tw.close(); } return commitId; } @@ -2218,10 +2221,10 @@ success = false; } } finally { - revWalk.release(); + revWalk.close(); } } finally { - odi.release(); + odi.close(); } } catch (Throwable t) { error(t, repository, "Failed to create orphan branch {1} in repository {0}", branchName); @@ -2412,7 +2415,7 @@ LOGGER.error("Failed to determine canMerge", e); } finally { if (revWalk != null) { - revWalk.release(); + revWalk.close(); } } return MergeStatus.NOT_MERGEABLE; @@ -2498,14 +2501,14 @@ // return the merge commit id return new MergeResult(MergeStatus.MERGED, mergeCommitId.getName()); } finally { - odi.release(); + odi.close(); } } } catch (IOException e) { LOGGER.error("Failed to merge", e); } finally { if (revWalk != null) { - revWalk.release(); + revWalk.close(); } } return new MergeResult(MergeStatus.FAILED, null); -- Gitblit v1.9.1