patch: implement patch.eol=auto mode
EOLs in patched files are restored to their original value after
patching. We use the first EOL found in the file, files with
inconsistent EOLs will thus be normalized during this process.
adding .hgignore
adding a
% invalid eol
applying eol.diff
abort: Unsupported line endings type: LFCR
% force LF
applying eol.diff
'a\nyyyy\ncc\n\nd\ne'
% force CRLF
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying eol.diff
'a\r\nyyyy\r\ncc\r\n\r\nd\r\ne'
% auto EOL on LF file
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying eol.diff
'a\nyyyy\ncc\n\nd\ne'
% auto EOL on CRLF file
applying eol.diff
'a\r\nyyyy\r\ncc\r\n\r\nd\r\ne'
adding b
% binary patch with --eol
applying bin.diff
'a\x00\nc'