• Max A.K.'s avatar
    git-merge-file: do not add LF at EOF while applying unrelated change · ba311807
    Max A.K. authored
    If 'current-file' does not contain LF at EOF, and change between
    'base-file' and 'other-file' does not change any line close to EOF, the
    3-way merge should not add LF to EOF.  This is what 'diff3 -m' does, and
    seems to be a reasonable expectation.
    
    The change which introduced the behavior is cd1d61c4. It always calls
    function xdl_recs_copy() for sides with add_nl == 1. In fact, it looks
    like the only case when this is needed is when 2 files are being
    union-merged, and they do not have LF at EOF (strictly speaking, the
    first of them).
    
    Add tests:
    * "merge without conflict (missing LF at EOF, away from change in the
    other file)" and "merge does not add LF away of change", to demonstrate
    the changed behavior.
    * "conflict at EOF without LF resolved by --union", to verify that the
    union-merge at the end inerts newline between versions.
    * some more tests which I felt like not covering the functionality well
    Signed-off-by: Max A.K.'s avatarMax Kirillov <max@max630.net>
    Acked-by: Johannes Schindelin's avatarJohannes Schindelin <johannes.schindelin@gmx.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    ba311807
t6023-merge-file.sh 9.43 KB