From: Johannes Sixt <j.sixt@viscovery.net>
To: Jeff King <peff@peff.net>
Cc: Matthieu Moy <Matthieu.Moy@imag.fr>, git@vger.kernel.org
Subject: Re: [PATCH 3/4] diff: introduce diff.<driver>.binary
Date: Tue, 07 Oct 2008 17:54:52 +0200 [thread overview]
Message-ID: <48EB864C.6020000@viscovery.net> (raw)
In-Reply-To: <20081007153543.GA26531@coredump.intra.peff.net>
Jeff King schrieb:
> On Tue, Oct 07, 2008 at 05:17:08PM +0200, Johannes Sixt wrote:
>
>>> However, there is at least one conflicting situation: there
>>> is no way to say "use the regular rules to determine whether
>>> this file is binary, but if we do diff it textually, use
>>> this funcname pattern." That is, currently setting diff=foo
>>> indicates that the file is definitely text.
>> I don't get your point. Can you provide an example?
>
> Let's say I have a subdirectory of files, some of which are binary. But
> for those that _aren't_ binary, I want to use a particular funcname
> pattern. So I do this:
>
> echo '* diff=foo' >subdir/.gitattributes
> git config diff.foo.funcname some-regex
>
> Under the old behavior, I have just claimed all of the subdir as text.
> But that's not necessarily what I wanted.
No, you claimed that all of the files are of type "foo". If this is not
what you wanted, be more specific.
> In practice, this doesn't happen much, because funcname tends to follow
> the file extension, as does binary-ness. So you get "*.java diff=java",
> and you really would be insane to have binary files named *.java. But I
> think it makes the concept clearer to explain, and the code simpler, if
> the various facets of a diff driver are orthogonal. In particular, I
> think this makes things cleaner for adding new driver properties in the
> future.
I tend to disagree. "Binaryness" is subordinate to the "type" of the file,
which is what the diff attribute basically specifies.
> As to your complaint (which I think is valid)...
>
>> The reason why I'd like to understand the issue is because I like the
>> diff.foo.textconv that you introduce in patch 4/4, but I dislike that I
>> have to set diff.foo.binary to false in order to use the textconv. So, why
>> is this .binary needed?
>
> I think this .binary is something we can and should get rid of; as it
> stands now, you always end up having to set it along with .textconv. I
> have considered two ways:
>
> - because textconv is for converting binary to text for diffing, the
> result should always be text. So whenever we do the conversion, we
> should note that it is no longer binary, and automatically treat the
> result as a text diff. So in this case, we are explicitly saying
> that binaryness is _not_ orthogonal to this property of the diff
> driver.
>
> - textconv should arguably just be "canonicalize" or similar. That is,
> there is no reason you couldn't take something like text XML and
> canonicalize it for a more readable diff. Or even canonicalize a
> binary file to get a smaller or more sensible binary diff, if you
> wanted to.
>
> In that case, I think the right thing is to set it back to "unknown,
> check the file contents" if .binary is not set. So you really are
> saying "this is just a conversion, treat the canonicalized contents
> exactly as you would have treated the actual contents, including
> binary detection magic".
I see your point. But this second item goes too far, in particular,
canonicalizing binary files to some other binary form is certainly not
something that should happen under 'git diff' porcelain. (We already have
clean/smudge filters for this purpose.)
For the purpose of generating diffs at the porcelain level (*not*
generating patches to be applied, aka format-patch), we can safely stay
with the interpretation in the first item above.
-- Hannes
next prev parent reply other threads:[~2008-10-07 15:56 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-28 2:06 Implementation of a "textconv" filter for easy custom diff Matthieu Moy
2008-09-28 2:06 ` [PATCH] Facility to have multiple kinds of drivers for diff Matthieu Moy
2008-09-28 2:06 ` [PATCH] Implement run_command_to_buf (spawn a process and reads its stdout) Matthieu Moy
2008-09-28 2:06 ` [PATCH] Implement a textconv filter for "git diff" Matthieu Moy
2008-09-28 2:06 ` [PATCH] Document the textconv filter Matthieu Moy
2008-09-28 2:06 ` [PATCH] Add a basic test for " Matthieu Moy
2008-09-28 11:07 ` [PATCH] Document " Johannes Sixt
2008-09-28 12:29 ` Matthieu Moy
2008-09-28 4:15 ` [PATCH] Implement a textconv filter for "git diff" Jeff King
2008-09-28 10:00 ` Matthieu Moy
2008-09-28 16:12 ` Jeff King
2008-09-28 4:10 ` Implementation of a "textconv" filter for easy custom diff Jeff King
2008-09-28 9:57 ` Matthieu Moy
2008-09-28 16:11 ` Jeff King
2008-09-30 15:19 ` Matthieu Moy
2008-09-30 16:45 ` Jeff King
2008-10-05 21:41 ` [PATCH 0/4] diff text conversion filter Jeff King
2008-10-05 21:42 ` [PATCH 1/4] t4012: use test_cmp instead of cmp Jeff King
2008-10-05 21:43 ` [PATCH 2/4] diff: unify external diff and funcname parsing code Jeff King
2008-10-05 21:43 ` [PATCH 3/4] diff: introduce diff.<driver>.binary Jeff King
2008-10-07 15:17 ` Johannes Sixt
2008-10-07 15:35 ` Jeff King
2008-10-07 15:54 ` Johannes Sixt [this message]
2008-10-12 5:24 ` Junio C Hamano
2008-10-13 1:23 ` Jeff King
2008-10-13 4:00 ` Junio C Hamano
2008-10-13 4:15 ` Jeff King
2008-10-13 6:10 ` Johannes Sixt
2008-10-13 13:54 ` Junio C Hamano
2008-10-13 8:12 ` Matthieu Moy
2008-10-24 2:46 ` Jeff King
2008-10-24 2:48 ` [PATCH 1/5] diff: add missing static declaration Jeff King
2008-10-24 2:50 ` [PATCH 2/5] add userdiff textconv tests Jeff King
2008-10-24 2:53 ` [PATCH 3/5] refactor userdiff textconv code Jeff King
2008-10-24 7:15 ` Johannes Sixt
2008-10-24 12:40 ` Jeff King
2008-10-24 13:51 ` Jeff King
2008-10-24 14:01 ` Johannes Sixt
2008-10-24 14:08 ` Jeff King
2008-10-24 21:12 ` Junio C Hamano
2008-10-24 22:50 ` Jeff King
2008-10-24 22:56 ` Jeff King
2008-10-25 0:48 ` Jeff King
2008-10-25 0:50 ` [PATCH 1/7] diff: add missing static declaration Jeff King
2008-10-25 0:51 ` [PATCH 2/7] add userdiff textconv tests Jeff King
2008-10-25 0:52 ` [PATCH 3/7] textconv: assume text-converted contents are not binary Jeff King
2008-10-25 0:52 ` [PATCH 4/7] textconv: don't convert for every operation Jeff King
2008-10-25 5:41 ` Junio C Hamano
2008-10-25 7:19 ` Jeff King
2008-10-25 18:32 ` Junio C Hamano
2008-10-25 19:35 ` Jeff King
2008-10-25 23:35 ` Junio C Hamano
2008-10-25 23:48 ` Junio C Hamano
2008-10-26 4:52 ` Jeff King
2008-10-26 4:38 ` Jeff King
2008-10-26 4:41 ` [PATCH v3 1/8] diff: add missing static declaration Jeff King
2008-10-26 4:41 ` [PATCH v3 2/8] document the diff driver textconv feature Jeff King
2008-10-26 4:42 ` [PATCH v3 3/8] add userdiff textconv tests Jeff King
2008-10-26 4:44 ` [PATCH v3 4/8] refactor userdiff textconv code Jeff King
2008-10-26 4:45 ` [PATCH v3 5/8] userdiff: require explicitly allowing textconv Jeff King
2008-10-26 4:46 ` [PATCH v3 6/8] only textconv regular files Jeff King
2008-10-26 4:49 ` [PATCH v3 7/8] wt-status: load diff ui config Jeff King
2008-10-27 5:30 ` Junio C Hamano
2008-10-27 8:23 ` Jeff King
2008-10-26 4:50 ` [PATCH v3 8/8] enable textconv for diff in verbose status/commit Jeff King
2008-10-25 0:54 ` [PATCH 5/7] userdiff: require explicitly allowing textconv Jeff King
2008-10-25 0:54 ` [PATCH 6/7] document the diff driver textconv feature Jeff King
2008-10-25 0:55 ` [PATCH 7/7] only textconv regular files Jeff King
2008-10-24 2:55 ` [PATCH 4/5] userdiff: require explicitly allowing textconv Jeff King
2008-10-24 7:04 ` Johannes Sixt
2008-10-24 2:56 ` [PATCH 5/5] document the diff driver textconv feature Jeff King
2008-10-24 7:02 ` [PATCH 3/4] diff: introduce diff.<driver>.binary Johannes Sixt
2008-10-05 21:43 ` [PATCH 4/4] diff: add filter for converting binary to text Jeff King
2008-10-05 22:03 ` [PATCH 0/4] diff text conversion filter Jakub Narebski
2008-10-06 6:29 ` Johannes Sixt
2008-10-06 6:52 ` Jeff King
2008-10-06 8:55 ` Johannes Sixt
2008-10-06 15:15 ` Matthieu Moy
2008-10-07 1:20 ` Jeff King
2008-10-07 5:52 ` Johannes Sixt
2008-10-07 6:00 ` Jeff King
2008-10-07 6:15 ` Matthieu Moy
2008-10-07 15:46 ` Jeff King
2008-10-07 16:15 ` Johannes Sixt
2008-10-13 1:29 ` Jeff King
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=48EB864C.6020000@viscovery.net \
--to=j.sixt@viscovery.net \
--cc=Matthieu.Moy@imag.fr \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
/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;
as well as URLs for NNTP newsgroup(s).