Merge branch 'tb/push-to-cygwin-unc-path'
On Cygwin, similar to Windows, "git push //server/share/repository" ought to mean a repository on a network share that can be accessed locally, but this did not work correctly due to stripping the double slashes at the beginning. This may need to be heavily tested before it gets unleashed to the wild, as the change is at a fairly low-level code and would affect not just the code to decide if the push destination is local. There may be unexpected fallouts in the path normalization. * tb/push-to-cygwin-unc-path: cygwin: allow pushing to UNC paths
This commit is contained in:
commit
33400c0e96
19
compat/cygwin.c
Normal file
19
compat/cygwin.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "../git-compat-util.h"
|
||||||
|
#include "../cache.h"
|
||||||
|
|
||||||
|
int cygwin_offset_1st_component(const char *path)
|
||||||
|
{
|
||||||
|
const char *pos = path;
|
||||||
|
/* unc paths */
|
||||||
|
if (is_dir_sep(pos[0]) && is_dir_sep(pos[1])) {
|
||||||
|
/* skip server name */
|
||||||
|
pos = strchr(pos + 2, '/');
|
||||||
|
if (!pos)
|
||||||
|
return 0; /* Error: malformed unc path */
|
||||||
|
|
||||||
|
do {
|
||||||
|
pos++;
|
||||||
|
} while (*pos && pos[0] != '/');
|
||||||
|
}
|
||||||
|
return pos + is_dir_sep(*pos) - path;
|
||||||
|
}
|
2
compat/cygwin.h
Normal file
2
compat/cygwin.h
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
int cygwin_offset_1st_component(const char *path);
|
||||||
|
#define offset_1st_component cygwin_offset_1st_component
|
@ -184,6 +184,7 @@ ifeq ($(uname_O),Cygwin)
|
|||||||
UNRELIABLE_FSTAT = UnfortunatelyYes
|
UNRELIABLE_FSTAT = UnfortunatelyYes
|
||||||
SPARSE_FLAGS = -isystem /usr/include/w32api -Wno-one-bit-signed-bitfield
|
SPARSE_FLAGS = -isystem /usr/include/w32api -Wno-one-bit-signed-bitfield
|
||||||
OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
|
OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
|
||||||
|
COMPAT_OBJS += compat/cygwin.o
|
||||||
endif
|
endif
|
||||||
ifeq ($(uname_S),FreeBSD)
|
ifeq ($(uname_S),FreeBSD)
|
||||||
NEEDS_LIBICONV = YesPlease
|
NEEDS_LIBICONV = YesPlease
|
||||||
|
@ -189,6 +189,9 @@
|
|||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__CYGWIN__)
|
||||||
|
#include "compat/cygwin.h"
|
||||||
|
#endif
|
||||||
#if defined(__MINGW32__)
|
#if defined(__MINGW32__)
|
||||||
/* pull in Windows compatibility stuff */
|
/* pull in Windows compatibility stuff */
|
||||||
#include "compat/mingw.h"
|
#include "compat/mingw.h"
|
||||||
|
@ -70,6 +70,8 @@ ancestor() {
|
|||||||
case $(uname -s) in
|
case $(uname -s) in
|
||||||
*MINGW*)
|
*MINGW*)
|
||||||
;;
|
;;
|
||||||
|
*CYGWIN*)
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
test_set_prereq POSIX
|
test_set_prereq POSIX
|
||||||
;;
|
;;
|
||||||
|
Loading…
Reference in New Issue
Block a user