From 16653e916fbf6b64baaaed2247d34d8f2372b89e Mon Sep 17 00:00:00 2001 From: pbe <pbe@remmert.de> Date: Mon, 05 May 2014 08:41:19 -0400 Subject: [PATCH] Added TortoiseGit to the clientapps --- src/main/java/com/gitblit/tickets/BranchTicketService.java | 48 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gitblit/tickets/BranchTicketService.java b/src/main/java/com/gitblit/tickets/BranchTicketService.java index fc0bd8f..284b1be 100644 --- a/src/main/java/com/gitblit/tickets/BranchTicketService.java +++ b/src/main/java/com/gitblit/tickets/BranchTicketService.java @@ -30,8 +30,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; -import javax.inject.Inject; - import org.eclipse.jgit.api.errors.ConcurrentRefUpdateException; import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.dircache.DirCache; @@ -45,6 +43,8 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectInserter; import org.eclipse.jgit.lib.PersonIdent; +import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.RefRename; import org.eclipse.jgit.lib.RefUpdate; import org.eclipse.jgit.lib.RefUpdate.Result; import org.eclipse.jgit.lib.Repository; @@ -58,6 +58,7 @@ import com.gitblit.Constants; import com.gitblit.git.ReceiveCommandEvent; import com.gitblit.manager.INotificationManager; +import com.gitblit.manager.IPluginManager; import com.gitblit.manager.IRepositoryManager; import com.gitblit.manager.IRuntimeManager; import com.gitblit.manager.IUserManager; @@ -82,7 +83,7 @@ */ public class BranchTicketService extends ITicketService implements RefsChangedListener { - public static final String BRANCH = "refs/gitblit/tickets"; + public static final String BRANCH = "refs/meta/gitblit/tickets"; private static final String JOURNAL = "journal.json"; @@ -90,14 +91,15 @@ private final Map<String, AtomicLong> lastAssignedId; - @Inject public BranchTicketService( IRuntimeManager runtimeManager, + IPluginManager pluginManager, INotificationManager notificationManager, IUserManager userManager, IRepositoryManager repositoryManager) { super(runtimeManager, + pluginManager, notificationManager, userManager, repositoryManager); @@ -190,23 +192,45 @@ } /** - * Returns a RefModel for the refs/gitblit/tickets branch in the repository. + * Returns a RefModel for the refs/meta/gitblit/tickets branch in the repository. * If the branch can not be found, null is returned. * * @return a refmodel for the gitblit tickets branch or null */ private RefModel getTicketsBranch(Repository db) { - List<RefModel> refs = JGitUtils.getRefs(db, Constants.R_GITBLIT); + List<RefModel> refs = JGitUtils.getRefs(db, "refs/"); + Ref oldRef = null; for (RefModel ref : refs) { if (ref.reference.getName().equals(BRANCH)) { return ref; + } else if (ref.reference.getName().equals("refs/gitblit/tickets")) { + oldRef = ref.reference; + } + } + if (oldRef != null) { + // rename old ref to refs/meta/gitblit/tickets + RefRename cmd; + try { + cmd = db.renameRef(oldRef.getName(), BRANCH); + cmd.setRefLogIdent(new PersonIdent("Gitblit", "gitblit@localhost")); + cmd.setRefLogMessage("renamed " + oldRef.getName() + " => " + BRANCH); + Result res = cmd.rename(); + switch (res) { + case RENAMED: + log.info(db.getDirectory() + " " + cmd.getRefLogMessage()); + return getTicketsBranch(db); + default: + log.error("failed to rename " + oldRef.getName() + " => " + BRANCH + " (" + res.name() + ")"); + } + } catch (IOException e) { + log.error("failed to rename tickets branch", e); } } return null; } /** - * Creates the refs/gitblit/tickets branch. + * Creates the refs/meta/gitblit/tickets branch. * @param db */ private void createTicketsBranch(Repository db) { @@ -219,7 +243,7 @@ * folder with the remaining characters as a subfolder within that folder. * * @param ticketId - * @return the root path of the ticket content on the refs/gitblit/tickets branch + * @return the root path of the ticket content on the refs/meta/gitblit/tickets branch */ private String toTicketPath(long ticketId) { StringBuilder sb = new StringBuilder(); @@ -635,7 +659,9 @@ ticket.number, db.getDirectory()), t); } finally { // release the treewalk - treeWalk.release(); + if (treeWalk != null) { + treeWalk.release(); + } } } finally { db.close(); @@ -851,7 +877,9 @@ } catch (Exception e) { log.error(null, e); } finally { - db.close(); + if (db != null) { + db.close(); + } } return false; } -- Gitblit v1.9.1