Re: bug with .gitattributes diff and embedded NUL

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: bug with .gitattributes diff and embedded NUL

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:00

Eric Blake [off-list ref] writes:
Looking closer at .dotest/0001, the diff is indeed invalid, containing the
single line
That is not a bug in diff but actually in bug in non-merge form of
rebase, which reuses "format patch as if we are sending it out in
e-mail, and apply that on top of a different commit as if we are
accepting that e-mail" machinery.  That dataflow loses NUL.  Fixing
rebase not to reuse the e-mailed patch dataflow is on my to-do list, but
has been slipping.

So, no, I do not think GIT_EXTERNAL_DIFF would help, as the problem is
not diff generation.

I think you can use "rebase -m" to work this issue around.

Re: bug with .gitattributes diff and embedded NUL

From: Eric Blake <hidden>
Date: 2016-06-15 22:44:00

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Junio C Hamano on 12/18/2007 11:40 PM:
Eric Blake [off-list ref] writes:
quoted
Looking closer at .dotest/0001, the diff is indeed invalid, containing the
single line
That dataflow loses NUL.  Fixing
rebase not to reuse the e-mailed patch dataflow is on my to-do list, but
has been slipping.

I think you can use "rebase -m" to work this issue around.
Indeed, after learning about git-rebase -m and git-mergetool, adding the
merge option alongside the diff option for the file in question, and
teaching emacs that it should use emerge-diff-options "-a" so that it can
handle embedded NUL, I was finally able to use git-mergetool to do a sane
merge of the differences in the mostly-text file.  Thanks!

But it raised some additional issues:

Is there a way to specify custom merge tools, rather than the current
hard-coded list valid for merge.tool?  For example, what if I prefer
emacs' ediff driver over its emerge driver?

Using merge.tool of emerge leaves junk around when the merge is aborted.
Before I edited emacs' emerge-diff-options, the subsidiary diff3 was
failing because it treated the file to merge as binary even though git was
trying to treat it as text.  As a result, emerge left behind all of its
command-line argument files (file.{BASE,LOCAL,REMOTE}.pid), and git did
not clean any of them up.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             ebb9@byu.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHaShk84KuGfSFAYARAkDtAJ0XhhhbeJZJS6td3/aeOlxd7iuoawCgiVY6
3s+aMxRO1vjKf/EqncKW2jE=
=GrcF
-----END PGP SIGNATURE-----
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help