33

今天早上出现了一个奇怪的问题——我无法使用 SSH 或 HTTPS 从 GitHub 上的公共 repo 克隆到我的共享 VMWare 文件夹。我正在使用 Fedora 22,如果我在系统上除共享文件夹之外的任何位置尝试此命令,它就会完美运行。

git clone https://github.com/twbs/bootstrap.git
Cloning into 'bootstrap'...
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我尝试过的步骤:

  • 重新启动 VM 和主机 Mac(运行 El Capitan)
  • 重新安装 git
  • 检查权限 (drwxr-xr-x)

有谁知道为什么共享文件夹可能会导致这种情况?

4

8 回答 8

7

我有同样的问题。我相信这可能是因为 VMWare 共享文件夹文件系统不能正确支持所有文件系统操作。例如,您不能创建硬链接:

$ touch foo
$ ln foo bar
ln: bar: Operation not supported

...并且您不能复制符号链接:

$ touch foo
$ ln -s foo bar
$ cp -R bar baz
cp: bar: could not copy extended attributes to baz: Invalid argument

此外,一旦 git clone 失败,checkout 的文件名将永远无法再次使用:

$ git clone https://github.com/twbs/bootstrap.git
Cloning into 'bootstrap'...
[...]
fatal: index-pack failed
$ touch bootstrap
touch: bootstrap: Input/output error

其他人已经注意到VMWare 共享文件夹中的硬链接git clone问题。没有人找到解决办法。

在使用 OS X 来宾时,我通过将磁盘映像保存到共享文件夹、将磁盘映像挂载到来宾中,然后将 git 克隆到挂载的文件系统中来解决此问题。类似的技术可能适用于 Linux,但我还没有尝试过。

于 2016-02-21T01:26:07.687 回答
4

正如 Laurence 指出的,这是 VMWare 0.6.0 版的一个问题。这是因为:

VMware 更改了工具包并从 HGFS 移至 FUSE,而不是在内核中。

下没有文件夹/mnt/hgfs,共享文件夹在名为 的文件夹下创建shared_folder

症状

  • 无法从网络中的其他计算机访问虚拟机中的共享文件夹。
  • 无法通过网络访问虚拟机中具有适当权限的共享文件夹

错误类似于:

You cannot access ip_address\folder_name
You do not have permission to access ip_address\folder_name. Contact your network administrator to request access.

原因:

据我所知,这是此问题以及与其他文件系统操作相关的其他错误背后的原因。更恰当地说,

如果在共享文件夹上启用了审核对象访问 GPO,并且共享文件夹位于可热插拔的设备上,则会出现此问题。

解决方案:

挂载共享文件夹。参考这个

找到共享文件夹。

禁用对共享文件夹的审核文件访问并删除所有可热插拔设备。

希望这会有所帮助。

几个月前,我的开发团队遇到了一个类似的问题,一位同事代表组织联系了支持团队。

来自的阿尔瓦罗·阿奎莱拉( Alvaro AguileraHashicorp support)非常亲切地指出了这个问题。最初,支持团队建议迁移到 Fusion 8.0.2,以防万一想避免麻烦。

以下是支持团队在2016 年 5 月 20 日的总结信息:

感谢您与我们联系。

根据日志,VM 上似乎不存在 HGFS 模块。

此外,8.1.* 和转发端口存在 VMWare 融合问题,请尝试转到 Fusion 8.0.2,因为这是最后一个已知可以正常工作的版本。

请为您的用例使用旧盒子,而不是最新的 VMware Fusion,因为开发团队已确认预计将在2017 年第一季度解决该问题。

感谢您的理解。

我们已经迁移到Fusion 8.0.0,这个问题得到了解决。

于 2016-12-14T18:35:23.140 回答
1

我今天找到了解决方法。不确定它是否对每个人都一样 - 但您需要配置您的 VM 同步文件夹以使用smb以及mfsymlinks

config.vm.synced_folder ".", "/vagrant", type: "smb", mount_options: ['vers=3.02', 'mfsymlinks']

我现在可以在 VM 内正确使用 Git 和符号链接而不会出现问题。

于 2016-12-21T21:41:14.570 回答
0

