From 7847af6e63e7adef6ec8d99a1809e91472d2bc2d Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 05 Sep 2013 09:14:22 -0400 Subject: [PATCH] Restore blockpush and localclone hooks to binaries (issue-303) --- src/main/java/com/gitblit/utils/JGitUtils.java | 42 +++++++++++++++++++++++++++++++----------- 1 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/gitblit/utils/JGitUtils.java b/src/main/java/com/gitblit/utils/JGitUtils.java index 7242e33..3f01eea 100644 --- a/src/main/java/com/gitblit/utils/JGitUtils.java +++ b/src/main/java/com/gitblit/utils/JGitUtils.java @@ -297,6 +297,7 @@ list.addAll(getRepositoryList(repositoriesFolder.getAbsolutePath(), repositoriesFolder, onlyBare, searchSubfolders, depth, patterns)); StringUtils.sortRepositorynames(list); + list.remove(".git"); // issue-256 return list; } @@ -438,39 +439,56 @@ } return false; } + + /** + * Encapsulates the result of cloning or pulling from a repository. + */ + public static class LastChange { + public Date when; + public String who; + + LastChange() { + when = new Date(0); + } + + LastChange(long lastModified) { + this.when = new Date(lastModified); + } + } /** - * Returns the date of the most recent commit on a branch. If the repository - * does not exist Date(0) is returned. If it does exist but is empty, the - * last modified date of the repository folder is returned. + * Returns the date and author of the most recent commit on a branch. If the + * repository does not exist Date(0) is returned. If it does exist but is + * empty, the last modified date of the repository folder is returned. * * @param repository - * @return + * @return a LastChange object */ - public static Date getLastChange(Repository repository) { + public static LastChange getLastChange(Repository repository) { if (!hasCommits(repository)) { // null repository if (repository == null) { - return new Date(0); + return new LastChange(); } // fresh repository - return new Date(repository.getDirectory().lastModified()); + return new LastChange(repository.getDirectory().lastModified()); } List<RefModel> branchModels = getLocalBranches(repository, true, -1); if (branchModels.size() > 0) { // find most recent branch update - Date lastChange = new Date(0); + LastChange lastChange = new LastChange(); for (RefModel branchModel : branchModels) { - if (branchModel.getDate().after(lastChange)) { - lastChange = branchModel.getDate(); + if (branchModel.getDate().after(lastChange.when)) { + lastChange.when = branchModel.getDate(); + lastChange.who = branchModel.getAuthorIdent().getName(); } } return lastChange; } // default to the repository folder modification date - return new Date(repository.getDirectory().lastModified()); + return new LastChange(repository.getDirectory().lastModified()); } /** @@ -548,6 +566,8 @@ try { if (tree == null) { ObjectId object = getDefaultBranch(repository); + if (object == null) + return null; RevCommit commit = rw.parseCommit(object); tree = commit.getTree(); } -- Gitblit v1.9.1