From: Junio C Hamano <gitster@pobox.com>
To: Clemens Buchacher <drizzd@aon.at>
Cc: "Shawn O. Pearce" <spearce@spearce.org>, git@vger.kernel.org
Subject: Re: [PATCH] git gui: show diffs with a minimum of 1 context line
Date: Sat, 30 Aug 2008 10:19:14 -0700 [thread overview]
Message-ID: <7vtzd2ifot.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20080830164527.GA25370@localhost> (Clemens Buchacher's message of "Sat, 30 Aug 2008 18:45:27 +0200")
Clemens Buchacher <drizzd@aon.at> writes:
> git apply does not handle diffs without context correctly.
NAK on this part of the proposed commit log message.
"git-apply" is more anal than other "patch" implementations in that it
tries to make sure that a hunk that touches the trailing end actually
applies to the trailing end of the file. If a patch is generated with
non-zero context, we can detect by presense of trailing context lines that
a patch is _not_ about modifying the trailing end, but with a -U0 patch,
every hunk will come without trailing context, so you need to disable that
safety by asking for --unidiff-zero option.
> ... Configuring git
> gui to show zero context lines therefore breaks staging.
So another option might be to pass --unidiff-zero iff/when it is feeding
such a patch to fix this particular "user error" of "git-apply" program.
Having said that,
> In reply to this patch I will send a first attempt at fixing this problem
> instead of avoiding it.
I suspect there are some things "git-apply" should be able to _figure out_
that the user is giving it a -U0 patch and automatically flip unidiff_zero
option on. For example, if the _first_ hunk of a patch does not begin
with "@@ -0,0 +N,M @@" nor with "@@ -1,L +N,M @@" (i.e. the hunk claims to
apply not at the beginning) and the hunk does not have leading context
lines, _and_ if that first hunk does not have trailing context lines, then
it is clearly a -U0 patch (or it could be a corrupt patch, but let's
discount that possibility for now).
Even if the hunk does claim to apply at the beginning, in which case we
cannot determine if it is a -U0 patch by looking at the lack of leading
context, if it has any context lines, we can tell it is _not_ a -U0 patch.
When the first hunk that applies to the beginning lacks any context, we
cannot really tell if it is -U0 or not (the other possibility is a total
rewrite of the file from the beginning to the end). Even in that case,
you could look at the next hunk --- if you have a hunk that applies to
the same path after looking at such a "first" hunk without context, then
it clearly is a -U0 patch.
next prev parent reply other threads:[~2008-08-30 17:20 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-30 16:45 [PATCH] git gui: show diffs with a minimum of 1 context line Clemens Buchacher
2008-08-30 16:56 ` [PATCH] git gui: use apply --unidiff-zero when staging hunks without context Clemens Buchacher
2008-08-30 17:53 ` Junio C Hamano
2008-08-30 19:03 ` [PATCH] git apply: do not match beginning in special unidiff-zero case Clemens Buchacher
2008-08-30 19:54 ` Junio C Hamano
2008-08-30 19:40 ` [PATCH] git-apply: Loosen "match_beginning" logic Junio C Hamano
2008-08-30 19:43 ` [PATCH] git gui: use apply --unidiff-zero when staging hunks without context Johannes Sixt
2008-08-30 20:27 ` Clemens Buchacher
2008-08-30 20:52 ` Junio C Hamano
2008-08-30 21:00 ` Clemens Buchacher
2008-09-01 19:40 ` Shawn O. Pearce
2008-08-30 17:19 ` Junio C Hamano [this message]
2008-08-30 17:30 ` [PATCH] git gui: show diffs with a minimum of 1 context line Junio C Hamano
2008-08-30 20:46 ` Clemens Buchacher
2008-09-01 19:33 ` Shawn O. Pearce
2008-09-01 19:41 ` Clemens Buchacher
2008-09-01 19:47 ` Shawn O. Pearce
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=7vtzd2ifot.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=drizzd@aon.at \
--cc=git@vger.kernel.org \
--cc=spearce@spearce.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.