@Override public boolean apply(RefDiff r) { return r.getType() != REMOVED_REF; }};
public static void print(TransferSummary result, Console console) throws IOException { for (Entry<String, Collection<RefDiff>> entry : result.getRefDiffs().entrySet()) { console.println("From " + entry.getKey()); for (RefDiff ref : entry.getValue()) { String line; if (ref.getType() == Type.CHANGED_REF) { line = " " + ref.getOldRef().getObjectId().toString().substring(0, 8) + ".." + ref.getNewRef().getObjectId().toString().substring(0, 8) + " " + ref.getOldRef().localName() + " -> " + ref.getOldRef().getName(); } else if (ref.getType() == Type.ADDED_REF) { String reftype = (ref.getNewRef().getName().startsWith(Ref.TAGS_PREFIX)) ? "tag" : "branch"; line = " * [new " + reftype + "] " + ref.getNewRef().localName() + " -> " + ref.getNewRef().getName(); } else if (ref.getType() == Type.REMOVED_REF) { line = " x [deleted] (none) -> " + ref.getOldRef().getName(); } else { line = " [deepened] " + ref.getNewRef().localName(); } console.println(line); } } } }
private void updateRefs(final Iterable<RefDiff> localRemoteRefs) { for (RefDiff cr : localRemoteRefs) { final Ref oldRef = cr.getOldRef(); final Ref newRef = cr.getNewRef(); final boolean delete = cr.isDelete(); final boolean symRef = isSymRef(cr); final String name = delete ? oldRef.getName() : newRef.getName(); final ObjectId oldValue = cr.isNew() ? null : oldRef.getObjectId(); final ObjectId newValue = delete ? null : newRef.getObjectId(); UpdateRef cmd = command(UpdateRef.class)//
prune(remoteRemoteRefs, localRemoteRefs, needUpdate); for (RefDiff ref : filter(needUpdate, (r) -> r.getType() != REMOVED_REF)) { final Optional<Integer> repoDepth = repository.getDepth(); final boolean isShallow = repoDepth.isPresent(); isShallow && ref.getType() == ADDED_REF ? repoDepth : Optional.absent()); final Ref newRef = ref.getNewRef(); remoteRepo.fetchNewData(repository, newRef, newFetchLimit, getProgressListener()); ref.setNewRef(updatedRef);
private void verifyFetchedIndexes(AbstractGeoGigOp<?> command, TransferSummary ts) { Set<String> remotes = ts.getRefDiffs().keySet(); for (String remoteURI : remotes) { FetchOp op = (FetchOp) command; Remote remoteObj = op.getRemotes().stream() .filter(r -> remoteURI.equals(r.getFetchURL())).findFirst().get(); String fetchURL = remoteObj.getFetchURL(); Repository remote = (Repository) command.getClientData().get(fetchURL); Collection<RefDiff> collection = ts.getRefDiffs().get(remoteURI); for (RefDiff rd : collection) { if (rd.isDelete()) { continue; } Ref newRef = rd.getNewRef(); Repository local = command.context().repository(); String localRef = newRef.getName(); String remoteBranch = remoteObj.mapToRemote(localRef).orElse(null); verifyClonedIndexes(local, remote, Optional.of(localRef), Optional.of(remoteBranch)); } } }
@Override public Ref apply(RefDiff cr) { return cr.getNewRef(); }};
public static RefDiff added(Ref ref) { checkNotNull(ref); return new RefDiff(null, ref); }
private Iterable<RefDiff> updateLocalRemoteRefs(Remote remote, List<LocalRemoteRef> fetchSpecs, final boolean prune) { List<RefDiff> updatedLocalRemoteRefs = new ArrayList<>(); for (LocalRemoteRef expected : fetchSpecs) { final boolean isNew = expected.isNew; final boolean remoteDeleted = expected.remoteDeleted; final String localName = expected.localRemoteRef.getName(); if (remoteDeleted) { if (prune) { updatedLocalRemoteRefs.add(RefDiff.removed(expected.localRemoteRef)); command(UpdateRef.class).setName(localName) .setOldValue(expected.localRemoteRef.getObjectId()).setDelete(true) .call(); } continue; } RefDiff localRefDiff; Ref oldRef = isNew ? null : expected.localRemoteRef; Ref newRef = new Ref(localName, expected.remoteRef.getObjectId()); command(UpdateRef.class).setName(localName).setNewValue(newRef.getObjectId()).call(); localRefDiff = new RefDiff(oldRef, newRef); updatedLocalRemoteRefs.add(localRefDiff); } return updatedLocalRemoteRefs; }
private TransferSummary callInternal(IRemoteRepo remoteRepo) { final Remote remote = this.remote; @Nullable String localRefSpec; @Nullable String remoteRefSpec; boolean force; TransferSummary result = new TransferSummary(); for (TransferableRef ref : this.refsToPush) { localRefSpec = ref.getLocalRef(); remoteRefSpec = ref.getRemoteRef(); force = ref.isForceUpdate(); if (ref.isDelete()) { Optional<Ref> deleted = remoteRepo.deleteRef(remoteRefSpec); if (deleted.isPresent()) { RefDiff deleteResult = RefDiff.added(deleted.get()); result.add(remote.getPushURL(), deleteResult); } } else { Optional<Ref> localRef = refParse(localRefSpec); checkState(localRef.isPresent(), "RefSpec %s does not exist", localRefSpec); Optional<Ref> newRef = push(remoteRepo, remote, localRef.get(), remoteRefSpec); if (newRef.isPresent()) { RefDiff deleteResult = new RefDiff(localRef.get(), newRef.get()); result.add(remote.getPushURL(), deleteResult); } } } return result; }
private List<RefDiff> updateLocalRemoteRefs(Remote remote, Iterable<RefDiff> localRemoteResults, boolean prune) { if (!prune) { localRemoteResults = Iterables.filter(localRemoteResults, (d) -> !d.isDelete()); } List<RefDiff> remoteRemoteRefs; remoteRemoteRefs = command(UpdateRemoteRefOp.class)// .addAll(localRemoteResults)// .setRemote(remote)// .call(); return remoteRemoteRefs; }
public static void print(TransferSummary result, Console console) throws IOException { for (Entry<String, Collection<RefDiff>> entry : result.getRefDiffs().entrySet()) { console.println("From " + entry.getKey()); for (RefDiff ref : entry.getValue()) { String line; if (ref.getType() == Type.CHANGED_REF) { line = " " + ref.getOldRef().getObjectId().toString().substring(0, 8) + ".." + ref.getNewRef().getObjectId().toString().substring(0, 8) + " " + ref.getOldRef().localName() + " -> " + ref.getOldRef().getName(); } else if (ref.getType() == Type.ADDED_REF) { String reftype = (ref.getNewRef().getName().startsWith(Ref.TAGS_PREFIX)) ? "tag" : "branch"; line = " * [new " + reftype + "] " + ref.getNewRef().localName() + " -> " + ref.getNewRef().getName(); } else if (ref.getType() == Type.REMOVED_REF) { line = " x [deleted] (none) -> " + ref.getOldRef().getName(); } else { line = " [deepened] " + ref.getNewRef().localName(); } console.println(line); } } } }
private void updateRefs(final Iterable<RefDiff> localRemoteRefs) { for (RefDiff cr : localRemoteRefs) { final Ref oldRef = cr.getOldRef(); final Ref newRef = cr.getNewRef(); final boolean delete = cr.isDelete(); final boolean symRef = isSymRef(cr); final String name = delete ? oldRef.getName() : newRef.getName(); final ObjectId oldValue = cr.isNew() ? null : oldRef.getObjectId(); final ObjectId newValue = delete ? null : newRef.getObjectId(); UpdateRef cmd = command(UpdateRef.class)//
private void setUpRemoteTrackingBranches(Repository clone, Remote remote, Iterable<RefDiff> refdifss) { final Iterable<Ref> remoteRefs = Iterables.transform(refdifss, (cr) -> cr.getNewRef()); final Iterable<Ref> localRefs = command(MapRef.class)//
public static RefDiff removed(Ref ref) { checkNotNull(ref); return new RefDiff(ref, null); }