"Johannes Schindelin via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > This is not quite a critical bug fix for Git because (unlike Git for > Windows) it attempts _wrename() first. If that succeeds, we'll not > bother with the POSIX semantics. > > However, Git for Windows knows how to deal with symbolic links, and > _wrename() does not work for them. Therefore, that _wrename() call was > patched out there and we rely on the native Win32 API call to > SetFileInformationByHandle() to rename files and directories. > > It is that latter part that is at heart of this here bug fix: To be able > to call SetFileInformationByHandle(), we need a handle, and > CreateFileW() is what we use, for files, and crucially, also for > directories. > > So while it is not critical for Git to take this patch, it still is > important because that _wrename() call can fail, even when renaming > directories, and then we want the fallback to fail not because we tried > to obtain a handle using incorrect flags, but only because the actual > rename operation failed. > > This patch is based on ps/mingw-rename. Thanks. As this will be part of GfW 2.48 anyway (I presume), let me take it and include it in my tree to keep the divergence between our trees small.