|
|
|
@ -164,8 +164,10 @@ class FetchProcess {
|
|
|
|
|
have.addAll(askFor.keySet()); |
|
|
|
|
askFor.clear(); |
|
|
|
|
for (final Ref r : additionalTags) { |
|
|
|
|
final ObjectId id = r.getPeeledObjectId(); |
|
|
|
|
if (id == null || transport.local.hasObject(id)) |
|
|
|
|
ObjectId id = r.getPeeledObjectId(); |
|
|
|
|
if (id == null) |
|
|
|
|
id = r.getObjectId(); |
|
|
|
|
if (transport.local.hasObject(id)) |
|
|
|
|
wantTag(r); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -347,14 +349,22 @@ class FetchProcess {
|
|
|
|
|
for (final Ref r : conn.getRefs()) { |
|
|
|
|
if (!isTag(r)) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
Ref local = haveRefs.get(r.getName()); |
|
|
|
|
ObjectId obj = r.getObjectId(); |
|
|
|
|
|
|
|
|
|
if (r.getPeeledObjectId() == null) { |
|
|
|
|
if (local != null && obj.equals(local.getObjectId())) |
|
|
|
|
continue; |
|
|
|
|
if (askFor.containsKey(obj) || transport.local.hasObject(obj)) |
|
|
|
|
wantTag(r); |
|
|
|
|
else |
|
|
|
|
additionalTags.add(r); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
final Ref local = haveRefs.get(r.getName()); |
|
|
|
|
if (local != null) { |
|
|
|
|
if (!r.getObjectId().equals(local.getObjectId())) |
|
|
|
|
if (!obj.equals(local.getObjectId())) |
|
|
|
|
wantTag(r); |
|
|
|
|
} else if (askFor.containsKey(r.getPeeledObjectId()) |
|
|
|
|
|| transport.local.hasObject(r.getPeeledObjectId())) |
|
|
|
|