summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2012-11-20 10:03:12 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2012-11-20 10:03:12 -0800
commit35cae74c4d38b79ca80f6e62761f64fa67e8e609 (patch)
treed6c8286f4dbe8346ab81d4e198b6cf7367b4ee84
parentMerge branch 'js/format-2047' into maint (diff)
parentdiff_grep: use textconv buffers for add/deleted files (diff)
downloadtgif-35cae74c4d38b79ca80f6e62761f64fa67e8e609.tar.xz
Merge branch 'jk/maint-diff-grep-textconv' into maint
"git diff -G<pattern>" did not honor textconv filter when looking for changes. * jk/maint-diff-grep-textconv: diff_grep: use textconv buffers for add/deleted files
-rw-r--r--diffcore-pickaxe.c4
-rwxr-xr-xt/t4030-diff-textconv.sh12
2 files changed, 14 insertions, 2 deletions
diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c
index ed23eb4bdd..a209376354 100644
--- a/diffcore-pickaxe.c
+++ b/diffcore-pickaxe.c
@@ -104,10 +104,10 @@ static int diff_grep(struct diff_filepair *p, struct diff_options *o,
if (!mf2.ptr)
return 0; /* ignore unmerged */
/* created "two" -- does it have what we are looking for? */
- hit = !regexec(regexp, p->two->data, 1, &regmatch, 0);
+ hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0);
} else if (!mf2.ptr) {
/* removed "one" -- did it have what we are looking for? */
- hit = !regexec(regexp, p->one->data, 1, &regmatch, 0);
+ hit = !regexec(regexp, mf1.ptr, 1, &regmatch, 0);
} else {
/*
* We have both sides; need to run textual diff and see if
diff --git a/t/t4030-diff-textconv.sh b/t/t4030-diff-textconv.sh
index eebb1eed8b..461d27ac20 100755
--- a/t/t4030-diff-textconv.sh
+++ b/t/t4030-diff-textconv.sh
@@ -84,6 +84,18 @@ test_expect_success 'status -v produces text' '
git reset --soft HEAD@{1}
'
+test_expect_success 'grep-diff (-G) operates on textconv data (add)' '
+ echo one >expect &&
+ git log --root --format=%s -G0 >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'grep-diff (-G) operates on textconv data (modification)' '
+ echo two >expect &&
+ git log --root --format=%s -G1 >actual &&
+ test_cmp expect actual
+'
+
cat >expect.stat <<'EOF'
file | Bin 2 -> 4 bytes
1 file changed, 0 insertions(+), 0 deletions(-)