这是我的解决方案。由于在 VMware Machine 中无法 git clone,在使用其他命令时可能会出现问题。所以我在 Windows 系统中进行 git clone,并在我的 Windows 系统中完成我的 git 工作。它对我有用。

于 2016-07-15T02:19:19.490 回答
0

我有同样的问题,但我找到了解决方案。我的设置是为来宾使用 VMware Workstation 12.5.5 和 Linux 内核 4.4。主机运行 Linux 内核 4.10.8。您需要在 $HOME 下(当然不是在您的 HGFS 挂载目录下)在您的 Linux 客户机中克隆最新的 openvm-tools:https ://github.com/vmware/open-vm-tools

按照说明从源代码编译openvm-tools。编译后,备份/usr/bin/vmhgfs-fuse (cd /usr/bin; mv vmhgfs-fuse vmhgfs-fuse.bak) 并复制$HOME/open-vm-工具/open-vm-tools/vmhgfs-fuse/.libs/vmhgfs-fuse 到 /usr/bin。

然后将 $HOME/open-vm-tools/open-vm-tools/libvmtools/.libs/libvmtools.so.0.0.0 复制到 /lib64 并创建一个指向它的链接:ln -s libvmtools.so.0.0.0 libvmtools .so.0

检查可能需要的其他库。(使用 ldd /usr/bin/vmhgfs-fuse 知道哪些库丢失并相应地复制)

就是这样,重新启动 vmware 来宾机器,您将能够通过 HGFS 使用主机挂载目录来存储 Git 存储库,克隆、拉取、推送现在工作正常 :)

于 2017-04-25T21:57:02.120 回答
0

我找到了解决这个问题的方法,从 windows 共享一个文件夹,然后在你的 linux guest intall samba 和 cif-utils 中你可以像这样通过主机的 ip 挂载共享

(将此行添加到您的 fstab 中)

//YOUR_HOST_IP/share /PATH_TO/GUEST_SHARE cifs user,noperm,rw,username=YOURUSERNAME,password=YOURPASSWORD 0 0

这里的关键是 noperm 名称

注意:为了安全起见,您可以将 Windows 密码存储在凭据文件中并在此处调用它,或者在您的 Windows 实例上创建一个仅指定用于共享访问的用户,然后将您的主用户帐户的访问权限授予共享用户。

希望这可以帮助。

GIT 克隆到你心中的愿望

于 2018-11-06T18:53:18.597 回答
0

Git 2.27(2020 年第二季度)说明了另一种情况,即使使用CIFS 网络驱动器,该克隆也可能出现问题:

请参阅Nathan Sanders ( ) 的提交 23eafd9(2020 年 4 月 10 日(由Junio C Hamano 合并 -- --提交 a41b41c中,2020 年 4 月 22 日)sandersn
gitster

mingw: 应对Isilon网络文件系统

签字人:Nathan Sanders
签字人:Johannes Schindelin

在某些网络文件系统上(目前在 Isilon 中遇到,但理论上更多的网络存储解决方案可能会导致相同的问题),当相关目录丢失时,raceproof_create_file()失败并ERROR_INVALID_PARAMETER显示ERROR_PATH_NOT_FOUND.

由于我们极不可能错误地产生这样的错误(我们传递的参数是相当良性的),我们可以相对确定在这种情况下该目录丢失了。所以让我们自动翻译那个错误。

这修复了git-for-windows/git问题 1345 “无法在 Isilon 存储上的 CIFS 共享上克隆存储库。错误:无法附加到 ' X:/git/Win32-OpenSSH/.git/logs/refs/remotes/origin/HEAD':无效参数”。

于 2020-04-26T19:40:40.033 回答
0

我这里没有相关设置,所以我可能会出错,但是 - 你说问题只发生在共享文件夹上。我可能会想到的一个选项是 SSH/HTTPS 在此类文件夹中使用的密钥与您自己的密钥不同。

如果是这种情况,一个可能的解决方案是为任何被 VMWare 视为用户的人定义密钥。

顺便说一句,您是否尝试过将存储库克隆到私人文件夹然后共享它?有趣的是,它是否会以这种方式工作(这可能表明问题仅在本地创建文件夹时发生)或在尝试进一步拉或推时失败并出现类似或不同的错误(这可能表明问题出在连接本身,但不一定)。

于 2016-12-12T13:18:27.200 回答