Browse Source

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 <junkio@cox.net>
maint
Junio C Hamano 20 years ago
parent
commit
5cfcd07c93
  1. 1
      .gitignore
  2. 3
      Documentation/diff-format.txt
  3. 53
      Documentation/git-diff-helper.txt
  4. 3
      Documentation/git.txt
  5. 2
      Makefile
  6. 154
      diff-helper.c
  7. 23
      diff.c
  8. 9
      diff.h
  9. 9
      t/t4000-diff-format.sh
  10. 80
      t/t4005-diff-rename-2.sh
  11. 80
      t/t4009-diff-rename-4.sh

1
.gitignore vendored

@ -20,7 +20,6 @@ git-cvsimport @@ -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

3
Documentation/diff-format.txt

@ -62,8 +62,7 @@ When "git-diff-index", "git-diff-tree", or "git-diff-files" are run @@ -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:

53
Documentation/git-diff-helper.txt

@ -1,53 +0,0 @@ @@ -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<string>] [-O<orderfile>]

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<string>::
Look for differences that contains the change in <string>.

--pickaxe-all::
When -S finds a change, show all the changes in that
changeset, not just the files that contains the change
in <string>.

-O<orderfile>::
Output the patch in the order specified in the
<orderfile>, 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 <junkio@cox.net>


Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

3
Documentation/git.txt

@ -363,9 +363,6 @@ gitlink:git-count-objects[1]:: @@ -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.


2
Makefile

@ -102,7 +102,7 @@ PROGRAMS = \ @@ -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 \

154
diff-helper.c

@ -1,154 +0,0 @@ @@ -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<orderfile>] [-S<string>] [--pickaxe-all] [<path>...]";

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;
}

23
diff.c

@ -1152,29 +1152,6 @@ void diff_addremove(int addremove, unsigned mode, @@ -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,

9
diff.h

@ -19,15 +19,6 @@ extern void diff_change(unsigned mode1, unsigned mode2, @@ -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);

9
t/t4000-diff-format.sh

@ -50,13 +50,4 @@ test_expect_success \ @@ -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

80
t/t4005-diff-rename-2.sh

@ -40,38 +40,6 @@ test_expect_success \ @@ -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 <diff-raw >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 \ @@ -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 <diff-raw >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 \ @@ -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 <diff-raw >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

80
t/t4009-diff-rename-4.sh

@ -44,38 +44,6 @@ test_expect_success \ @@ -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 <diff-raw >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 \ @@ -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 <diff-raw >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 \ @@ -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 <diff-raw >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

Loading…
Cancel
Save