List of usage examples for org.eclipse.jgit.transport TrackingRefUpdate getLocalName
public String getLocalName()
From source file:com.gitblit.service.MirrorService.java
License:Apache License
@Override public void run() { if (!isReady()) { return;//from www. j a v a 2s . c om } 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 w w . ja v a 2 s . c o 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();//from w w w . j a v a 2 s.c om 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 . j a v a2 s . com } String additionalMsgs = result.getMessages(); if (additionalMsgs.length() > 0) { System.out.println("Remote process messages: " + additionalMsgs); } }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.GitServerUtil.java
License:Apache License
/** * Check all refs successfully updated, throws exception if they are not * @param result fetch result//from w ww. j a va2s . c om * @throws VcsException if any ref was not successfully updated */ public static void checkFetchSuccessful(Repository db, FetchResult result) throws VcsException { for (TrackingRefUpdate update : result.getTrackingRefUpdates()) { String localRefName = update.getLocalName(); RefUpdate.Result status = update.getResult(); if (status == RefUpdate.Result.REJECTED || status == RefUpdate.Result.LOCK_FAILURE || status == RefUpdate.Result.IO_FAILURE) { if (status == RefUpdate.Result.LOCK_FAILURE) { TreeSet<String> caseSensitiveConflicts = new TreeSet<>(); TreeSet<String> conflicts = new TreeSet<>(); try { OSInfo.OSType os = OSInfo.getOSType(); if (os == OSInfo.OSType.WINDOWS || os == OSInfo.OSType.MACOSX) { Set<String> refNames = db.getRefDatabase().getRefs(RefDatabase.ALL).keySet(); for (String ref : refNames) { if (!localRefName.equals(ref) && localRefName.equalsIgnoreCase(ref)) caseSensitiveConflicts.add(ref); } } conflicts.addAll(db.getRefDatabase().getConflictingNames(localRefName)); } catch (Exception e) { //ignore } String msg; if (!conflicts.isEmpty()) { msg = "Failed to fetch ref " + localRefName + ": it clashes with " + StringUtil.join(", ", conflicts) + ". Please remove conflicting refs from repository."; } else if (!caseSensitiveConflicts.isEmpty()) { msg = "Failed to fetch ref " + localRefName + ": on case-insensitive file system it clashes with " + StringUtil.join(", ", caseSensitiveConflicts) + ". Please remove conflicting refs from repository."; } else { msg = "Fail to update '" + localRefName + "' (" + status.name() + ")"; } throw new VcsException(msg); } else { throw new VcsException("Fail to update '" + localRefName + "' (" + status.name() + ")"); } } } }
From source file:net.erdfelt.android.sdkfido.git.internal.GitInfo.java
License:Apache License
public static void infoFetchResults(Repository db, FetchResult result) throws IOException { boolean headerDisplayed = false; for (TrackingRefUpdate update : result.getTrackingRefUpdates()) { if (update.getResult() == RefUpdate.Result.NO_CHANGE) { // skip if not changed continue; }/*from www .j ava2 s . c o m*/ char idChar = asIdChar(update.getResult()); String idLong = asIdLong(db, update); String remoteRef = abbreviateRef(update.getRemoteName()); String localRef = abbreviateRef(update.getLocalName()); if (!headerDisplayed) { System.out.printf("Fetch Results from URI: %s%n", result.getURI()); headerDisplayed = true; } System.out.printf(" %c %-20s %-18s > %s%n", idChar, idLong, remoteRef, localRef); } // Now show any remote messages StringReader reader = null; BufferedReader buf = null; try { reader = new StringReader(result.getMessages()); buf = new BufferedReader(reader); String line; while ((line = buf.readLine()) != null) { System.out.printf("[remote] %s%n", line); } } finally { IOUtils.closeQuietly(buf); IOUtils.closeQuietly(reader); } }
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// w w w .j av a2s. c o 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 void showFetchResult(final FetchResult r, boolean logOnly) { ObjectReader reader = repo.newObjectReader(); PrintWriter out = new PrintWriter(System.out); try {/*ww w . j a va2 s . c o m*/ boolean shownURI = false; for (final TrackingRefUpdate u : r.getTrackingRefUpdates()) { if (u.getResult() == RefUpdate.Result.NO_CHANGE) { continue; } final char type = shortTypeOf(u.getResult()); final String longType = longTypeOf(reader, u); final String src = abbreviateRef(u.getRemoteName(), false); final String dst = abbreviateRef(u.getLocalName(), true); if (!shownURI) { out.println("jGIT::from " + r.getURI()); shownURI = true; } if (!logOnly) { out.format(" %c %-17s %-10s -> %s", type, longType, src, dst); out.println(); } } } finally { reader.release(); } showRemoteMessages(r.getMessages()); }
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]"; }//from www . j a v a 2 s .com 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.commonjava.gitwrap.BareGitRepositoryTest.java
License:Open Source License
@Test public void cloneBare_NoBranch() throws IOException, GitWrapException, URISyntaxException { final File gitDir = new File(".git"); if (gitDir.exists()) { final FileRepositoryBuilder builder = new FileRepositoryBuilder(); builder.setGitDir(gitDir);//from ww w. jav a2 s . c o m builder.setup(); final FileRepository repository = new FileRepository(builder); final RemoteConfig config = new RemoteConfig(repository.getConfig(), "origin"); testGitDir = File.createTempFile("git-clone.", ".git"); testGitDir.delete(); BareGitRepository.setProgressMonitor(new TextProgressMonitor()); final BareGitRepository clone = BareGitRepository.cloneBare(config.getURIs().get(0).toString(), "origin", testGitDir); System.out.println(clone.getGitDir()); System.out.println(); final FetchResult fetchResult = clone.getLatestFetchResult(); for (final Ref ref : fetchResult.getAdvertisedRefs()) { System.out.println(ref.getName()); } System.out.println(); for (final TrackingRefUpdate update : fetchResult.getTrackingRefUpdates()) { System.out.println(update.getLocalName() + " -> " + update.getRemoteName()); } } }