# HG changeset patch # User Artem Tikhomirov # Date 1297747805 -3600 # Node ID cea84c5995e6e13a48686f2c029907240e3844d6 # Parent 4f509f5bc8cbb77e8a85744cc596eb6ffaa0e452 Changeset to access parent nodeids diff -r 4f509f5bc8cb -r cea84c5995e6 cmdline/org/tmatesoft/hg/console/Log.java --- a/cmdline/org/tmatesoft/hg/console/Log.java Fri Feb 04 04:06:44 2011 +0100 +++ b/cmdline/org/tmatesoft/hg/console/Log.java Tue Feb 15 06:30:05 2011 +0100 @@ -176,12 +176,14 @@ sb.append('\n'); } if (complete) { - if (changelogWalker == null) { - changelogWalker = repo.getChangelog().new ParentWalker(); - changelogWalker.init(); - } - Nodeid p1 = changelogWalker.safeFirstParent(csetNodeid); - Nodeid p2 = changelogWalker.safeSecondParent(csetNodeid); +// if (changelogWalker == null) { +// changelogWalker = repo.getChangelog().new ParentWalker(); +// changelogWalker.init(); +// } +// Nodeid p1 = changelogWalker.safeFirstParent(csetNodeid); +// Nodeid p2 = changelogWalker.safeSecondParent(csetNodeid); + Nodeid p1 = cset.getFirstParentRevision(); + Nodeid p2 = cset.getSecondParentRevision(); int p1x = p1 == Nodeid.NULL ? -1 : repo.getChangelog().getLocalRevision(p1); int p2x = p2 == Nodeid.NULL ? -1 : repo.getChangelog().getLocalRevision(p2); int mx = repo.getManifest().getLocalRevision(cset.getManifestRevision()); diff -r 4f509f5bc8cb -r cea84c5995e6 src/org/tmatesoft/hg/core/Cset.java --- a/src/org/tmatesoft/hg/core/Cset.java Fri Feb 04 04:06:44 2011 +0100 +++ b/src/org/tmatesoft/hg/core/Cset.java Tue Feb 15 06:30:05 2011 +0100 @@ -117,6 +117,22 @@ return deletedFiles; } + // XXX do I need boolean isMergeRevision()? + + public Nodeid getFirstParentRevision() { + // XXX may read once for both p1 and p2 + // or use ParentWalker to minimize reads even more. + byte[] p1 = new byte[20]; + statusHelper.getRepo().getChangelog().parents(revNumber, new int[2], p1, null); + return Nodeid.fromBinary(p1, 0); + } + + public Nodeid getSecondParentRevision() { + byte[] p2 = new byte[20]; + statusHelper.getRepo().getChangelog().parents(revNumber, new int[2], null, p2); + return Nodeid.fromBinary(p2, 0); + } + @Override public Cset clone() { try { @@ -150,6 +166,7 @@ added.add(new FileRevision(repo, nid, s)); } for (Path s : r.getRemoved()) { + // with Path from getRemoved, may just copy deleted.add(s); } modified.trimToSize();