diff options
author | Felix Kollmann <fk@konsorten.de> | 2018-03-12 15:03:36 +0100 |
---|---|---|
committer | Felix Kollmann <fk@konsorten.de> | 2018-03-12 15:03:36 +0100 |
commit | 4915f5834dbb588836ad787e728cf4a81364f5af (patch) | |
tree | 9c39915df072451fbfde8da2367765797e50bafb /worktree_windows.go | |
parent | 1d28459504251497e0ce6132a0fadd5eb44ffd22 (diff) | |
download | go-git-4915f5834dbb588836ad787e728cf4a81364f5af.tar.gz |
Added support for non-symlink checkouts on Windows when elevated rights are missing
This implementation mimicks the behavior of Git on Windows
Signed-off-by: Felix Kollmann <mail@fkollmann.de>
Diffstat (limited to 'worktree_windows.go')
-rw-r--r-- | worktree_windows.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/worktree_windows.go b/worktree_windows.go index d59448e..1bef6f7 100644 --- a/worktree_windows.go +++ b/worktree_windows.go @@ -3,6 +3,7 @@ package git import ( + "os" "syscall" "time" @@ -18,3 +19,17 @@ func init() { } } } + +func isSymlinkWindowsNonAdmin(err error) bool { + const ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 + + if err != nil { + if errLink, ok := err.(*os.LinkError); ok { + if errNo, ok := errLink.Err.(syscall.Errno); ok { + return errNo == ERROR_PRIVILEGE_NOT_HELD + } + } + } + + return false +} |