[JGIT PATCH 8/6] Fix zero context insert and delete hunk headers to match CGit
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
"Shawn O. Pearce" <spearce@spearce.org> wrote:
> This test currently fails because it shows the difference between
> the way CGit and JGit number a zero context line patch.
>
> Either we hack JGit to match CGit here
And here is that hack. It just feels wrong to me that I need
to subtract 1 from the Edit region's line numbers, *only* when
context is 0, in order to get the same output as CGit.
.../src/org/spearce/jgit/diff/DiffFormatter.java | 23 ++++++++++++++++---
1 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/diff/DiffFormatter.java b/org.spearce.jgit/src/org/spearce/jgit/diff/DiffFormatter.java
index 97db9a2..9930904 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/diff/DiffFormatter.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/diff/DiffFormatter.java
@@ -120,7 +120,7 @@ private void formatEdits(final OutputStream out, final RawText a,
final int aEnd = Math.min(a.size(), endEdit.getEndA() + context);
final int bEnd = Math.min(b.size(), endEdit.getEndB() + context);
- writeHunkHeader(out, aCur, aEnd, bCur, bEnd, curIdx == 0);
+ writeHunkHeader(out, aCur, aEnd, bCur, bEnd, curEdit, curIdx == 0);
while (aCur < aEnd || bCur < bEnd) {
if (aCur < curEdit.getBeginA() || endIdx + 1 < curIdx) {
@@ -141,9 +141,24 @@ private void formatEdits(final OutputStream out, final RawText a,
}
}
- private void writeHunkHeader(final OutputStream out, final int aCur,
- final int aEnd, final int bCur, final int bEnd,
- final boolean firstHunk) throws IOException {
+ private void writeHunkHeader(final OutputStream out, int aCur, int aEnd,
+ int bCur, int bEnd, final Edit curEdit, final boolean firstHunk)
+ throws IOException {
+ if (context == 0) {
+ switch (curEdit.getType()) {
+ case INSERT:
+ aCur--;
+ aEnd--;
+ break;
+ case DELETE:
+ bCur--;
+ bEnd--;
+ break;
+ default:
+ break;
+ }
+ }
+
out.write('@');
out.write('@');
if (firstHunk) {
--
1.6.3.rc4.190.g4648