我有一些像这样的bash代码:
repo="/mnt/shared/my/repo path sometimes with spaces.git"
echo "\$repo = $repo"
git remote add origin "${repo}"
git remote -v
其中/mnt/shared
是在git cygwin fstab文件中创建的网络驱动器的挂载点,工作正常。我可以使用ls通过Git bash shell与它进行交互,并且从中推送和拉回存没有问题。
我在循环中使用上面的代码来维护一大堆repos,如果我的repo
变量如上所述没有任何特殊字符(除了空格,这不会影响这种情况)所有),我得到以下输出:
$repo = /mnt/shared/my/repo path sometimes with spaces.git
origin //unc-path/to/mountpoint/my/repo path sometimes with spaces.git (fetch)
origin //unc-path/to/mountpoint/my/repo path sometimes with spaces.git (pull)
或
$repo = /mnt/shared/my/repopathnospaces.git
origin //unc-path/to/mountpoint/my/repopathnospaces.git (fetch)
origin //unc-path/to/mountpoint/my/repopathnospaces.git (pull)
但是,如果repo
变量包含通常需要转义的任何特殊字符(再次,由于某种原因除了空格),那么我得到我实际要寻找的输出(我想要的以上情况也是如此):
$repo = /mnt/shared/my/repo path with [brackets].git
origin /mnt/shared/my/repo path with [brackets].git (fetch)
origin /mnt/shared/my/repo path with [brackets].git (pull)
或
$repo = /mnt/shared/my/repopathwith[brackets].git
origin /mnt/shared/my/repopathwith[brackets].git (fetch)
origin /mnt/shared/my/repopathwith[brackets].git (pull)
注意它是如何将/mnt/shared
挂载点保留在路径中的?我的问题是,为什么在第一种情况下转换到UNC路径(没有特殊字符)?我怎样才能让它始终保持mountpoint相对路径?
我使用的是我认为最新版本的Git Bash for Windows,如果有帮助的话,正在运行uname
会给我MINGW64_NT-6.1
。