无法将克隆克隆到VMWare共享文件夹

时间:2015-10-28 13:59:54

标签: git vmware-fusion

今天早上出现了奇怪的问题 - 我无法使用SSH或HTTPS从GitHub上的公共仓库克隆到我的共享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)

有没有人知道为什么共享文件夹可能导致这个?

8 个答案:

答案 0 :(得分: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失败,结账的文件名永远不会再次使用:

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

其他人已经注意到VMWare共享文件夹中hardlinksgit clone的问题。没有人找到解决方案。

通过将磁盘映像保存到共享文件夹,将磁盘映像挂载到guest虚拟机,然后git-cloning到挂载的文件系统中,我在使用OS X guest虚拟机时解决了这个问题。 similar technique可以在Linux中运行,但我还没有尝试过。

答案 1 :(得分:4)

劳伦斯指出,这是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,并且共享文件夹位于热插拔设备上,则会出现此问题。

<强>解决方案:

  

装入共享文件夹。请参阅this

     

找到共享文件夹。

     

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

希望这会有所帮助。

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

来自Hashicorp support

Alvaro Aguilera 非常慷慨地指出了这个问题。最初,支持团队建议转移到Fusion 8.0.2,这也适用于想要避免麻烦的情况。

以下是支持团队在 2016年5月20日

上发出的结论性消息
  

感谢您与我们联系。

     

根据日志,似乎VM上没有HGFS模块。

     

此外,还存在8.1。*和转发端口的VMWare融合问题,请尝试转到Fusion 8.0.2,因为这是最后一个没有问题的已知工作。

     

请使用旧盒子代替最新的VMware Fusion,因为开发团队已确认预计将在 2017年第一季度解决。

     

感谢您的理解。

我们已移至 Fusion 8.0.0 ,此问题已解决。

答案 2 :(得分:1)

我今天找到了修复程序。不确定每个人是否也一样 - 但您需要配置VM同步文件夹以使用smb以及mfsymlinks

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

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

答案 3 :(得分:0)

这是我的解决方案。 由于在VMware Machine中无法克隆,并且在使用其他命令时,可能会导致问题。所以我在Windows系统中git克隆,并在我的Windows系统中执行我的git作业。它对我有用。

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

我有同样的问题,但我找到了解决方案。我的设置是为guest虚拟机使用VMware Workstation 12.5.5和Linux内核4.4。主机运行Linux内核4.10.8。您需要在$ HOME下的Linux guest虚拟机中克隆最新的openvm-tools(当然不在HGFS安装目录下):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-tools / open-vm-tools / vmhgfs-fuse / .libs / vmhgfs-fuse to / 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存储库,克隆,拉动,推送现在正常工作:)

答案 6 :(得分:0)

我找到了解决此问题的方法,从Windows共享一个文件夹,然后在您的linux guest虚拟机中安装了完整的samba和cif-utils 然后,您可以像这样通过主机的IP挂载共享

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

// YOUR_HOST_IP / share / PATH_TO / GUEST_SHARE cifs用户,noperm,rw,用户名= YOURUSERNAME,密码= YOURPASSWORD 0 0

这里的关键是noperm名称

注意:出于安全性考虑,您可以将Windows密码存储在凭据文件中并在此处调用,或在Windows实例上创建仅用于共享访问的用户,然后将主要用户帐户的访问权限授予共享用户。

希望这会有所帮助。

克隆自己的心意

答案 7 :(得分:0)

Git 2.27(2020年第二季度)说明了另一种情况,即使使用CIFS network drive,克隆也可能会出现问题:

请参见commit 23eafd9Nathan Sanders (sandersn)(2020年4月10日)。
(由Junio C Hamano -- gitster --commit a41b41c中合并,2020年4月22日)

mingw:应对 Isilon 网络文件系统

签名人:内森·桑德斯
签名人:Johannes Schindelin

在某些网络文件系统上(当前在Isilon中遇到,但是从理论上讲,更多的网络存储解决方案可能会导致相同的问题),当缺少所讨论的目录时,raceproof_create_file()失败,而出现一个ERROR_INVALID_PARAMETER ERROR_PATH_NOT_FOUND

由于我们极不可能会错误地产生这样的错误(我们传递的参数是相当良性的),因此可以相对确定该实例中缺少目录。因此,让我们自动翻译该错误。

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