Mercurial > hg4j
diff src/com/tmate/hgkit/ll/Changelog.java @ 2:08db726a0fb7
Shaping out low-level Hg structures
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Sun, 19 Dec 2010 05:41:31 +0100 |
parents | dbd663faec1f |
children | 24bb4f365164 |
line wrap: on
line diff
--- a/src/com/tmate/hgkit/ll/Changelog.java Sat Dec 18 05:47:35 2010 +0100 +++ b/src/com/tmate/hgkit/ll/Changelog.java Sun Dec 19 05:41:31 2010 +0100 @@ -3,10 +3,48 @@ */ package com.tmate.hgkit.ll; +import java.io.DataInput; +import java.io.EOFException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + /** * Representation of the Mercurial changelog file (list of ChangeSets) * @author artem */ -public class Changelog { +public class Changelog extends Revlog { + private RevlogStream content; + + /*package-local*/ Changelog(HgRepository hgRepo) { + super(hgRepo); + content = hgRepo.resolve(".hg/store/00changelog.i"); + } + + public List<Changeset> all() { + throw HgRepository.notImplemented(); + } + + public void all(Changeset.Callback callback) { + throw HgRepository.notImplemented(); + } + + public List<Changeset> range(int start, int end) { + //read from outline[start].start .. (outline[end].start + outline[end].length) + // parse changesets + final ArrayList<Changeset> rv = new ArrayList<Changeset>(end - start + 1); + Revlog.Inspector i = new Revlog.Inspector() { + + public void next(int compressedLen, int actualLen, int baseRevision, int linkRevision, int parent1Revision, int parent2Revision, byte[] nodeid, byte[] data) { + // TODO Auto-generated method stub + Changeset.parse(data); + i.add(); + throw HgRepository.notImplemented(); + } + }; + content.iterate(start, end, true, i); + return rv; + } }