# [PATCH] diff: add --no-diff-deleted to make -p more pleasant

4 messages from 2006-01-29 to 2006-01-30. Participants: Eric Wong, Junio C Hamano, Jon Loeliger.
Thread: https://gitlist.dev/t/3175

## Eric Wong, 2006-01-29 14:24

Subject: [PATCH] diff: add --no-diff-deleted to make -p more pleasant
Message-ID: <20060129142403.GA15482@Muzzle>
URL: https://gitlist.dev/e/20060129142403.GA15482%40Muzzle

```
This is a feature I've stol^Wborrowed from svn that I find very
useful since I usually don't care to see what I've deleted.

Signed-off-by: Eric Wong <normalperson@yhbt.net>

---

 diff.c |    6 ++++++
 diff.h |    3 +++
 2 files changed, 9 insertions(+), 0 deletions(-)

0b426af15a7da4f430d9cca8c1ad057557d93627
diff --git a/diff.c b/diff.c
index f45d18c..6db3e19 100644
--- a/diff.c
+++ b/diff.c
@@ -769,6 +769,7 @@ void diff_setup(struct diff_options *opt
 {
 	memset(options, 0, sizeof(*options));
 	options->output_format = DIFF_FORMAT_RAW;
+	options->diff_deleted = 1;
 	options->line_termination = '\n';
 	options->break_opt = -1;
 	options->rename_limit = -1;
@@ -849,6 +850,8 @@ int diff_opt_parse(struct diff_options *
 	}
 	else if (!strcmp(arg, "--find-copies-harder"))
 		options->find_copies_harder = 1;
+	else if (!strcmp(arg, "--no-diff-deleted"))
+		options->diff_deleted = 0;
 	else if (!strcmp(arg, "--abbrev"))
 		options->abbrev = DEFAULT_ABBREV;
 	else if (!strncmp(arg, "--abbrev=", 9)) {
@@ -1103,6 +1106,9 @@ int diff_unmodified_pair(struct diff_fil
 
 static void diff_flush_patch(struct diff_filepair *p, struct diff_options *o)
 {
+	if (!o->diff_deleted && (p->status == DIFF_STATUS_DELETED))
+		return;
+
 	if (diff_unmodified_pair(p))
 		return;
 
diff --git a/diff.h b/diff.h
index 9a0169c..4f320ac 100644
--- a/diff.h
+++ b/diff.h
@@ -39,6 +39,7 @@ struct diff_options {
 	int find_copies_harder;
 	int line_termination;
 	int output_format;
+	int diff_deleted;
 	int pickaxe_opts;
 	int rename_score;
 	int reverse_diff;
@@ -120,6 +121,8 @@ extern void diffcore_std_no_resolve(stru
 "  -C            detect copies.\n" \
 "  --find-copies-harder\n" \
 "                try unchanged files as candidate for copy detection.\n" \
+"  --no-diff-deleted\n" \
+"                do not print patch format for deleted files\n" \
 "  -l<n>         limit rename attempts up to <n> paths.\n" \
 "  -O<file>      reorder diffs according to the <file>.\n" \
 "  -S<string>    find filepair whose only one side contains the string.\n" \
-- 
1.1.5.gae18-dirty

```

## Junio C Hamano, 2006-01-29 20:12

Subject: Re: [PATCH] diff: add --no-diff-deleted to make -p more pleasant
Message-ID: <7vy80ykd3j.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vy80ykd3j.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20060129142403.GA15482@Muzzle>

```
Eric Wong <normalperson@yhbt.net> writes:

> This is a feature I've stol^Wborrowed from svn that I find very
> useful since I usually don't care to see what I've deleted.

There is a thing called --diff-filter, and 

	git diff -p --no-diff-deleted

is equivalent to

	git diff -p --diff-filter=AM

when you are not using rename/copy detection (and a byte
shorter).  Or maybe improve its syntax to also take:

	--diff-filter=-D

That is, a minus followed by list of undesired change class
letters.

```

## Eric Wong, 2006-01-30 00:38

Subject: Re: [PATCH] diff: add --no-diff-deleted to make -p more pleasant
Message-ID: <20060130003820.GE15482@Muzzle>
URL: https://gitlist.dev/e/20060130003820.GE15482%40Muzzle
In-Reply-To: <7vy80ykd3j.fsf@assigned-by-dhcp.cox.net>

```
Junio C Hamano <junkio@cox.net> wrote:
> Eric Wong <normalperson@yhbt.net> writes:
> 
> > This is a feature I've stol^Wborrowed from svn that I find very
> > useful since I usually don't care to see what I've deleted.
> 
> There is a thing called --diff-filter, and 
> 
> 	git diff -p --no-diff-deleted
> 
> is equivalent to
> 
> 	git diff -p --diff-filter=AM

Cool, didn't notice this feature before.  Thanks.

> when you are not using rename/copy detection (and a byte
> shorter).  Or maybe improve its syntax to also take:
> 
> 	--diff-filter=-D
> 
> That is, a minus followed by list of undesired change class
> letters.

Hmm.. maybe another day.  AM is good enough for now.

-- 
Eric Wong

```

## Jon Loeliger, 2006-01-30 18:08

Subject: Re: [PATCH] diff: add --no-diff-deleted to make -p more pleasant
Message-ID: <1138644525.24410.18.camel@cashmere.sps.mot.com>
URL: https://gitlist.dev/e/1138644525.24410.18.camel%40cashmere.sps.mot.com
In-Reply-To: <7vy80ykd3j.fsf@assigned-by-dhcp.cox.net>

```
On Sun, 2006-01-29 at 14:12, Junio C Hamano wrote:
> Eric Wong <normalperson@yhbt.net> writes:
> 
> > This is a feature I've stol^Wborrowed from svn that I find very
> > useful since I usually don't care to see what I've deleted.
> 
> There is a thing called --diff-filter, and 
> 
> 	git diff -p --no-diff-deleted
> 
> is equivalent to
> 
> 	git diff -p --diff-filter=AM
> 
> when you are not using rename/copy detection (and a byte
> shorter).

Hmmm.... I think this may be the problem:

    % grep -r diff-filter Documentation/
    Documentation/git-diff.txt:$ git diff --diff-filter=MRC <1>

And that is:

    Limiting the diff output::
    +
    ------------
    $ git diff --diff-filter=MRC <1>
    $ git diff --name-status -r <2>
    $ git diff arch/i386 include/asm-i386 <3>
 
    <1> show only modification, rename and copy, but not addition
    nor deletion.
    <2> show only names and the nature of change, but not actual
    diff output.  --name-status disables usual patch generation
    which in turn also disables recursive behaviour, so without -r
    you would only see the directory name if there is a change in a
    file in a subdirectory.
    <3> limit diff output to named subtrees.

That's pretty thin documentation there.
Unless someone beats me to it, I'll try to find
a spare documentation cycle...

jdl

```
