On Sun, Sep 16, 2018 at 12:56:04AM -0700, David Aguilar wrote:
> Combining changes is inherently file-format specific, and I suspect
> that native authoring tools are best used in those scenarios.
> Maybe LFS can help deal with binary conflicts by having short and sweet
> ways to grab the "base", "their" and "our" versions of the conflict
> files.
>
> Example:
>
> git lfs checkout --theirs --to theirs.wav conflict.wav
> git lfs checkout --ours --to ours.wav conflict.wav
> git lfs checkout --base --to base.wav conflict.wav
>
> Then the user can use {ours,theirs,base}.wav to produce the
> resolved result using their usual authoring tools.
That's a good idea, and I think that it's sensible that we teach Git LFS
how to do it. I've opened an issue to that effect in our tracker:
https://github.com/git-lfs/git-lfs/issues/3258
> One thought that comes to mind is diffing -- I imagine that we
> might want to use different diff tools depending on the file format.
> Currently git-difftool uses a single tool for all files, but it seems
> like being able to use different tools, based on the file type, could
> be helpful.
We have had some internal discussion about this. I think that we had
landed on something similar to:
1. Teach .gitattributes a new mergetool= attribute, which would
specify a reference to a mergetool driver, and
2. Teach .gitconfig about a way to store meregtool drivers, similar to
how we name filters today.
Upon my re-reading of this proposal, it was suggested that we implement
this in terms of 'git lfs mergetool', but I don't see why this wouldn't
be a good fit for Git in general.
Thanks,
Taylor