Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jgit-dev] Creating the equivalent of "git diff"

I've tried replacing DirCacheIterator with a CanonicalTreeParser set to "HEAD^{tree}", and that actually does obey gitignore. Unfortunately, DiffFormatter's scan method returns every file in the repo, whether they've been modified or not. Perhaps I can try to filter them out.

On Mon, Sep 15, 2014 at 3:16 PM, Zach Oakes <zsoakes@xxxxxxxxx> wrote:
I'm not sure if I have to use DirCacheIterator, but I don't know of any other way to do it. I need to diff the last commit with whatever is in my working directory, as "git diff" does. Is there a workaround? I would imagine someone has done it before.

On Mon, Sep 15, 2014 at 2:50 PM, Dave Borowitz <dborowitz@xxxxxxxxxx> wrote:
If you look at the implementation of DiffFilter#getDiffTreeFilterFor, it looks like you need to pass it a WorkingTreeIterator to get it to use a NotIgnoredFilter.

I suppose if you must use a DirCacheIterator it's a missing feature to read .gitignore from the index.

On Sun, Sep 14, 2014 at 9:50 PM, Zach Oakes <zsoakes@xxxxxxxxx> wrote:
I'm trying to make an exact equivalent to the plain "git diff" command programmatically. The only remaining issue is that it doesn't seem to be respecting the repository's gitignore file. I am getting numerous diffs for files in a build directory, which do not appear when I run it on the command line. I would appreciate help if anyone can provide it.

DirCacheIterator dci = new DirCacheIterator(repo.readDirCache());
FileTreeIterator fti = new FileTreeIterator(repo);
ByteArrayOutputStream out = new ByteArrayOutputStream();
DiffFormatter df = new DiffFormatter(out);
List<DiffEntry> entries = df.scan(dci, fti);

jgit-dev mailing list
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

Back to the top