X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=diff-stages.c;h=2e9c0bce6e8a5019b85f2cb0683e0ca120699bfd;hb=dd53c7ab297cc491eb5164198e63d670c7b48530;hp=4b87c8ef7b17b19ca4f018dbb77b2e78aa7902af;hpb=9939664a0bbd58373095cfb534c6f0191be656a6;p=git.git diff --git a/diff-stages.c b/diff-stages.c index 4b87c8ef..2e9c0bce 100644 --- a/diff-stages.c +++ b/diff-stages.c @@ -5,8 +5,10 @@ #include "cache.h" #include "diff.h" -static int diff_output_format = DIFF_FORMAT_HUMAN; +static int diff_output_format = DIFF_FORMAT_RAW; +static int diff_line_termination = '\n'; static int detect_rename = 0; +static int find_copies_harder = 0; static int diff_setup_opt = 0; static int diff_score_opt = 0; static const char *pickaxe = NULL; @@ -15,8 +17,9 @@ static int diff_break_opt = -1; static const char *orderfile = NULL; static const char *diff_filter = NULL; -static char *diff_stages_usage = -"git-diff-stages [-p] [-r] [-z] [-M] [-C] [-R] [-S] [-O] [...]"; +static const char diff_stages_usage[] = +"git-diff-stages [] [...]" +COMMON_DIFF_OPTIONS_HELP; static void diff_stages(int stage1, int stage2) { @@ -50,9 +53,10 @@ static void diff_stages(int stage1, int stage2) diff_addremove('-', ntohl(one->ce_mode), one->sha1, name, NULL); else if (memcmp(one->sha1, two->sha1, 20) || - (one->ce_mode != two->ce_mode)) - diff_change(ntohl(one->ce_mode), ntohl(two->ce_mode), - one->sha1, two->sha1, name, NULL); + (one->ce_mode != two->ce_mode) || + find_copies_harder) + diff_change(ntohl(one->ce_mode), ntohl(two->ce_mode), + one->sha1, two->sha1, name, NULL); } } @@ -65,7 +69,7 @@ int main(int ac, const char **av) const char *arg = av[1]; if (!strcmp(arg, "-r")) ; /* as usual */ - else if (!strcmp(arg, "-p")) + else if (!strcmp(arg, "-p") || !strcmp(arg, "-u")) diff_output_format = DIFF_FORMAT_PATCH; else if (!strncmp(arg, "-B", 2)) { if ((diff_break_opt = diff_scoreopt_parse(arg)) == -1) @@ -81,8 +85,12 @@ int main(int ac, const char **av) if ((diff_score_opt = diff_scoreopt_parse(arg)) == -1) usage(diff_stages_usage); } + else if (!strcmp(arg, "--find-copies-harder")) + find_copies_harder = 1; else if (!strcmp(arg, "-z")) - diff_output_format = DIFF_FORMAT_MACHINE; + diff_line_termination = 0; + else if (!strcmp(arg, "--name-only")) + diff_output_format = DIFF_FORMAT_NAME; else if (!strcmp(arg, "-R")) diff_setup_opt |= DIFF_SETUP_REVERSE; else if (!strncmp(arg, "-S", 2)) @@ -102,7 +110,8 @@ int main(int ac, const char **av) sscanf(av[1], "%d", &stage1) != 1 || ! (0 <= stage1 && stage1 <= 3) || sscanf(av[2], "%d", &stage2) != 1 || - ! (0 <= stage2 && stage2 <= 3)) + ! (0 <= stage2 && stage2 <= 3) || + (find_copies_harder && detect_rename != DIFF_DETECT_COPY)) usage(diff_stages_usage); av += 3; /* The rest from av[0] are for paths restriction. */ @@ -116,6 +125,6 @@ int main(int ac, const char **av) diff_break_opt, orderfile, diff_filter); - diff_flush(diff_output_format); + diff_flush(diff_output_format, diff_line_termination); return 0; }