Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATCH] Fix overwriting of files when applying contextually independent diffs

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:05

Alex Riesen [off-list ref] writes:
Noticed by applying two diffs of different contexts to the same file.

The check for existence of a file was wrong: the test assumed it was
a directory and reset the errno (twice: directly and by calling
lstat). So if an entry existed and was _not_ a directory no attempt
was made to rename into it, because the errno (expected by renaming
code) was already reset to 0. This resulted in error:

    fatal: unable to write file file mode 100644

For Linux, removing "errno = 0" is enough, as lstat wont modify errno
if it was successful. The behavior should not be depended upon,
though, so modify the "if" as well.

The test simulates this situation.
Ok.  I briefly thought this might disable a more important
safety to refuse overwriting an untracked working tree file with
a creation patch, but that is caught much earlier in an
independent codepath already, so this should be safe to apply.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help