]> git.ipfire.org Git - thirdparty/git.git/commit - path.c
normalize_path_copy(): fix pushing to //server/share/dir on Windows
authorJohannes Sixt <j6t@kdbg.org>
Wed, 14 Dec 2016 19:37:38 +0000 (20:37 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Dec 2016 21:10:43 +0000 (13:10 -0800)
commit7814fbe3f1e7cea1a675408df7b5dd1f5be731cc
treeef2f4a7e48adbaf3e170a0ea46eb8c23f765ddab
parent0202c411edc25940cc381bf317badcdf67670be4
normalize_path_copy(): fix pushing to //server/share/dir on Windows

normalize_path_copy() is not prepared to keep the double-slash of a
//server/share/dir kind of path, but treats it like a regular POSIX
style path and transforms it to /server/share/dir.

The bug manifests when 'git push //server/share/dir master' is run,
because tmp_objdir_add_as_alternate() uses the path in normalized
form when it registers the quarantine object database via
link_alt_odb_entries(). Needless to say that the directory cannot be
accessed using the wrongly normalized path.

Fix it by skipping all of the root part, not just a potential drive
prefix. offset_1st_component takes care of this, see the
implementation in compat/mingw.c::mingw_offset_1st_component().

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
path.c