Merge changes I0d339b9f,I0e6673b8
* changes: Favor earlier PackFile instances over later duplicates Cleanup duplicated object reuse code in PackWriter
This commit is contained in:
commit
11096a89a5
|
@ -416,10 +416,11 @@ private static Map<String, PackFile> reuseMap(final PackList old) {
|
|||
// This should never occur. It should be impossible for us
|
||||
// to have two pack files with the same name, as all of them
|
||||
// came out of the same directory. If it does, we promised to
|
||||
// close any PackFiles we did not reuse, so close the one we
|
||||
// just evicted out of the reuse map.
|
||||
// close any PackFiles we did not reuse, so close the second,
|
||||
// readers are likely to be actively using the first.
|
||||
//
|
||||
prior.close();
|
||||
forReuse.put(prior.getPackFile().getName(), prior);
|
||||
p.close();
|
||||
}
|
||||
}
|
||||
return forReuse;
|
||||
|
|
|
@ -718,12 +718,11 @@ private void writeObject(final ObjectToPack otp) throws IOException {
|
|||
final PackedObjectLoader reuse = open(otp);
|
||||
if (reuse != null) {
|
||||
try {
|
||||
if (otp.isDeltaRepresentation()) {
|
||||
writeDeltaObjectReuse(otp, reuse);
|
||||
} else {
|
||||
if (otp.isDeltaRepresentation())
|
||||
writeDeltaObjectHeader(otp, reuse);
|
||||
else
|
||||
writeObjectHeader(otp.getType(), reuse.getSize());
|
||||
reuse.copyRawData(out, buf, windowCursor);
|
||||
}
|
||||
reuse.copyRawData(out, buf, windowCursor);
|
||||
} finally {
|
||||
reuse.endCopyRawData();
|
||||
}
|
||||
|
@ -773,7 +772,7 @@ private void writeWholeObjectDeflate(final ObjectToPack otp)
|
|||
} while (!deflater.finished());
|
||||
}
|
||||
|
||||
private void writeDeltaObjectReuse(final ObjectToPack otp,
|
||||
private void writeDeltaObjectHeader(final ObjectToPack otp,
|
||||
final PackedObjectLoader reuse) throws IOException {
|
||||
if (deltaBaseAsOffset && otp.getDeltaBase() != null) {
|
||||
writeObjectHeader(Constants.OBJ_OFS_DELTA, reuse.getRawSize());
|
||||
|
@ -792,7 +791,6 @@ private void writeDeltaObjectReuse(final ObjectToPack otp,
|
|||
otp.getDeltaBaseId().copyRawTo(buf, 0);
|
||||
out.write(buf, 0, Constants.OBJECT_ID_LENGTH);
|
||||
}
|
||||
reuse.copyRawData(out, buf, windowCursor);
|
||||
}
|
||||
|
||||
private void writeObjectHeader(final int objectType, long dataLength)
|
||||
|
|
Loading…
Reference in New Issue