Mercurial > jhg
changeset 385:6150555eb41d
HgInvalidRevisionException for svn imported repositories (changeset 0 references nullid manifest)
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Mon, 13 Feb 2012 14:19:36 +0100 |
parents | 4b97847d0b2d |
children | 73e875154afb |
files | src/org/tmatesoft/hg/core/HgInvalidRevisionException.java src/org/tmatesoft/hg/repo/HgManifest.java src/org/tmatesoft/hg/repo/Revlog.java |
diffstat | 3 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/core/HgInvalidRevisionException.java Mon Feb 13 13:20:06 2012 +0100 +++ b/src/org/tmatesoft/hg/core/HgInvalidRevisionException.java Mon Feb 13 14:19:36 2012 +0100 @@ -90,8 +90,8 @@ return msg; } StringBuilder sb = new StringBuilder(); - sb.append('['); if (rev != null) { + sb.append("Revision:"); sb.append(rev.shortNotation()); sb.append(' '); } @@ -109,7 +109,6 @@ sb.append(sr); } } - sb.append(']'); return sb.toString(); } }
--- a/src/org/tmatesoft/hg/repo/HgManifest.java Mon Feb 13 13:20:06 2012 +0100 +++ b/src/org/tmatesoft/hg/repo/HgManifest.java Mon Feb 13 14:19:36 2012 +0100 @@ -479,7 +479,12 @@ Nodeid manifest = repo.getChangelog().range(u, u).get(0).manifest(); // FIXME calculate those missing effectively (e.g. cache and sort nodeids to speed lookup // right away in the #next (may refactor ParentWalker's sequential and sorted into dedicated helper and reuse here) - changelog2manifest[u] = repo.getManifest().getRevisionIndex(manifest); + if (manifest.isNull()) { + repo.getContext().getLog().warn(getClass(), "Changeset %d has no associated manifest entry", u); + // keep -1 in the changelog2manifest map. FIXME rest of the code shall accomodate to the fact manifest revision may be missing + } else { + changelog2manifest[u] = repo.getManifest().getRevisionIndex(manifest); + } } catch (HgInvalidControlFileException ex) { // FIXME need to propagate the error up to client repo.getContext().getLog().error(getClass(), ex, null);
--- a/src/org/tmatesoft/hg/repo/Revlog.java Mon Feb 13 13:20:06 2012 +0100 +++ b/src/org/tmatesoft/hg/repo/Revlog.java Mon Feb 13 14:19:36 2012 +0100 @@ -140,7 +140,7 @@ public final int getRevisionIndex(Nodeid nid) throws HgInvalidControlFileException, HgInvalidRevisionException { int revision = content.findRevisionIndex(nid); if (revision == BAD_REVISION) { - throw new HgInvalidRevisionException(String.format("Bad revision of %s", this /*XXX HgDataFile.getPath might be more suitable here*/), nid, null); + throw new HgInvalidRevisionException(String.format("Can't find revision %s in %s", nid.shortNotation(), this /*FIXME HgDataFile.getPath might be more suitable here*/), nid, null); } return revision; }