mirror of
https://git.proxmox.com/git/libgit2
synced 2025-07-17 21:27:52 +00:00
Transport resolution on Win32 should handle absolute local paths
This commit is contained in:
parent
ae0ddc6f02
commit
cb2ace69f4
@ -53,15 +53,30 @@ static int transport_find_fn(const char *url, git_transport_cb *callback, void *
|
|||||||
definition = definition_iter;
|
definition = definition_iter;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!definition) {
|
#ifdef GIT_WIN32
|
||||||
/* still here? Check to see if the path points to a file on the local file system */
|
/* On Windows, it might not be possible to discern between absolute local
|
||||||
if ((git_path_exists(url) == 0) && git_path_isdir(url))
|
* and ssh paths - first check if this is a valid local path that points
|
||||||
definition = &local_transport_definition;
|
* to a directory and if so assume local path, else assume SSH */
|
||||||
|
|
||||||
/* It could be a SSH remote path. Check to see if there's a : */
|
/* Check to see if the path points to a file on the local file system */
|
||||||
if (strrchr(url, ':'))
|
if (!definition && git_path_exists(url) && git_path_isdir(url))
|
||||||
definition = &dummy_transport_definition; /* SSH is an unsupported transport mechanism in this version of libgit2 */
|
definition = &local_transport_definition;
|
||||||
}
|
|
||||||
|
/* It could be a SSH remote path. Check to see if there's a : */
|
||||||
|
if (!definition && strrchr(url, ':'))
|
||||||
|
definition = &dummy_transport_definition; /* SSH is an unsupported transport mechanism in this version of libgit2 */
|
||||||
|
#else
|
||||||
|
/* For other systems, perform the SSH check first, to avoid going to the
|
||||||
|
* filesystem if it is not necessary */
|
||||||
|
|
||||||
|
/* It could be a SSH remote path. Check to see if there's a : */
|
||||||
|
if (!definition && strrchr(url, ':'))
|
||||||
|
definition = &dummy_transport_definition; /* SSH is an unsupported transport mechanism in this version of libgit2 */
|
||||||
|
|
||||||
|
/* Check to see if the path points to a file on the local file system */
|
||||||
|
if (!definition && git_path_exists(url) && git_path_isdir(url))
|
||||||
|
definition = &local_transport_definition;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!definition)
|
if (!definition)
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user