Hi Beat,
On Mon, 23 Nov 2015, Beat Bolli wrote:
> When merging files in repos with core.eol = crlf, git merge-file inserts
> just a LF at the end of the merge markers. Files with mixed line endings
> cause trouble in Windows editors and e.g. contrib/git-jump, where an
> unmerged file in a run of "git jump merge" is reported as simply "binary
> file matches".
Wow, what a beautiful contribution!
I wonder how difficult it would be to make this work with gitattributes,
i.e. when .gitattributes' `eol` setting disagrees with core.eol.
I imagine that we could use convert.c to do all the hard work, e.g. by
adding a function
const char *eol_for_path(const char *path, const char *contents)
{
enum eol eol;
struct conv_attrs ca;
struct text_stat stats;
convert_attrs(&ca, path);
eol = output_eol(ca.crlf_action);
if (eol != EOL_CRLF)
eol = EOL_LF;
else if (!*contents || (crlf_action != CRLF_AUTO &&
crlf_action != CRLF_GUESS)
eol = EOL_CRLF;
else {
ca.crlf_action = input_crlf_action(ca.crlf_action,
ca.eol_attr);
if (crlf_action == CRLF_GUESS && stats.cr > stats.crlf)
eol = core_eol;
else if (stats.crlf)
eol = EOL_CRLF;
else
eol = EOL_LF;
}
return eol == EOL_CRLF ? "\r\n" : "\n";
}
Of course you could also make that function return `enum eol` instead of
`const char *`; that would probably make the changes to xdiff/xmerge.c
less invasive (and closer to what you have already).
Ciao,
Dscho
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html