From ce24067549a8554b214e723d7aa4bc063c54409e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 3 Jun 2005 01:36:43 -0700 Subject: [PATCH] [PATCH] diff: Fix docs and add -O to diff-helper. This patch updates diff documentation and usage strings: - clarify the semantics of -R. It is not "output in reverse"; rather, it is "I will feed diff backwards". Semantically they are different when -C is involved. - describe -O in usage strings of diff-* brothers. It was implemented, documented but not described in usage text. Also it adds -O to diff-helper. Like -S (and unlike -M/-C/-B), this option can work on sanitized diff-raw output produced by the diff-* brothers. While we are at it, the call it makes to diffcore is cleaned up to use the diffcore_std() like everybody else, and the declaration for the low level diffcore routines are moved from diff.h (public) to diffcore.h (private between diff.c and diffcore backends). Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds --- Documentation/git-diff-cache.txt | 3 ++- Documentation/git-diff-files.txt | 3 ++- Documentation/git-diff-helper.txt | 5 ++++- Documentation/git-diff-tree.txt | 2 +- diff-cache.c | 2 +- diff-files.c | 2 +- diff-helper.c | 25 ++++++++++++++----------- diff-tree.c | 2 +- diff.h | 10 +--------- diffcore.h | 6 ++++++ 10 files changed, 33 insertions(+), 27 deletions(-) diff --git a/Documentation/git-diff-cache.txt b/Documentation/git-diff-cache.txt index 9c7832f6e..14041f3df 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 8439355b0..58137b3b9 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 90342c912..29c5967d1 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 9e038856e..762546bfe 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 2aaf16a39..8e5f72bf3 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 3b05497a8..a425112c9 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 c9e287f65..04e6f2cd7 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 a6d358fb3..c3a5617c5 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 3fcf7010e..c64880cdb 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 1f4b32c1c..2e613ebe8 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 *); -- 2.26.2