f0c6b2a2fd
This attempts to optimize "diff-tree -[CM] --stdin", which compares successible tree pairs. This optimization does not make much sense for other commands in the diff-* brothers. When reading from --stdin and using rename/copy detection, the patch makes diff-tree to read the current index file first. This is done to reuse the optimization used by diff-cache in the non-cached case. Similarity estimator can avoid expanding a blob if the index says what is in the work tree has an exact copy of that blob already expanded. Another optimization the patch makes is to check only file sizes first to terminate similarity estimation early. In order for this to work, it needs a way to tell the size of the blob without expanding it. Since an obvious way of doing it, which is to keep all the blobs previously used in the memory, is too costly, it does so by keeping the filesize for each object it has already seen in memory. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2005 Junio C Hamano
|
|
*/
|
|
#ifndef DIFF_H
|
|
#define DIFF_H
|
|
|
|
extern void diff_addremove(int addremove,
|
|
unsigned mode,
|
|
const unsigned char *sha1,
|
|
const char *base,
|
|
const char *path);
|
|
|
|
extern void diff_change(unsigned mode1, unsigned mode2,
|
|
const unsigned char *sha1,
|
|
const unsigned char *sha2,
|
|
const char *base, const char *path);
|
|
|
|
extern void diff_helper_input(unsigned mode1,
|
|
unsigned mode2,
|
|
const unsigned char *sha1,
|
|
const unsigned char *sha2,
|
|
const char *path1,
|
|
int status,
|
|
int score,
|
|
const char *path2);
|
|
|
|
extern void diff_unmerge(const char *path);
|
|
|
|
extern int diff_scoreopt_parse(const char *opt);
|
|
|
|
#define DIFF_SETUP_REVERSE 1
|
|
#define DIFF_SETUP_USE_CACHE 2
|
|
#define DIFF_SETUP_USE_SIZE_CACHE 4
|
|
extern void diff_setup(int flags);
|
|
|
|
#define DIFF_DETECT_RENAME 1
|
|
#define DIFF_DETECT_COPY 2
|
|
|
|
extern void diffcore_rename(int rename_copy, int minimum_score);
|
|
|
|
#define DIFF_PICKAXE_ALL 1
|
|
extern void diffcore_pickaxe(const char *needle, int opts);
|
|
|
|
extern void diffcore_pathspec(const char **pathspec);
|
|
|
|
extern int diff_queue_is_empty(void);
|
|
|
|
#define DIFF_FORMAT_HUMAN 0
|
|
#define DIFF_FORMAT_MACHINE 1
|
|
#define DIFF_FORMAT_PATCH 2
|
|
#define DIFF_FORMAT_NO_OUTPUT 3
|
|
|
|
extern void diff_flush(int output_style, int resolve_rename_copy);
|
|
|
|
#endif /* DIFF_H */
|