public Node tipNode(String path, Integer likelyTipNumber, String likelyTipIdentifier) { for (int i = likelyTipNumber; i >= 1; i--) { if (contentCache.isCached(i)) { if (likelyTipNumber.equals(i)) { return node(path, likelyTipNumber, likelyTipIdentifier); } else { HgLogEntry logEntry = hgClient.logForRev(String.valueOf(i)); return node(path, logEntry.getRevNumber(), logEntry.getIdentifier()); } } } HgLogEntry entry0 = hgClient.logForRev("0"); ensureFileCacheSynchedFor(0, entry0.getIdentifier()); return node(path, 0, entry0.getIdentifier()); }
public void ensureFileCacheSynchedFor(Integer changesetNumber, String changesetIdentifier) { if (contentCache.isCached(changesetNumber)) { return; } Map<String, String> baseContent; if (changesetNumber.equals(0)) { baseContent = new HashMap<String, String>(); } else { baseContent = contentCache.readFor(changesetNumber - 1); } if (changesetIdentifier == null) { changesetIdentifier = hgClient.logForRev(String.valueOf(changesetNumber)).getIdentifier(); } contentBuilder.buildContent(changesetIdentifier, baseContent); contentCache.writeFor(changesetNumber, baseContent); }
public boolean isCached(Integer revisionNumber) { return contentCache.isCached(revisionNumber); }