Browse Source

Using getRefsByPrefix with multiple prefixes

Change-Id: I9901e733797bd661f2485cc42914ad01699617d3
Signed-off-by: Minh Thai <mthai@google.com>
tags/v5.2.0.201811281532-m3
Minh Thai 5 years ago
parent
commit
c0f89747b6

+ 11
- 11
org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java View File

*/ */
package org.eclipse.jgit.api; package org.eclipse.jgit.api;


import static org.eclipse.jgit.lib.Constants.HEAD;
import static org.eclipse.jgit.lib.Constants.R_HEADS;
import static org.eclipse.jgit.lib.Constants.R_REMOTES;

import java.io.IOException; import java.io.IOException;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.api.errors.RefNotFoundException; import org.eclipse.jgit.api.errors.RefNotFoundException;
import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
Collection<Ref> refs = new ArrayList<>(); Collection<Ref> refs = new ArrayList<>();


// Also return HEAD if it's detached // Also return HEAD if it's detached
Ref head = repo.exactRef(Constants.HEAD);
if (head != null && head.getLeaf().getName().equals(Constants.HEAD))
Ref head = repo.exactRef(HEAD);
if (head != null && head.getLeaf().getName().equals(HEAD)) {
refs.add(head); refs.add(head);
}


if (listMode == null) { if (listMode == null) {
refs.addAll(getRefs(Constants.R_HEADS));
refs.addAll(repo.getRefDatabase().getRefsByPrefix(R_HEADS));
} else if (listMode == ListMode.REMOTE) { } else if (listMode == ListMode.REMOTE) {
refs.addAll(getRefs(Constants.R_REMOTES));
refs.addAll(repo.getRefDatabase().getRefsByPrefix(R_REMOTES));
} else { } else {
refs.addAll(getRefs(Constants.R_HEADS));
refs.addAll(getRefs(Constants.R_REMOTES));
refs.addAll(repo.getRefDatabase().getRefsByPrefix(R_HEADS,
R_REMOTES));
} }
resultRefs = new ArrayList<>(filterRefs(refs)); resultRefs = new ArrayList<>(filterRefs(refs));
} catch (IOException e) { } catch (IOException e) {
this.containsCommitish = containsCommitish; this.containsCommitish = containsCommitish;
return this; return this;
} }

private Collection<Ref> getRefs(String prefix) throws IOException {
return repo.getRefDatabase().getRefsByPrefix(prefix);
}
} }

+ 3
- 4
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java View File

refsToSend = getAdvertisedOrDefaultRefs(); refsToSend = getAdvertisedOrDefaultRefs();
} else { } else {
refsToSend = new HashMap<>(); refsToSend = new HashMap<>();
for (String refPrefix : req.getRefPrefixes()) {
for (Ref ref : db.getRefDatabase().getRefsByPrefix(refPrefix)) {
refsToSend.put(ref.getName(), ref);
}
String[] prefixes = req.getRefPrefixes().toArray(new String[0]);
for (Ref ref : db.getRefDatabase().getRefsByPrefix(prefixes)) {
refsToSend.put(ref.getName(), ref);
} }
} }
if (req.getSymrefs()) { if (req.getSymrefs()) {

Loading…
Cancel
Save