Mercurial > jhg
comparison src/com/tmate/hgkit/ll/HgDataFile.java @ 3:24bb4f365164
Rudimentary log functionality with basic infrastructure is in place
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Mon, 20 Dec 2010 02:50:36 +0100 |
| parents | 08db726a0fb7 |
| children | fc265ddeab26 |
comparison
equal
deleted
inserted
replaced
| 2:08db726a0fb7 | 3:24bb4f365164 |
|---|---|
| 8 * ? name:HgFileNode? | 8 * ? name:HgFileNode? |
| 9 * @author artem | 9 * @author artem |
| 10 */ | 10 */ |
| 11 public class HgDataFile extends Revlog { | 11 public class HgDataFile extends Revlog { |
| 12 | 12 |
| 13 private final RevlogStream content; // XXX move up to Revlog? | |
| 14 | |
| 15 // absolute from repo root? | |
| 16 // slashes, unix-style? | |
| 17 // repo location agnostic, just to give info to user, not to access real storage | |
| 13 private final String path; | 18 private final String path; |
| 14 | 19 |
| 15 /*package-local*/HgDataFile(HgRepository hgRepo) { | 20 /*package-local*/HgDataFile(HgRepository hgRepo, String path, RevlogStream content) { |
| 16 super(hgRepo); | 21 super(hgRepo); |
| 22 this.path = path; | |
| 23 this.content = content; | |
| 24 } | |
| 25 | |
| 26 public boolean exists() { | |
| 27 return content != null; // XXX need better impl | |
| 17 } | 28 } |
| 18 | 29 |
| 19 public String getPath() { | 30 public String getPath() { |
| 20 return path; // hgRepo.backresolve(this) -> name? | 31 return path; // hgRepo.backresolve(this) -> name? |
| 21 } | 32 } |
| 27 } | 38 } |
| 28 | 39 |
| 29 public byte[] content(int revision) { | 40 public byte[] content(int revision) { |
| 30 throw HgRepository.notImplemented(); | 41 throw HgRepository.notImplemented(); |
| 31 } | 42 } |
| 43 | |
| 44 public void history(Changeset.Inspector inspector) { | |
| 45 if (!exists()) { | |
| 46 throw new IllegalStateException("Can't get history of invalid repository file node"); | |
| 47 } | |
| 48 final int[] commitRevisions = new int[content.revisionCount()]; | |
| 49 Revlog.Inspector insp = new Revlog.Inspector() { | |
| 50 int count = 0; | |
| 51 | |
| 52 public void next(int revisionNumber, int actualLen, int baseRevision, int linkRevision, int parent1Revision, int parent2Revision, byte[] nodeid, byte[] data) { | |
| 53 commitRevisions[count++] = linkRevision; | |
| 54 } | |
| 55 }; | |
| 56 content.iterate(0, -1, false, insp); | |
| 57 getRepo().getChangelog().range(inspector, commitRevisions); | |
| 58 } | |
| 59 | |
| 60 public void history(int start, int end, Changeset.Inspector i) { | |
| 61 throw HgRepository.notImplemented(); | |
| 62 } | |
| 32 } | 63 } |
