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 | 
