From 5cfcd07c931e6029a77f9393309f7d0ec7cdc118 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 20 Sep 2005 23:24:39 -0700 Subject: [PATCH] Retire diff-helper. The textual diff generation with built-in '-p' in diff-* brothers has proven to be useful enough that git-diff-helper outlived its usefulness. Signed-off-by: Junio C Hamano --- .gitignore | 1 - Documentation/diff-format.txt | 3 +- Documentation/git-diff-helper.txt | 53 ---------- Documentation/git.txt | 3 - Makefile | 2 +- diff-helper.c | 154 ------------------------------ diff.c | 23 ----- diff.h | 9 -- t/t4000-diff-format.sh | 9 -- t/t4005-diff-rename-2.sh | 80 ---------------- t/t4009-diff-rename-4.sh | 80 ---------------- 11 files changed, 2 insertions(+), 415 deletions(-) delete mode 100644 Documentation/git-diff-helper.txt delete mode 100644 diff-helper.c diff --git a/.gitignore b/.gitignore index 0a876865c..e8ae8c352 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,6 @@ git-cvsimport git-daemon git-diff git-diff-files -git-diff-helper git-diff-index git-diff-stages git-diff-tree diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt index 424e75a1c..6e9fa8cdb 100644 --- a/Documentation/diff-format.txt +++ b/Documentation/diff-format.txt @@ -62,8 +62,7 @@ When "git-diff-index", "git-diff-tree", or "git-diff-files" are run with a '-p' option, they do not produce the output described above; instead they produce a patch file. -The patch generation can be customized at two levels. This -customization also applies to "git-diff-helper". +The patch generation can be customized at two levels. 1. When the environment variable 'GIT_EXTERNAL_DIFF' is not set, these commands internally invoke "diff" like this: diff --git a/Documentation/git-diff-helper.txt b/Documentation/git-diff-helper.txt deleted file mode 100644 index 047e39272..000000000 --- a/Documentation/git-diff-helper.txt +++ /dev/null @@ -1,53 +0,0 @@ -git-diff-helper(1) -================== -v0.1, May 2005 - -NAME ----- -git-diff-helper - Generates patch format output for git-diff-* - - -SYNOPSIS --------- -'git-diff-helper' [-z] [-S] [-O] - -DESCRIPTION ------------ -Reads output from "git-diff-index", "git-diff-tree" and "git-diff-files" and -generates patch format output. - -OPTIONS -------- --z:: - \0 line termination on input - --S:: - Look for differences that contains the change in . - ---pickaxe-all:: - When -S finds a change, show all the changes in that - changeset, not just the files 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 --------- -The section on generating patches in gitlink:git-diff-index[1] - - -Author ------- -Written by Junio C Hamano - - -Documentation --------------- -Documentation by David Greaves, Junio C Hamano and the git-list . - -GIT ---- -Part of the gitlink:git[7] suite - diff --git a/Documentation/git.txt b/Documentation/git.txt index 2684fa939..e14102127 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -363,9 +363,6 @@ gitlink:git-count-objects[1]:: gitlink:git-daemon[1]:: A really simple server for GIT repositories. -gitlink:git-diff-helper[1]:: - Generates patch format output for git-diff-* - gitlink:git-get-tar-commit-id[1]:: Extract commit ID from an archive created using git-tar-tree. diff --git a/Makefile b/Makefile index 1b805b004..f9ecbef6c 100644 --- a/Makefile +++ b/Makefile @@ -102,7 +102,7 @@ PROGRAMS = \ git-apply git-cat-file \ git-checkout-index git-clone-pack git-commit-tree \ git-convert-objects git-diff-files \ - git-diff-helper git-diff-index git-diff-stages \ + git-diff-index git-diff-stages \ git-diff-tree git-fetch-pack git-fsck-objects \ git-hash-object git-init-db \ git-local-fetch git-ls-files git-ls-tree git-merge-base \ diff --git a/diff-helper.c b/diff-helper.c deleted file mode 100644 index 734956e4d..000000000 --- a/diff-helper.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (C) 2005 Junio C Hamano - */ -#include "cache.h" -#include "strbuf.h" -#include "diff.h" - -static const char *pickaxe = NULL; -static int pickaxe_opts = 0; -static const char *orderfile = NULL; -static const char *diff_filter = NULL; -static int line_termination = '\n'; -static int inter_name_termination = '\t'; - -static void flush_them(int ac, const char **av) -{ - diffcore_std_no_resolve(av + 1, - pickaxe, pickaxe_opts, - orderfile, diff_filter); - diff_flush(DIFF_FORMAT_PATCH, '\n'); -} - -static const char diff_helper_usage[] = -"git-diff-helper [-z] [-O] [-S] [--pickaxe-all] [...]"; - -int main(int ac, const char **av) { - struct strbuf sb; - const char *garbage_flush_format; - - strbuf_init(&sb); - - while (1 < ac && av[1][0] == '-') { - if (av[1][1] == 'z') - line_termination = inter_name_termination = 0; - else if (av[1][1] == 'S') { - pickaxe = av[1] + 2; - } - else if (!strcmp(av[1], "--pickaxe-all")) - pickaxe_opts = DIFF_PICKAXE_ALL; - else if (!strncmp(av[1], "--diff-filter=", 14)) - diff_filter = av[1] + 14; - else if (!strncmp(av[1], "-O", 2)) - orderfile = av[1] + 2; - else - usage(diff_helper_usage); - ac--; av++; - } - garbage_flush_format = (line_termination == 0) ? "%s" : "%s\n"; - - /* the remaining parameters are paths patterns */ - - diff_setup(0); - while (1) { - unsigned old_mode, new_mode; - unsigned char old_sha1[20], new_sha1[20]; - char old_path[PATH_MAX]; - int status, score, two_paths; - char new_path[PATH_MAX]; - - int ch; - char *cp, *ep; - - read_line(&sb, stdin, line_termination); - if (sb.eof) - break; - switch (sb.buf[0]) { - case ':': - /* parse the first part up to the status */ - cp = sb.buf + 1; - old_mode = new_mode = 0; - while ((ch = *cp) && ('0' <= ch && ch <= '7')) { - old_mode = (old_mode << 3) | (ch - '0'); - cp++; - } - if (*cp++ != ' ') - break; - while ((ch = *cp) && ('0' <= ch && ch <= '7')) { - new_mode = (new_mode << 3) | (ch - '0'); - cp++; - } - if (*cp++ != ' ') - break; - if (get_sha1_hex(cp, old_sha1)) - break; - cp += 40; - if (*cp++ != ' ') - break; - if (get_sha1_hex(cp, new_sha1)) - break; - cp += 40; - if (*cp++ != ' ') - break; - status = *cp++; - if (!strchr("AMCRDU", status)) - break; - two_paths = score = 0; - if (status == DIFF_STATUS_RENAMED || - status == DIFF_STATUS_COPIED) - two_paths = 1; - - /* pick up score if exists */ - if (sscanf(cp, "%d", &score) != 1) - score = 0; - cp = strchr(cp, - inter_name_termination); - if (!cp) - break; - if (*cp++ != inter_name_termination) - break; - - /* first pathname */ - if (!line_termination) { - read_line(&sb, stdin, line_termination); - if (sb.eof) - break; - strcpy(old_path, sb.buf); - } - else if (!two_paths) - strcpy(old_path, cp); - else { - ep = strchr(cp, inter_name_termination); - if (!ep) - break; - strncpy(old_path, cp, ep-cp); - old_path[ep-cp] = 0; - cp = ep + 1; - } - - /* second pathname */ - if (!two_paths) - strcpy(new_path, old_path); - else { - if (!line_termination) { - read_line(&sb, stdin, - line_termination); - if (sb.eof) - break; - strcpy(new_path, sb.buf); - } - else - strcpy(new_path, cp); - } - diff_helper_input(old_mode, new_mode, - old_sha1, new_sha1, - old_path, status, score, - new_path); - continue; - } - flush_them(ac, av); - printf(garbage_flush_format, sb.buf); - } - flush_them(ac, av); - return 0; -} diff --git a/diff.c b/diff.c index d8d20c2fc..3dc0ca0a0 100644 --- a/diff.c +++ b/diff.c @@ -1152,29 +1152,6 @@ void diff_addremove(int addremove, unsigned mode, diff_queue(&diff_queued_diff, one, two); } -void diff_helper_input(unsigned old_mode, - unsigned new_mode, - const unsigned char *old_sha1, - const unsigned char *new_sha1, - const char *old_path, - int status, - int score, - const char *new_path) -{ - struct diff_filespec *one, *two; - struct diff_filepair *dp; - - one = alloc_filespec(old_path); - two = alloc_filespec(new_path); - if (old_mode) - fill_filespec(one, old_sha1, old_mode); - if (new_mode) - fill_filespec(two, new_sha1, new_mode); - dp = diff_queue(&diff_queued_diff, one, two); - dp->score = score * MAX_SCORE / 100; - dp->status = status; -} - void diff_change(unsigned old_mode, unsigned new_mode, const unsigned char *old_sha1, const unsigned char *new_sha1, diff --git a/diff.h b/diff.h index 3deb7fa4e..96c2312d8 100644 --- a/diff.h +++ b/diff.h @@ -19,15 +19,6 @@ extern void diff_change(unsigned mode1, unsigned mode2, 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); diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh index 91015d76f..f3b6330a9 100755 --- a/t/t4000-diff-format.sh +++ b/t/t4000-diff-format.sh @@ -50,13 +50,4 @@ test_expect_success \ 'validate git-diff-files -p output.' \ 'cmp -s current expected' -test_expect_success \ - 'build same diff using git-diff-helper.' \ - 'git-diff-files -z | git-diff-helper -z >current' - - -test_expect_success \ - 'validate git-diff-helper output.' \ - 'cmp -s current expected' - test_done diff --git a/t/t4005-diff-rename-2.sh b/t/t4005-diff-rename-2.sh index 5636f4f2c..684fd23a4 100755 --- a/t/t4005-diff-rename-2.sh +++ b/t/t4005-diff-rename-2.sh @@ -40,38 +40,6 @@ test_expect_success \ 'validate output from rename/copy detection (#1)' \ 'compare_diff_raw current expected' -# make sure diff-helper can grok it. -mv expected diff-raw -GIT_DIFF_OPTS=--unified=0 git-diff-helper current -cat >expected <<\EOF -diff --git a/COPYING b/COPYING.1 -copy from COPYING -copy to COPYING.1 ---- a/COPYING -+++ b/COPYING.1 -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ However, in order to allow a migration to GPLv3 if that seems like -diff --git a/COPYING b/COPYING.2 -rename from COPYING -rename to COPYING.2 ---- a/COPYING -+++ b/COPYING.2 -@@ -2 +2 @@ -- Note that the only valid version of the GPL as far as this project -+ Note that the only valid version of the G.P.L as far as this project -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ HOWEVER, in order to allow a migration to G.P.Lv3 if that seems like -@@ -12 +12 @@ -- This file is licensed under the GPL v2, or a later version -+ This file is licensed under the G.P.L v2, or a later version -EOF - -test_expect_success \ - 'validate output from diff-helper (#1)' \ - 'compare_diff_patch current expected' - ################################################################ test_expect_success \ @@ -94,36 +62,6 @@ test_expect_success \ 'validate output from rename/copy detection (#2)' \ 'compare_diff_raw current expected' -# make sure diff-helper can grok it. -mv expected diff-raw -GIT_DIFF_OPTS=--unified=0 git-diff-helper current -cat >expected <<\EOF -diff --git a/COPYING b/COPYING ---- a/COPYING -+++ b/COPYING -@@ -2 +2 @@ -- Note that the only valid version of the GPL as far as this project -+ Note that the only valid version of the G.P.L as far as this project -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ HOWEVER, in order to allow a migration to G.P.Lv3 if that seems like -@@ -12 +12 @@ -- This file is licensed under the GPL v2, or a later version -+ This file is licensed under the G.P.L v2, or a later version -diff --git a/COPYING b/COPYING.1 -copy from COPYING -copy to COPYING.1 ---- a/COPYING -+++ b/COPYING.1 -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ However, in order to allow a migration to GPLv3 if that seems like -EOF - -test_expect_success \ - 'validate output from diff-helper (#2)' \ - 'compare_diff_patch current expected' - ################################################################ # tree has COPYING and rezrov. work tree has the same COPYING and @@ -145,22 +83,4 @@ test_expect_success \ 'validate output from rename/copy detection (#3)' \ 'compare_diff_raw current expected' -# make sure diff-helper can grok it. -mv expected diff-raw -GIT_DIFF_OPTS=--unified=0 git-diff-helper current -cat >expected <<\EOF -diff --git a/COPYING b/COPYING.1 -copy from COPYING -copy to COPYING.1 ---- a/COPYING -+++ b/COPYING.1 -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ However, in order to allow a migration to GPLv3 if that seems like -EOF - -test_expect_success \ - 'validate output from diff-helper (#3)' \ - 'compare_diff_patch current expected' - test_done diff --git a/t/t4009-diff-rename-4.sh b/t/t4009-diff-rename-4.sh index ea811529c..2f2f8b121 100755 --- a/t/t4009-diff-rename-4.sh +++ b/t/t4009-diff-rename-4.sh @@ -44,38 +44,6 @@ test_expect_success \ 'validate output from rename/copy detection (#1)' \ 'compare_diff_raw_z current expected' -# make sure diff-helper can grok it. -mv current diff-raw -GIT_DIFF_OPTS=--unified=0 git-diff-helper -z current -cat >expected <<\EOF -diff --git a/COPYING b/COPYING.1 -copy from COPYING -copy to COPYING.1 ---- a/COPYING -+++ b/COPYING.1 -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ However, in order to allow a migration to GPLv3 if that seems like -diff --git a/COPYING b/COPYING.2 -rename from COPYING -rename to COPYING.2 ---- a/COPYING -+++ b/COPYING.2 -@@ -2 +2 @@ -- Note that the only valid version of the GPL as far as this project -+ Note that the only valid version of the G.P.L as far as this project -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ HOWEVER, in order to allow a migration to G.P.Lv3 if that seems like -@@ -12 +12 @@ -- This file is licensed under the GPL v2, or a later version -+ This file is licensed under the G.P.L v2, or a later version -EOF - -test_expect_success \ - 'validate output from diff-helper (#1)' \ - 'compare_diff_patch current expected' - ################################################################ test_expect_success \ @@ -101,36 +69,6 @@ test_expect_success \ 'validate output from rename/copy detection (#2)' \ 'compare_diff_raw_z current expected' -# make sure diff-helper can grok it. -mv current diff-raw -GIT_DIFF_OPTS=--unified=0 git-diff-helper -z current -cat >expected <<\EOF -diff --git a/COPYING b/COPYING ---- a/COPYING -+++ b/COPYING -@@ -2 +2 @@ -- Note that the only valid version of the GPL as far as this project -+ Note that the only valid version of the G.P.L as far as this project -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ HOWEVER, in order to allow a migration to G.P.Lv3 if that seems like -@@ -12 +12 @@ -- This file is licensed under the GPL v2, or a later version -+ This file is licensed under the G.P.L v2, or a later version -diff --git a/COPYING b/COPYING.1 -copy from COPYING -copy to COPYING.1 ---- a/COPYING -+++ b/COPYING.1 -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ However, in order to allow a migration to GPLv3 if that seems like -EOF - -test_expect_success \ - 'validate output from diff-helper (#2)' \ - 'compare_diff_patch current expected' - ################################################################ # tree has COPYING and rezrov. work tree has the same COPYING and @@ -154,22 +92,4 @@ test_expect_success \ 'validate output from rename/copy detection (#3)' \ 'compare_diff_raw_z current expected' -# make sure diff-helper can grok it. -mv current diff-raw -GIT_DIFF_OPTS=--unified=0 git-diff-helper -z current -cat >expected <<\EOF -diff --git a/COPYING b/COPYING.1 -copy from COPYING -copy to COPYING.1 ---- a/COPYING -+++ b/COPYING.1 -@@ -6 +6 @@ -- HOWEVER, in order to allow a migration to GPLv3 if that seems like -+ However, in order to allow a migration to GPLv3 if that seems like -EOF - -test_expect_success \ - 'validate output from diff-helper (#3)' \ - 'compare_diff_patch current expected' - test_done -- 2.26.2