From 6e15cb51ddcf24c725633c4ab1ff71959b036eb4 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 24 Apr 2012 22:40:23 -0400 Subject: [PATCH] Documentation --- src/com/gitblit/utils/JGitUtils.java | 88 +++++++++++++++++++------------------------ 1 files changed, 39 insertions(+), 49 deletions(-) diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index a9b99a9..72e948c 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -36,8 +36,6 @@ import org.eclipse.jgit.api.CloneCommand; import org.eclipse.jgit.api.FetchCommand; import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.api.ResetCommand; -import org.eclipse.jgit.api.ResetCommand.ResetType; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.diff.DiffEntry.ChangeType; import org.eclipse.jgit.diff.DiffFormatter; @@ -253,27 +251,6 @@ } /** - * Reset HEAD to the latest remote tracking commit. - * - * @param repository - * @param remoteRef - * the remote tracking reference (e.g. origin/master) - * @return Ref - * @throws Exception - */ - public static Ref resetHEAD(Repository repository, String remoteRef) throws Exception { - if (!remoteRef.startsWith(Constants.R_REMOTES)) { - remoteRef = Constants.R_REMOTES + remoteRef; - } - Git git = new Git(repository); - ResetCommand reset = git.reset(); - reset.setMode(ResetType.SOFT); - reset.setRef(remoteRef); - Ref result = reset.call(); - return result; - } - - /** * Creates a bare repository. * * @param repositoriesFolder @@ -324,6 +301,7 @@ */ private static List<String> getRepositoryList(String basePath, File searchFolder, boolean onlyBare, boolean searchSubfolders) { + File baseFile = new File(basePath); List<String> list = new ArrayList<String>(); for (File file : searchFolder.listFiles()) { if (file.isDirectory()) { @@ -333,8 +311,7 @@ continue; } // determine repository name relative to base path - String repository = StringUtils.getRelativePath(basePath, - file.getAbsolutePath()); + String repository = FileUtils.getRelativePath(baseFile, file); list.add(repository); } else if (searchSubfolders && file.canRead()) { // look for repositories in subfolders @@ -423,11 +400,9 @@ * last modified date of the repository folder is returned. * * @param repository - * @param branch - * if unspecified, all branches are checked. * @return */ - public static Date getLastChange(Repository repository, String branch) { + public static Date getLastChange(Repository repository) { if (!hasCommits(repository)) { // null repository if (repository == null) { @@ -436,26 +411,21 @@ // fresh repository return new Date(repository.getDirectory().lastModified()); } - if (StringUtils.isEmpty(branch)) { - List<RefModel> branchModels = getLocalBranches(repository, true, -1); - if (branchModels.size() > 0) { - // find most recent branch update - Date lastChange = new Date(0); - for (RefModel branchModel : branchModels) { - if (branchModel.getDate().after(lastChange)) { - lastChange = branchModel.getDate(); - } - } - return lastChange; - } else { - // try to find head - branch = Constants.HEAD; - } - } - // lookup specified branch - RevCommit commit = getCommit(repository, branch); - return getCommitDate(commit); + List<RefModel> branchModels = getLocalBranches(repository, true, -1); + if (branchModels.size() > 0) { + // find most recent branch update + Date lastChange = new Date(0); + for (RefModel branchModel : branchModels) { + if (branchModel.getDate().after(lastChange)) { + lastChange = branchModel.getDate(); + } + } + return lastChange; + } + + // default to the repository folder modification date + return new Date(repository.getDirectory().lastModified()); } /** @@ -728,6 +698,10 @@ list.add(new PathChangeModel(diff.getOldPath(), diff.getOldPath(), 0, diff .getNewMode().getBits(), commit.getId().getName(), diff .getChangeType())); + } else if (diff.getChangeType().equals(ChangeType.RENAME)) { + list.add(new PathChangeModel(diff.getOldPath(), diff.getNewPath(), 0, diff + .getNewMode().getBits(), commit.getId().getName(), diff + .getChangeType())); } else { list.add(new PathChangeModel(diff.getNewPath(), diff.getNewPath(), 0, diff .getNewMode().getBits(), commit.getId().getName(), diff @@ -961,6 +935,9 @@ branchObject = getDefaultBranch(repository); } else { branchObject = repository.resolve(objectId); + } + if (branchObject == null) { + return list; } RevWalk rw = new RevWalk(repository); @@ -1457,10 +1434,23 @@ List<RefModel> noteBranches = getNoteBranches(repository, true, -1); for (RefModel notesRef : noteBranches) { RevTree notesTree = JGitUtils.getCommit(repository, notesRef.getName()).getTree(); + // flat notes list + String notePath = commit.getName(); + String text = getStringContent(repository, notesTree, notePath); + if (!StringUtils.isEmpty(text)) { + List<RevCommit> history = getRevLog(repository, notesRef.getName(), notePath, 0, -1); + RefModel noteRef = new RefModel(notesRef.displayName, null, history.get(history + .size() - 1)); + GitNote gitNote = new GitNote(noteRef, text); + list.add(gitNote); + continue; + } + + // folder structure StringBuilder sb = new StringBuilder(commit.getName()); sb.insert(2, '/'); - String notePath = sb.toString(); - String text = getStringContent(repository, notesTree, notePath); + notePath = sb.toString(); + text = getStringContent(repository, notesTree, notePath); if (!StringUtils.isEmpty(text)) { List<RevCommit> history = getRevLog(repository, notesRef.getName(), notePath, 0, -1); RefModel noteRef = new RefModel(notesRef.displayName, null, history.get(history -- Gitblit v1.9.1