Mercurial > hg4j
diff src/org/tmatesoft/hg/internal/RevlogStreamWriter.java @ 708:4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 20 Aug 2013 18:41:34 +0200 |
parents | 545b1d4cc11d |
children |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/internal/RevlogStreamWriter.java Fri Aug 16 19:22:59 2013 +0200 +++ b/src/org/tmatesoft/hg/internal/RevlogStreamWriter.java Tue Aug 20 18:41:34 2013 +0200 @@ -144,15 +144,19 @@ populateLastEntryContent(); // byte[] contentByteArray = toByteArray(content); + Nodeid p1Rev = revision(p1); + Nodeid p2Rev = revision(p2); + Nodeid newRev = Nodeid.fromBinary(dh.sha1(p1Rev, p2Rev, contentByteArray).asBinary(), 0); + if (newRev.equals(p1Rev)) { // shall never happen, same content but different parents give new SHA. Doesn't hurt to check, though + assert p2Rev.isNull(); + return new Pair<Integer, Nodeid>(p1, p1Rev); + } + // Patch patch = GeneratePatchInspector.delta(lastFullContent.second(), contentByteArray); int patchSerializedLength = patch.serializedLength(); - final boolean writeComplete = preferCompleteOverPatch(patchSerializedLength, contentByteArray.length); DataSerializer.DataSource dataSource = writeComplete ? new ByteArrayDataSource(contentByteArray) : patch.new PatchDataSource(); // - Nodeid p1Rev = revision(p1); - Nodeid p2Rev = revision(p2); - Nodeid newRev = Nodeid.fromBinary(dh.sha1(p1Rev, p2Rev, contentByteArray).asBinary(), 0); doAdd(newRev, p1, p2, linkRevision, writeComplete ? lastEntryIndex+1 : lastEntryBase, contentByteArray.length, dataSource); lastFullContent = new Pair<Integer, byte[]>(lastEntryIndex, contentByteArray); return new Pair<Integer, Nodeid>(lastEntryIndex, lastEntryRevision);