diff options
author | Russell Belfer <rb@github.com> | 2013-06-10 21:10:39 +0400 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2013-06-10 21:10:39 +0400 |
commit | 114f5a6c41ea03393e00ae41126a6ddb0ef39a15 (patch) | |
tree | f579e849a72749123a54483180726396244177b2 /src/diff.h | |
parent | 7000f3fa7bad25ec07355d6afb640ea272201dff (diff) |
Reorganize diff and add basic diff driver
This is a significant reorganization of the diff code to break it
into a set of more clearly distinct files and to document the new
organization. Hopefully this will make the diff code easier to
understand and to extend.
This adds a new `git_diff_driver` object that looks of diff driver
information from the attributes and the config so that things like
function content in diff headers can be provided. The full driver
spec is not implemented in the commit - this is focused on the
reorganization of the code and putting the driver hooks in place.
This also removes a few #includes from src/repository.h that were
overbroad, but as a result required extra #includes in a variety
of places since including src/repository.h no longer results in
pulling in the whole world.
Diffstat (limited to 'src/diff.h')
-rw-r--r-- | src/diff.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/diff.h b/src/diff.h index ac8ab2aed..ad12e7731 100644 --- a/src/diff.h +++ b/src/diff.h @@ -29,11 +29,16 @@ enum { GIT_DIFFCAPS_TRUST_NANOSECS = (1 << 5), /* use stat time nanoseconds */ }; +#define DIFF_FLAGS_KNOWN_BINARY (GIT_DIFF_FLAG_BINARY|GIT_DIFF_FLAG_NOT_BINARY) +#define DIFF_FLAGS_NOT_BINARY (GIT_DIFF_FLAG_NOT_BINARY|GIT_DIFF_FLAG__NO_DATA) + enum { GIT_DIFF_FLAG__FREE_PATH = (1 << 7), /* `path` is allocated memory */ GIT_DIFF_FLAG__FREE_DATA = (1 << 8), /* internal file data is allocated */ GIT_DIFF_FLAG__UNMAP_DATA = (1 << 9), /* internal file data is mmap'ed */ GIT_DIFF_FLAG__NO_DATA = (1 << 10), /* file data should not be loaded */ + GIT_DIFF_FLAG__FREE_BLOB = (1 << 11), /* release the blob when done */ + GIT_DIFF_FLAG__LOADED = (1 << 12), /* file data has been loaded */ GIT_DIFF_FLAG__TO_DELETE = (1 << 16), /* delete entry during rename det. */ GIT_DIFF_FLAG__TO_SPLIT = (1 << 17), /* split entry during rename det. */ @@ -83,6 +88,12 @@ extern int git_diff__from_iterators( git_iterator *new_iter, const git_diff_options *opts); +extern int git_diff__paired_foreach( + git_diff_list *idx2head, + git_diff_list *wd2idx, + int (*cb)(git_diff_delta *i2h, git_diff_delta *w2i, void *payload), + void *payload); + int git_diff_find_similar__hashsig_for_file( void **out, const git_diff_file *f, const char *path, void *p); |