src/main/java/com/gitblit/git/GitblitReceivePack.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/git/PatchsetReceivePack.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/service/MirrorService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/tickets/BranchTicketService.java | ●●●●● patch | view | raw | blame | history |
src/main/java/com/gitblit/git/GitblitReceivePack.java
@@ -51,6 +51,7 @@ import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.tickets.BranchTicketService; import com.gitblit.tickets.BranchTicketService.TicketsBranchUpdated; import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.ClientLogger; import com.gitblit.utils.CommitCache; @@ -343,6 +344,14 @@ } catch (Exception e) { LOGGER.error(MessageFormat.format("Failed to update {0} pushlog", repository.name), e); } // check for updates pushed to the BranchTicketService branch for (ReceiveCommand cmd : commands) { if (Result.OK.equals(cmd.getResult()) && BranchTicketService.BRANCH.equals(cmd.getRefName())) { rp.getRepository().fireEvent(new TicketsBranchUpdated(repository)); } } // run Groovy hook scripts Set<String> scripts = new LinkedHashSet<String>(); src/main/java/com/gitblit/git/PatchsetReceivePack.java
@@ -436,10 +436,12 @@ case CREATE: case UPDATE: case UPDATE_NONFASTFORWARD: Collection<TicketModel> tickets = processMergedTickets(cmd); ticketsProcessed += tickets.size(); for (TicketModel ticket : tickets) { ticketNotifier.queueMailing(ticket); if (cmd.getRefName().startsWith(Constants.R_HEADS)) { Collection<TicketModel> tickets = processMergedTickets(cmd); ticketsProcessed += tickets.size(); for (TicketModel ticket : tickets) { ticketNotifier.queueMailing(ticket); } } break; default: src/main/java/com/gitblit/service/MirrorService.java
@@ -38,6 +38,8 @@ import com.gitblit.manager.IRepositoryManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.tickets.BranchTicketService; import com.gitblit.tickets.BranchTicketService.TicketsBranchUpdated; import com.gitblit.utils.JGitUtils; /** @@ -145,6 +147,7 @@ FetchResult result = git.fetch().setRemote(mirror.getName()).setDryRun(testing).call(); Collection<TrackingRefUpdate> refUpdates = result.getTrackingRefUpdates(); if (refUpdates.size() > 0) { boolean ticketBranchUpdated = false; for (TrackingRefUpdate ru : refUpdates) { StringBuilder sb = new StringBuilder(); sb.append("updated mirror "); @@ -161,6 +164,14 @@ sb.append(".."); sb.append(ru.getNewObjectId() == null ? "" : ru.getNewObjectId().abbreviate(7).name()); logger.info(sb.toString()); if (BranchTicketService.BRANCH.equals(ru.getLocalName())) { ticketBranchUpdated = true; } } if (ticketBranchUpdated) { repository.fireEvent(new TicketsBranchUpdated(model)); } } } catch (Exception e) { src/main/java/com/gitblit/tickets/BranchTicketService.java
@@ -36,6 +36,8 @@ import org.eclipse.jgit.dircache.DirCache; import org.eclipse.jgit.dircache.DirCacheBuilder; import org.eclipse.jgit.dircache.DirCacheEntry; import org.eclipse.jgit.events.RefsChangedEvent; import org.eclipse.jgit.events.RefsChangedListener; import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.lib.CommitBuilder; import org.eclipse.jgit.lib.FileMode; @@ -74,8 +76,20 @@ * @author James Moger * */ public class BranchTicketService extends ITicketService { public class BranchTicketService extends ITicketService implements RefsChangedListener { /** * The event fired by other classes to allow this service to index tickets. */ public static class TicketsBranchUpdated extends RefsChangedEvent { public final RepositoryModel model; public TicketsBranchUpdated(RepositoryModel model) { this.model = model; } } public static final String BRANCH = "refs/gitblit/tickets"; private static final String JOURNAL = "journal.json"; @@ -97,6 +111,9 @@ repositoryManager); lastAssignedId = new ConcurrentHashMap<String, AtomicLong>(); // register the branch ticket service for repository ref changes Repository.getGlobalListenerList().addRefsChangedListener(this); } @Override @@ -121,6 +138,22 @@ } /** * Listen for refs changed events and reindex that repository. */ @Override public void onRefsChanged(RefsChangedEvent event) { if (!(event instanceof TicketsBranchUpdated)) { return; } RepositoryModel repository = ((TicketsBranchUpdated) event).model; try { reindex(repository); } catch (Exception e) { log.error("failed to reindex " + repository.name, e); } } /** * Returns a RefModel for the refs/gitblit/tickets branch in the repository. * If the branch can not be found, null is returned. *