diff --git a/Documentation/git-diff-cache.txt b/Documentation/git-diff-cache.txt index 9c7832f6e2..14041f3df8 100644 --- a/Documentation/git-diff-cache.txt +++ b/Documentation/git-diff-cache.txt @@ -57,7 +57,8 @@ OPTIONS , which has one shell glob pattern per line. -R:: - Output diff in reverse. + Swap two inputs; that is, show differences from cache or + on-disk file to tree contents. --cached:: do not consider the on-disk file at all diff --git a/Documentation/git-diff-files.txt b/Documentation/git-diff-files.txt index 8439355b06..58137b3b9e 100644 --- a/Documentation/git-diff-files.txt +++ b/Documentation/git-diff-files.txt @@ -27,7 +27,8 @@ OPTIONS Remain silent even on nonexisting files -R:: - Output diff in reverse. + Swap two inputs; that is, show differences from on-disk files + to cache contents. -B:: Break complete rewrite changes into pairs of delete and create. diff --git a/Documentation/git-diff-helper.txt b/Documentation/git-diff-helper.txt index 90342c9125..29c5967d13 100644 --- a/Documentation/git-diff-helper.txt +++ b/Documentation/git-diff-helper.txt @@ -9,7 +9,7 @@ git-diff-helper - Generates patch format output for git-diff-* SYNOPSIS -------- -'git-diff-helper' [-z] [-S] +'git-diff-helper' [-z] [-S] [-O] DESCRIPTION ----------- @@ -24,6 +24,9 @@ OPTIONS -S:: Look for differences that contains the change in . +-O:: + Output the patch in the order specified in the + , which has one shell glob pattern per line. See Also -------- diff --git a/Documentation/git-diff-tree.txt b/Documentation/git-diff-tree.txt index 9e038856e3..762546bfe9 100644 --- a/Documentation/git-diff-tree.txt +++ b/Documentation/git-diff-tree.txt @@ -43,7 +43,7 @@ OPTIONS Detect copies as well as renames. -R:: - Output diff in reverse. + Swap two input trees. -S:: Look for differences that contains the change in . diff --git a/diff-cache.c b/diff-cache.c index 2aaf16a39d..8e5f72bf3f 100644 --- a/diff-cache.c +++ b/diff-cache.c @@ -157,7 +157,7 @@ static void mark_merge_entries(void) } static char *diff_cache_usage = -"git-diff-cache [-p] [-r] [-z] [-m] [-M] [-C] [-R] [-S] [--cached] [...]"; +"git-diff-cache [-p] [-r] [-z] [-m] [-M] [-C] [-R] [-S] [-O] [--cached] [...]"; int main(int argc, const char **argv) { diff --git a/diff-files.c b/diff-files.c index 3b05497a85..a425112c9e 100644 --- a/diff-files.c +++ b/diff-files.c @@ -7,7 +7,7 @@ #include "diff.h" static const char *diff_files_usage = -"git-diff-files [-p] [-q] [-r] [-z] [-M] [-C] [-R] [-S] [paths...]"; +"git-diff-files [-p] [-q] [-r] [-z] [-M] [-C] [-R] [-S] [-O] [paths...]"; static int diff_output_format = DIFF_FORMAT_HUMAN; static int detect_rename = 0; diff --git a/diff-helper.c b/diff-helper.c index c9e287f652..04e6f2cd72 100644 --- a/diff-helper.c +++ b/diff-helper.c @@ -7,11 +7,22 @@ static const char *pickaxe = NULL; static int pickaxe_opts = 0; +static const char *orderfile = NULL; static int line_termination = '\n'; static int inter_name_termination = '\t'; +static void flush_them(int ac, const char **av) +{ + diffcore_std(av + 1, + 0, 0, /* no renames */ + pickaxe, pickaxe_opts, + -1, /* no breaks */ + orderfile); + diff_flush(DIFF_FORMAT_PATCH, 0); +} + static const char *diff_helper_usage = - "git-diff-helper [-z] [-S] paths..."; + "git-diff-helper [-z] [-S] [-O] paths..."; int main(int ac, const char **av) { struct strbuf sb; @@ -131,17 +142,9 @@ int main(int ac, const char **av) { new_path); continue; } - if (1 < ac) - diffcore_pathspec(av + 1); - if (pickaxe) - diffcore_pickaxe(pickaxe, pickaxe_opts); - diff_flush(DIFF_FORMAT_PATCH, 0); + flush_them(ac, av); printf(garbage_flush_format, sb.buf); } - if (1 < ac) - diffcore_pathspec(av + 1); - if (pickaxe) - diffcore_pickaxe(pickaxe, pickaxe_opts); - diff_flush(DIFF_FORMAT_PATCH, 0); + flush_them(ac, av); return 0; } diff --git a/diff-tree.c b/diff-tree.c index a6d358fb34..c3a5617c57 100644 --- a/diff-tree.c +++ b/diff-tree.c @@ -397,7 +397,7 @@ static int diff_tree_stdin(char *line) } static char *diff_tree_usage = -"git-diff-tree [-p] [-r] [-z] [--stdin] [-M] [-C] [-R] [-S] [-m] [-s] [-v] [-t] "; +"git-diff-tree [-p] [-r] [-z] [--stdin] [-M] [-C] [-R] [-S] [-O] [-m] [-s] [-v] [-t] "; int main(int argc, const char **argv) { diff --git a/diff.h b/diff.h index 3fcf7010e3..c64880cdb1 100644 --- a/diff.h +++ b/diff.h @@ -35,21 +35,13 @@ 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 void diffcore_order(const char *orderfile); - -extern void diffcore_break(int max_score); extern void diffcore_std(const char **paths, int detect_rename, int rename_score, diff --git a/diffcore.h b/diffcore.h index 1f4b32c1c1..2e613ebe89 100644 --- a/diffcore.h +++ b/diffcore.h @@ -73,6 +73,12 @@ extern struct diff_filepair *diff_queue(struct diff_queue_struct *, struct diff_filespec *); extern void diff_q(struct diff_queue_struct *, struct diff_filepair *); +extern void diffcore_pathspec(const char **pathspec); +extern void diffcore_break(int); +extern void diffcore_rename(int rename_copy, int); +extern void diffcore_pickaxe(const char *needle, int opts); +extern void diffcore_order(const char *orderfile); + #define DIFF_DEBUG 0 #if DIFF_DEBUG void diff_debug_filespec(struct diff_filespec *, int, const char *);