From: "Sam Liddicott" <sam@liddicott.com>
To: git@vger.kernel.org
Subject: Re: let git-diff allow patch to delete empty files?
Date: Wed, 05 Nov 2008 14:49:59 -0000 [thread overview]
Message-ID: <4911B297.2070800@liddicott.com> (raw)
In-Reply-To: 49118FEE.30408@liddicott.com
[-- Attachment #1: Type: text/plain, Size: 804 bytes --]
* Sam Liddicott wrote, On 05/11/08 12:22:
> In some cases "patch" cannot apply diff's generated using git-diff, I've
> had a "git diff" output look like this when an empty file was removed as
> the only change:
>
> ..
> However this equivalent pair works by making the file non-empty and then
> deleting it.
>
> diff -Nru 1/here 2/here
> --- 1/here 2008-11-05 09:43:55.000000000 +0000
> +++ 2/here 2008-11-05 09:43:58.000000000 +0000
> @@ -0,0 +1 @@
> +
> diff -Nru 1/here 2/here
> --- 1/here 2008-11-05 09:37:23.000000000 +0000
> +++ 2/here 1970-01-01 01:00:00.000000000 +0100
> @@ -1 +0,0 @@
> -
>
The same problem occurs with new empty files.
Attached is an awk filter which will expand out these git notes into the
2-part unified diff's.
It would be nicer if git did it natively.
Sam
[-- Attachment #2: git-new-delete-filter.awk --]
[-- Type: text/plain, Size: 1430 bytes --]
#! /usr/bin/awk -f
function do_empty() {
if (diff!="" && deleted!="" && indx!="") {
printf("Make patch give the file 1 line\n");
printf("--- %s\n",diff);
printf("+++ %s\n",diff);
printf("@@ -0,0 +1 @@\n+\n");
printf("Make patch delete the 1 line file\n");
printf("--- %s\t\n",diff);
printf("+++ /dev/null\t1970-01-01 01:00:00.000000000\n");
printf("@@ -1 +0,0 @@\n-\n");
}
if (diff!="" && created!="" && indx!="") {
printf("Make patch create the file with 1 line\n");
printf("--- %s\n",diff);
printf("+++ %s\n",diff);
printf("@@ -0,0 +1 @@\n+\n");
printf("Make patch create delete the line but keep the file\n");
printf("--- %s\n",diff);
printf("+++ %s\n",diff);
printf("@@ -1 +0,0 @@\n-\n");
}
no_empty();
}
function no_empty() {
diff="";
deleted="";
created="";
indx="";
}
{
if (in_hunk > 0) in_hunk--;
}
/^diff --git / {
do_empty();
if (! in_hunk) diff=$3;
}
/^deleted file mode / {
if (! in_hunk && diff!="") deleted=$0;
}
/^new file mode / {
if (! in_hunk && diff!="") created=$0;
}
/^index / {
if (! in_hunk && diff!="") indx=$0;
}
/^--- / {
no_empty();
}
/^@@ / {
# read the hunk size
p=index($2,",");
if (p==0) c1=1;
else c1=strtonum(substr($2, p+1));
p=index($3,",");
if (p==0) in_hunk=1;
else in_hunk=strtonum(substr($2, p+1));
if (c1 > in_hunk) in_hunk=c1;
}
{
print;
}
END {
do_empty();
}
next prev parent reply other threads:[~2008-11-05 14:51 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-05 12:22 let git-diff allow patch to delete empty files? Sam Liddicott
2008-11-05 14:49 ` Sam Liddicott [this message]
2008-11-05 21:09 ` Nanako Shiraishi
2008-11-06 8:30 ` Sam Liddicott
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4911B297.2070800@liddicott.com \
--to=sam@liddicott.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox