Unwind loop that iterates over fetch connection refs.
Create separate loops based on whether the ref specs collection is empty or not. Change-Id: I2861b45fe083675e12ff47f591e104f8cf6dd216 Signed-off-by: Kevin Sawicki <kevin@github.com>
This commit is contained in:
parent
930875a81a
commit
b127fa19eb
|
@ -73,7 +73,9 @@ public class LsRemoteCommand extends GitCommand<Collection<Ref>> {
|
|||
private String remote = Constants.DEFAULT_REMOTE_NAME;
|
||||
|
||||
private boolean heads;
|
||||
|
||||
private boolean tags;
|
||||
|
||||
private String uploadPack;
|
||||
|
||||
/**
|
||||
|
@ -118,7 +120,7 @@ public void setTags(boolean tags) {
|
|||
|
||||
/**
|
||||
* The full path of git-upload-pack on the remote host
|
||||
*
|
||||
*
|
||||
* @param uploadPack
|
||||
*/
|
||||
public void setUploadPack(String uploadPack) {
|
||||
|
@ -134,32 +136,27 @@ public Collection<Ref> call() throws Exception {
|
|||
|
||||
try {
|
||||
Collection<RefSpec> refSpecs = new ArrayList<RefSpec>(1);
|
||||
if (tags) {
|
||||
if (tags)
|
||||
refSpecs.add(new RefSpec(
|
||||
"refs/tags/*:refs/remotes/origin/tags/*"));
|
||||
}
|
||||
if (heads) {
|
||||
if (heads)
|
||||
refSpecs.add(new RefSpec(
|
||||
"refs/heads/*:refs/remotes/origin/*"));
|
||||
}
|
||||
Collection<Ref> refs;
|
||||
Map<String, Ref> refmap = new HashMap<String, Ref>();
|
||||
FetchConnection fc = transport.openFetch();
|
||||
try {
|
||||
refs = fc.getRefs();
|
||||
for (Ref r : refs) {
|
||||
boolean found = refSpecs.isEmpty();
|
||||
for (RefSpec rs : refSpecs) {
|
||||
if (rs.matchSource(r)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
if (refSpecs.isEmpty())
|
||||
for (Ref r : refs)
|
||||
refmap.put(r.getName(), r);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
for (Ref r : refs)
|
||||
for (RefSpec rs : refSpecs)
|
||||
if (rs.matchSource(r)) {
|
||||
refmap.put(r.getName(), r);
|
||||
break;
|
||||
}
|
||||
} finally {
|
||||
fc.close();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue