List of usage examples for org.eclipse.jgit.transport TrackingRefUpdate getOldObjectId
public ObjectId getOldObjectId()
From source file:com.gitblit.service.MirrorService.java
License:Apache License
@Override public void run() { if (!isReady()) { return;/*from w ww . j a va 2s . c o m*/ } running.set(true); for (String repositoryName : repositoryManager.getRepositoryList()) { if (forceClose.get()) { break; } if (repositoryManager.isCollectingGarbage(repositoryName)) { logger.debug("mirror is skipping {} garbagecollection", repositoryName); continue; } RepositoryModel model = null; Repository repository = null; try { model = repositoryManager.getRepositoryModel(repositoryName); if (!model.isMirror && !model.isBare) { // repository must be a valid bare git mirror logger.debug("mirror is skipping {} !mirror !bare", repositoryName); continue; } repository = repositoryManager.getRepository(repositoryName); if (repository == null) { logger.warn( MessageFormat.format("MirrorExecutor is missing repository {0}?!?", repositoryName)); continue; } // automatically repair (some) invalid fetch ref specs if (!repairAttempted.contains(repositoryName)) { repairAttempted.add(repositoryName); JGitUtils.repairFetchSpecs(repository); } // find the first mirror remote - there should only be one StoredConfig rc = repository.getConfig(); RemoteConfig mirror = null; List<RemoteConfig> configs = RemoteConfig.getAllRemoteConfigs(rc); for (RemoteConfig config : configs) { if (config.isMirror()) { mirror = config; break; } } if (mirror == null) { // repository does not have a mirror remote logger.debug("mirror is skipping {} no mirror remote found", repositoryName); continue; } logger.debug("checking {} remote {} for ref updates", repositoryName, mirror.getName()); final boolean testing = false; Git git = new Git(repository); FetchResult result = git.fetch().setRemote(mirror.getName()).setDryRun(testing).call(); Collection<TrackingRefUpdate> refUpdates = result.getTrackingRefUpdates(); if (refUpdates.size() > 0) { ReceiveCommand ticketBranchCmd = null; for (TrackingRefUpdate ru : refUpdates) { StringBuilder sb = new StringBuilder(); sb.append("updated mirror "); sb.append(repositoryName); sb.append(" "); sb.append(ru.getRemoteName()); sb.append(" -> "); sb.append(ru.getLocalName()); if (ru.getResult() == Result.FORCED) { sb.append(" (forced)"); } sb.append(" "); sb.append(ru.getOldObjectId() == null ? "" : ru.getOldObjectId().abbreviate(7).name()); sb.append(".."); sb.append(ru.getNewObjectId() == null ? "" : ru.getNewObjectId().abbreviate(7).name()); logger.info(sb.toString()); if (BranchTicketService.BRANCH.equals(ru.getLocalName())) { ReceiveCommand.Type type = null; switch (ru.getResult()) { case NEW: type = Type.CREATE; break; case FAST_FORWARD: type = Type.UPDATE; break; case FORCED: type = Type.UPDATE_NONFASTFORWARD; break; default: type = null; break; } if (type != null) { ticketBranchCmd = new ReceiveCommand(ru.getOldObjectId(), ru.getNewObjectId(), ru.getLocalName(), type); } } } if (ticketBranchCmd != null) { repository.fireEvent(new ReceiveCommandEvent(model, ticketBranchCmd)); } } } catch (Exception e) { logger.error("Error updating mirror " + repositoryName, e); } finally { // cleanup if (repository != null) { repository.close(); } } } running.set(false); }
From source file:com.madgag.agit.GitFetchService.java
License:Open Source License
public FetchResult fetch(RemoteConfig remote, Collection<RefSpec> toFetch) { Log.d(TAG, "About to run fetch : " + remote.getName() + " " + remote.getURIs()); Transport transport = transportFactory.transportFor(remote); try {/* w ww. j a v a 2 s.co m*/ FetchResult fetchResult = transport .fetch(new MessagingProgressMonitor(progressListener, cancellationSignaller), toFetch); Log.d(TAG, "Fetch complete with : " + fetchResult); for (TrackingRefUpdate update : fetchResult.getTrackingRefUpdates()) { Log.d(TAG, "TrackingRefUpdate : " + update.getLocalName() + " old=" + update.getOldObjectId() + " new=" + update.getNewObjectId()); } repoUpdateBroadcaster.broadcastUpdate(); return fetchResult; } catch (NotSupportedException e) { throw new RuntimeException(e); } catch (TransportException e) { Log.e(TAG, "TransportException ", e); String message = e.getMessage(); Throwable cause = e.getCause(); if (cause != null && cause instanceof JSchException) { message = "SSH: " + ((JSchException) cause).getMessage(); } throw new RuntimeException(message, e); } finally { Log.d(TAG, "Closing transport " + transport); transport.close(); } }
From source file:jbyoshi.gitupdate.processor.Fetch.java
License:Apache License
@Override public void process(Repository repo, Git git, String remote, String fullRemote, Report report) throws GitAPIException, IOException { FetchResult result = git.fetch().setRemoveDeletedRefs(true).setCredentialsProvider(Prompts.INSTANCE) .setRemote(remote).call();// ww w . jav a 2 s. co m for (TrackingRefUpdate update : result.getTrackingRefUpdates()) { if (update.getRemoteName().equals(Constants.R_HEADS + Constants.HEAD)) { continue; } StringBuilder text = new StringBuilder(Utils.getShortBranch(update.getRemoteName())).append(": "); String oldId = update.getOldObjectId().name(); if (update.getOldObjectId().equals(ObjectId.zeroId())) { oldId = "new branch"; } String newId = update.getNewObjectId().name(); if (update.getNewObjectId().equals(ObjectId.zeroId())) { newId = "deleted"; for (String branch : Utils.getLocalBranches(repo).keySet()) { if (update.getLocalName() .equals(new BranchConfig(repo.getConfig(), branch).getRemoteTrackingBranch())) { repo.getConfig().unset("branches", branch, "remote"); repo.getConfig().save(); } } } text.append(oldId).append(" -> ").append(newId); report.newChild(text.toString()).modified(); } }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.Fetcher.java
License:Apache License
private static void logFetchResults(@NotNull FetchResult result) { for (TrackingRefUpdate update : result.getTrackingRefUpdates()) { StringBuilder msg = new StringBuilder(); msg.append("update ref remote name: ").append(update.getRemoteName()).append(", local name: ") .append(update.getLocalName()).append(", old object id: ") .append(update.getOldObjectId().name()).append(", new object id: ") .append(update.getNewObjectId().name()).append(", result: ").append(update.getResult()); System.out.println(msg);//from w w w.jav a 2s. co m } String additionalMsgs = result.getMessages(); if (additionalMsgs.length() > 0) { System.out.println("Remote process messages: " + additionalMsgs); } }
From source file:net.erdfelt.android.sdkfido.git.internal.GitInfo.java
License:Apache License
public static String asIdLong(Repository db, TrackingRefUpdate update) { RefUpdate.Result result = update.getResult(); // Fast IDs/*from w w w . java 2 s. co m*/ switch (result) { case LOCK_FAILURE: return "[lock failure]"; case IO_FAILURE: return "[i/o error]"; case REJECTED: return "[rejected]"; } // Deleted Check Next if (ObjectId.zeroId().equals(update.getNewObjectId())) { return "[deleted]"; } // All other results switch (result) { case NEW: if (update.getRemoteName().startsWith(Constants.R_HEADS)) { return "[new branch]"; } if (update.getLocalName().startsWith(Constants.R_TAGS)) { return "[new tag]"; } return "[new]"; case FORCED: { String oldOID = update.getOldObjectId().abbreviate(ABBREV_LEN).name(); String newOID = update.getNewObjectId().abbreviate(ABBREV_LEN).name(); return oldOID + "..." + newOID; } case FAST_FORWARD: { String oldOID = update.getOldObjectId().abbreviate(ABBREV_LEN).name(); String newOID = update.getNewObjectId().abbreviate(ABBREV_LEN).name(); return oldOID + ".." + newOID; } case NO_CHANGE: return "[up to date]"; default: return "[" + result.name() + "]"; } }
From source file:net.mobid.codetraq.runnables.GitChecker.java
License:Open Source License
private String longTypeOf(ObjectReader reader, final TrackingRefUpdate u) { final RefUpdate.Result r = u.getResult(); if (r == RefUpdate.Result.LOCK_FAILURE) return "[lock fail]"; if (r == RefUpdate.Result.IO_FAILURE) return "[i/o error]"; if (r == RefUpdate.Result.REJECTED) return "[rejected]"; if (ObjectId.zeroId().equals(u.getNewObjectId())) return "[deleted]"; if (r == RefUpdate.Result.NEW) { if (u.getRemoteName().startsWith(Constants.R_HEADS)) return "[new branch]"; else if (u.getLocalName().startsWith(Constants.R_TAGS)) return "[new tag]"; return "[new]"; }/* w w w . j a va 2 s .c om*/ if (r == RefUpdate.Result.FORCED) { final String aOld = safeAbbreviate(reader, u.getOldObjectId()); final String aNew = safeAbbreviate(reader, u.getNewObjectId()); return aOld + "..." + aNew; } if (r == RefUpdate.Result.FAST_FORWARD) { final String aOld = safeAbbreviate(reader, u.getOldObjectId()); final String aNew = safeAbbreviate(reader, u.getNewObjectId()); return aOld + ".." + aNew; } if (r == RefUpdate.Result.NO_CHANGE) return "[up to date]"; return "[" + r.name() + "]"; }
From source file:org.exist.git.xquery.Push.java
License:Open Source License
@Override public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException { try {/*from w w w .j a va2 s .c o m*/ String localPath = args[0].getStringValue(); if (!(localPath.endsWith("/"))) localPath += File.separator; Git git = Git.open(new Resource(localPath), FS); Iterable<PushResult> answer = git.push().setCredentialsProvider( new UsernamePasswordCredentialsProvider(args[1].getStringValue(), args[2].getStringValue())) .call(); MemTreeBuilder builder = getContext().getDocumentBuilder(); int nodeNr = builder.startElement(PUSH, null); for (PushResult push : answer) { builder.startElement(RESULT, null); for (TrackingRefUpdate tracking : push.getTrackingRefUpdates()) { builder.startElement(TRACKING_REF_UPDATE, null); builder.addAttribute(REMOTE_NAME, tracking.getRemoteName()); builder.addAttribute(LOCAL_NAME, tracking.getLocalName()); //builder.addAttribute(FORCE_UPDATE, Boolean.toString(tracking.forceUpdate)); builder.addAttribute(OLD_OBJECTID, tracking.getOldObjectId().name()); builder.addAttribute(NEW_OBJECTID, tracking.getNewObjectId().name()); } for (RemoteRefUpdate remote : push.getRemoteUpdates()) { builder.startElement(REMOTE_REF_UPDATE, null); builder.addAttribute(REMOTE_NAME, remote.getRemoteName()); builder.addAttribute(STATUS, remote.getStatus().name()); if (remote.isExpectingOldObjectId()) builder.addAttribute(EXPECTED_OLD_OBJECTID, remote.getExpectedOldObjectId().name()); if (remote.getNewObjectId() != null) builder.addAttribute(NEW_OBJECTID, remote.getNewObjectId().name()); builder.addAttribute(FAST_FORWARD, Boolean.toString(remote.isFastForward())); builder.addAttribute(FORCE_UPDATE, Boolean.toString(remote.isForceUpdate())); if (remote.getMessage() != null) builder.characters(remote.getMessage()); builder.endElement(); } builder.endElement(); } builder.endElement(); return builder.getDocument().getNode(nodeNr); } catch (Throwable e) { e.printStackTrace(); throw new XPathException(this, Module.EXGIT001, e); } }
From source file:org.flowerplatform.web.git.GitUtils.java
License:Open Source License
/** * Creates a string message to be displayed on client side * to inform the user about fetch result operation. *///from ww w. j a v a 2 s . co m public String handleFetchResult(FetchResult fetchResult) { StringBuilder sb = new StringBuilder(); if (fetchResult.getTrackingRefUpdates().size() > 0) { // handle result for (TrackingRefUpdate updateRes : fetchResult.getTrackingRefUpdates()) { sb.append(updateRes.getRemoteName()); sb.append(" -> "); sb.append(updateRes.getLocalName()); sb.append(" "); sb.append( updateRes.getOldObjectId() == null ? "" : updateRes.getOldObjectId().abbreviate(7).name()); sb.append(".."); sb.append( updateRes.getNewObjectId() == null ? "" : updateRes.getNewObjectId().abbreviate(7).name()); sb.append(" "); Result res = updateRes.getResult(); switch (res) { case NOT_ATTEMPTED: case NO_CHANGE: case NEW: case FORCED: case FAST_FORWARD: case RENAMED: sb.append("OK."); break; case REJECTED: sb.append("Fetch rejected, not a fast-forward."); case REJECTED_CURRENT_BRANCH: sb.append("Rejected because trying to delete the current branch."); default: sb.append(res.name()); } sb.append("\n"); } } else { sb.append("OK."); } return sb.toString(); }