Permission games?  I'm not sure what you mean - all I'm doing is testing if the target is a directory.
This is, of course,  _the_ big issue.   ``` ln -s ```  in posix land doesn't require knowledge of the type of symlink to make, whereas in *(*&(* NTFS symlink land, we do require that knowledge.   Within git itself, we have that knowledge within the git database itself for the most part (though not always).