Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/AnnotateFacility.java @ 551:4ea0351ca878
Better (precise) name for diff facility, tests
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Wed, 20 Feb 2013 18:19:52 +0100 |
| parents | 83afa680555d |
| children | 45751456b471 |
comparison
equal
deleted
inserted
replaced
| 550:c1478cc31f45 | 551:4ea0351ca878 |
|---|---|
| 18 | 18 |
| 19 import static org.tmatesoft.hg.repo.HgRepository.NO_REVISION; | 19 import static org.tmatesoft.hg.repo.HgRepository.NO_REVISION; |
| 20 import static org.tmatesoft.hg.repo.HgRepository.TIP; | 20 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
| 21 | 21 |
| 22 import org.tmatesoft.hg.core.Nodeid; | 22 import org.tmatesoft.hg.core.Nodeid; |
| 23 import org.tmatesoft.hg.internal.PatchGenerator.LineSequence; | 23 import org.tmatesoft.hg.internal.DiffHelper.LineSequence; |
| 24 import org.tmatesoft.hg.repo.HgDataFile; | 24 import org.tmatesoft.hg.repo.HgDataFile; |
| 25 import org.tmatesoft.hg.repo.HgInvalidStateException; | 25 import org.tmatesoft.hg.repo.HgInvalidStateException; |
| 26 import org.tmatesoft.hg.util.CancelledException; | 26 import org.tmatesoft.hg.util.CancelledException; |
| 27 | 27 |
| 28 /** | 28 /** |
| 39 public void diff(HgDataFile df, int csetRevIndex1, int csetRevIndex2, BlockInspector insp) { | 39 public void diff(HgDataFile df, int csetRevIndex1, int csetRevIndex2, BlockInspector insp) { |
| 40 int fileRevIndex1 = fileRevIndex(df, csetRevIndex1); | 40 int fileRevIndex1 = fileRevIndex(df, csetRevIndex1); |
| 41 int fileRevIndex2 = fileRevIndex(df, csetRevIndex2); | 41 int fileRevIndex2 = fileRevIndex(df, csetRevIndex2); |
| 42 LineSequence c1 = lines(df, fileRevIndex1); | 42 LineSequence c1 = lines(df, fileRevIndex1); |
| 43 LineSequence c2 = lines(df, fileRevIndex2); | 43 LineSequence c2 = lines(df, fileRevIndex2); |
| 44 PatchGenerator<LineSequence> pg = new PatchGenerator<LineSequence>(); | 44 DiffHelper<LineSequence> pg = new DiffHelper<LineSequence>(); |
| 45 pg.init(c1, c2); | 45 pg.init(c1, c2); |
| 46 pg.findMatchingBlocks(new BlameBlockInspector(insp, csetRevIndex1, csetRevIndex2)); | 46 pg.findMatchingBlocks(new BlameBlockInspector(insp, csetRevIndex1, csetRevIndex2)); |
| 47 } | 47 } |
| 48 | 48 |
| 49 /** | 49 /** |
| 84 if (fileParentRevs[0] != NO_REVISION && fileParentRevs[1] != NO_REVISION) { | 84 if (fileParentRevs[0] != NO_REVISION && fileParentRevs[1] != NO_REVISION) { |
| 85 LineSequence p1Lines = lines(df, fileParentRevs[0]); | 85 LineSequence p1Lines = lines(df, fileParentRevs[0]); |
| 86 LineSequence p2Lines = lines(df, fileParentRevs[1]); | 86 LineSequence p2Lines = lines(df, fileParentRevs[1]); |
| 87 int p1ClogIndex = df.getChangesetRevisionIndex(fileParentRevs[0]); | 87 int p1ClogIndex = df.getChangesetRevisionIndex(fileParentRevs[0]); |
| 88 int p2ClogIndex = df.getChangesetRevisionIndex(fileParentRevs[1]); | 88 int p2ClogIndex = df.getChangesetRevisionIndex(fileParentRevs[1]); |
| 89 PatchGenerator<LineSequence> pg = new PatchGenerator<LineSequence>(); | 89 DiffHelper<LineSequence> pg = new DiffHelper<LineSequence>(); |
| 90 pg.init(p2Lines, fileRevLines); | 90 pg.init(p2Lines, fileRevLines); |
| 91 EqualBlocksCollector p2MergeCommon = new EqualBlocksCollector(); | 91 EqualBlocksCollector p2MergeCommon = new EqualBlocksCollector(); |
| 92 pg.findMatchingBlocks(p2MergeCommon); | 92 pg.findMatchingBlocks(p2MergeCommon); |
| 93 // | 93 // |
| 94 pg.init(p1Lines); | 94 pg.init(p1Lines); |
| 107 int soleParent = fileParentRevs[0] == NO_REVISION ? fileParentRevs[1] : fileParentRevs[0]; | 107 int soleParent = fileParentRevs[0] == NO_REVISION ? fileParentRevs[1] : fileParentRevs[0]; |
| 108 assert soleParent != NO_REVISION; | 108 assert soleParent != NO_REVISION; |
| 109 LineSequence parentLines = lines(df, soleParent); | 109 LineSequence parentLines = lines(df, soleParent); |
| 110 | 110 |
| 111 int parentChangesetRevIndex = df.getChangesetRevisionIndex(soleParent); | 111 int parentChangesetRevIndex = df.getChangesetRevisionIndex(soleParent); |
| 112 PatchGenerator<LineSequence> pg = new PatchGenerator<LineSequence>(); | 112 DiffHelper<LineSequence> pg = new DiffHelper<LineSequence>(); |
| 113 pg.init(parentLines, fileRevLines); | 113 pg.init(parentLines, fileRevLines); |
| 114 pg.findMatchingBlocks(new BlameBlockInspector(insp, parentChangesetRevIndex, csetRevIndex)); | 114 pg.findMatchingBlocks(new BlameBlockInspector(insp, parentChangesetRevIndex, csetRevIndex)); |
| 115 } | 115 } |
| 116 } | 116 } |
| 117 | 117 |
| 192 int totalLines(); | 192 int totalLines(); |
| 193 } | 193 } |
| 194 | 194 |
| 195 | 195 |
| 196 | 196 |
| 197 static class BlameBlockInspector extends PatchGenerator.DeltaInspector<LineSequence> { | 197 static class BlameBlockInspector extends DiffHelper.DeltaInspector<LineSequence> { |
| 198 private final BlockInspector insp; | 198 private final BlockInspector insp; |
| 199 private final int csetOrigin; | 199 private final int csetOrigin; |
| 200 private final int csetTarget; | 200 private final int csetTarget; |
| 201 private EqualBlocksCollector p2MergeCommon; | 201 private EqualBlocksCollector p2MergeCommon; |
| 202 private int csetMergeParent; | 202 private int csetMergeParent; |
| 441 } | 441 } |
| 442 return String.format("@@ -%d,%d +%d,%d @@", firstRemovedLine(), totalRemovedLines(), firstAddedLine(), totalAddedLines()); | 442 return String.format("@@ -%d,%d +%d,%d @@", firstRemovedLine(), totalRemovedLines(), firstAddedLine(), totalAddedLines()); |
| 443 } | 443 } |
| 444 } | 444 } |
| 445 | 445 |
| 446 static class EqualBlocksCollector implements PatchGenerator.MatchInspector<LineSequence> { | 446 static class EqualBlocksCollector implements DiffHelper.MatchInspector<LineSequence> { |
| 447 private final IntVector matches = new IntVector(10*3, 2*3); | 447 private final IntVector matches = new IntVector(10*3, 2*3); |
| 448 | 448 |
| 449 public void begin(LineSequence s1, LineSequence s2) { | 449 public void begin(LineSequence s1, LineSequence s2) { |
| 450 } | 450 } |
| 451 | 451 |
