git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Johannes Sixt <j.sixt@viscovery.net>,
	Matthieu Moy <Matthieu.Moy@imag.fr>,
	git@vger.kernel.org
Subject: Re: [PATCH 3/4] diff: introduce diff.<driver>.binary
Date: Mon, 13 Oct 2008 00:15:25 -0400	[thread overview]
Message-ID: <20081013041525.GA32629@coredump.intra.peff.net> (raw)
In-Reply-To: <7vk5cddtzh.fsf@gitster.siamese.dyndns.org>

On Sun, Oct 12, 2008 at 09:00:50PM -0700, Junio C Hamano wrote:

> exchange workflow?  There needs either one or both of the following:
> 
>  - A command line option to Porcelains to override textconv so that an
>    applicable binary diff can be obtained upon request (or format-patch
>    always disables textconv); and/or

format-patch should always disable textconv. I admit that I didn't test
it, but assumed it was covered under the same code path as external
diff (i.e., just not reading in the config). But it doesn't seem to be.

So that is definitely broken in my patch series. But even once that is
fixed, I agree there should be a porcelain switch for turning this off.
I sometimes do "git diff >patch" and read the result into my MUA.
Obviously I would not want textconv'ing there.

>  - You teach git-apply to use a reverse transformation of textconv, so
>    that it does, upon reception of a textconv diff:
> 
>    (1) pass existing preimage through textconv;
>    (2) apply the patch;
>    (3) convert the result back to binary.

The problem with this approach is that it requires that the textconv be
a reversible mapping. And the two motivating examples (dumping exif tags
and converting word processor documents to text) are not; they are lossy
conversions.

It's possible that one could, given the binary preimage and the two
lossy textconv'd versions, produce a custom binary merge that would just
munge the tags, or just munge the text, or whatever. But that is an
order of magnitude more work than writing a textconv, which is usually
as simple as "/path/to/existing/conversion-script".

And the whole point of this exercise was to make it simple to set this
conversion up.

> I'd say that format-patch should always disable textconv so that we won't
> have to worry about it for now.

Agreed, if you remove "for now". I had never intended for these to be
anything but a human-readable display (and while I am generally OK with
generalizing functionality when we can, I think there is real value in
the simplicity here).

If somebody really wants to send patches with converted text for
reference, I would suggest producing a patch with the textconv'd output
as a comment, and including the full binary patch to actually be
applied (and yes, obviously they a malicious attacker could make them
not match, but given the binary patch, we can trivially regenerate the
textconv'd version and confirm it).

-Peff

  reply	other threads:[~2008-10-13  4:16 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
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 [this message]
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=20081013041525.GA32629@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=Matthieu.Moy@imag.fr \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j.sixt@viscovery.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).