소스 검색

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 년 전
부모
커밋
c0f89747b6
2개의 변경된 파일14개의 추가작업 그리고 15개의 파일을 삭제
  1. 11
    11
      org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java
  2. 3
    4
      org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java

+ 11
- 11
org.eclipse.jgit/src/org/eclipse/jgit/api/ListBranchCommand.java 파일 보기

@@ -44,6 +44,10 @@
*/
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.text.MessageFormat;
import java.util.ArrayList;
@@ -56,7 +60,6 @@ import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.api.errors.RefNotFoundException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
@@ -113,17 +116,18 @@ public class ListBranchCommand extends GitCommand<List<Ref>> {
Collection<Ref> refs = new ArrayList<>();

// 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);
}

if (listMode == null) {
refs.addAll(getRefs(Constants.R_HEADS));
refs.addAll(repo.getRefDatabase().getRefsByPrefix(R_HEADS));
} else if (listMode == ListMode.REMOTE) {
refs.addAll(getRefs(Constants.R_REMOTES));
refs.addAll(repo.getRefDatabase().getRefsByPrefix(R_REMOTES));
} 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));
} catch (IOException e) {
@@ -185,8 +189,4 @@ public class ListBranchCommand extends GitCommand<List<Ref>> {
this.containsCommitish = containsCommitish;
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 파일 보기

@@ -922,10 +922,9 @@ public class UploadPack {
refsToSend = getAdvertisedOrDefaultRefs();
} else {
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()) {

Loading…
취소
저장