diff options
Diffstat (limited to 'org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java')
-rw-r--r-- | org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java index 9af04b54f0..b21f4b6b49 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FileDiff.java @@ -49,6 +49,7 @@ import org.eclipse.jgit.treewalk.EmptyTreeIterator; import org.eclipse.jgit.treewalk.TreeWalk; import org.eclipse.jgit.treewalk.filter.TreeFilter; import org.eclipse.jgit.treewalk.filter.TreeFilterMarker; +import org.eclipse.jgit.util.LfsFactory; import org.eclipse.ui.model.WorkbenchAdapter; /** @@ -82,6 +83,8 @@ public class FileDiff extends WorkbenchAdapter { private DiffEntry diffEntry; + private Repository repository; + static ObjectId[] trees(final RevCommit commit, final RevCommit[] parents) { final ObjectId[] r = new ObjectId[parents.length + 1]; for (int i = 0; i < r.length - 1; i++) @@ -152,7 +155,7 @@ public class FileDiff extends WorkbenchAdapter { List<DiffEntry> renames = detector.compute(walk.getObjectReader(), org.eclipse.jgit.lib.NullProgressMonitor.INSTANCE); for (DiffEntry m : renames) { - final FileDiff d = new FileDiff(commit, m); + final FileDiff d = new FileDiff(repository, commit, m); r.add(d); for (Iterator<DiffEntry> i = xentries.iterator(); i.hasNext();) { DiffEntry n = i.next(); @@ -163,7 +166,7 @@ public class FileDiff extends WorkbenchAdapter { } } for (DiffEntry m : xentries) { - final FileDiff d = new FileDiff(commit, m); + final FileDiff d = new FileDiff(repository, commit, m); r.add(d); } } @@ -180,7 +183,8 @@ public class FileDiff extends WorkbenchAdapter { int treeFilterMarks = treeFilterMarker.getMarks(walk); - final FileDiffForMerges d = new FileDiffForMerges(commit, + final FileDiffForMerges d = new FileDiffForMerges(repository, + commit, treeFilterMarks); d.path = walk.getPathString(); int m0 = 0; @@ -310,7 +314,10 @@ public class FileDiff extends WorkbenchAdapter { throws IOException { if (id.equals(ObjectId.zeroId())) return new RawText(new byte[] {}); - ObjectLoader ldr = reader.open(id, Constants.OBJ_BLOB); + ObjectLoader ldr = LfsFactory.getInstance().applySmudgeFilter(repository, + reader.open(id, Constants.OBJ_BLOB), + LfsFactory.getAttributesForPath(repository, getPath()) + .get(Constants.ATTR_DIFF)); return new RawText(ldr.getCachedBytes(Integer.MAX_VALUE)); } @@ -406,10 +413,14 @@ public class FileDiff extends WorkbenchAdapter { * Create a file diff for a specified {@link RevCommit} and * {@link DiffEntry} * + * @param repo + * * @param c * @param entry */ - public FileDiff(final RevCommit c, final DiffEntry entry) { + public FileDiff(final Repository repo, final RevCommit c, + final DiffEntry entry) { + repository = repo; diffEntry = entry; commit = c; } @@ -464,8 +475,9 @@ public class FileDiff extends WorkbenchAdapter { private final int treeFilterMarks; - private FileDiffForMerges(final RevCommit c, int treeFilterMarks) { - super (c, null); + private FileDiffForMerges(final Repository repo, final RevCommit c, + int treeFilterMarks) { + super(repo, c, null); this.treeFilterMarks = treeFilterMarks; } |