从Windows机器到由win-sshfs映射的SFTP站点的GIT推送失败



我们决定使用我们的SFTP站点作为Windows开发机器的裸GIT存储库。 我们能够创建一个存储库,将其克隆到开发计算机,并推送初始签入。 以后的后续推送失败:

$ git push origin master
Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (20/20), done.
remote: error: insufficient permission for adding 
an object to repository database./objects
remote: fatal: failed to write object
fatal: sha1 file '<stdout>' write error: Broken pipe
error: failed to push some refs to 'w:/mvc-solution.git'

我们的设置:

我在一台 Windows 机器上,并且将驱动器号 W 映射到我们的 sftp 站点。 我能够使用 win-sshfs 将我的驱动器 W: 映射到 sftp 站点。

我们使用 msysgit 在我们的 Windows 机器上安装了 git。 git version这样说:

git version 1.9.5.msysgit.0

我们做了一个cd /w来到达我们的存储库位置,然后运行git init --bare mvc-solution. 。然后我们将存储库克隆到开发人员机器(git clone mvc-solution.git c:/myDeveloperCodeRepo),然后更改为开发人员目录(cd c:/myDeveloperCodeRepo)。 我们将源代码放入目录中,运行git add ...git commit -m 'Initial Checkin'。 然后我们运行git push origin master没有任何问题。 我们通过FileZilla以及映射的W:驱动器号验证了我们的代码是否在SFTP站点上。 我们兴高采烈地告诉老板,我们用我们的SFTP站点创建了一个存储库来管理我们的Windows代码。

然后,一天后,我们对开发人员机器代码进行了更改(添加了一个包含一些文件的目录 - 电子表格,文本文件,图像)。 我们添加了文件,提交了它们,然后尝试运行git push origin master 。 没有快乐。相反,我们得到了上面的消息(...failed to push...)。换句话说,无法再将文件推送到 sftp 裸存储库。

我们重新挂载了映射的驱动器连接(win-sshfs),没有任何问题,并确保我们可以仅使用Windows资源管理器和W:驱动器访问sftp站点。 我们还尝试运行git config core.sharedRepository true;我们尝试了不同的互联网连接,包括来自不同位置的 WiFi 和以太网。 没有运气。 同样,我们不在Linux,Mac或任何其他Unix类型的机器上。 除了GIT,我们没有使用任何类似Unix的shell,我们只是使用典型的Windows工具来管理我们的文件。 执行初始签入的同一开发人员计算机是尝试执行后续推送的开发人员计算机。

好的,我找到了解决问题的方法。 问题似乎出在我使用的 sshfs 程序上,而不是 GIT。 为了让它工作,我下载了Eldos Net Drive Free。

然后,在单击配置文件设置按钮后,我将超时设置设置为 60 秒(只是为了确保,可能不是必需的)。我几乎能够使用 GIT 推送,但我收到一条错误消息,说"无法设置 refs/heads/master"。 我检查了存储库,HEAD文件没有任何问题。 最后,GIT 似乎尝试执行一些文件移动/重命名操作,这在映射的 SFTP 驱动器上不受支持。 但是,就我而言,修复很容易。 我再次进入配置文件设置(对于Eldos SFTP网络驱动器程序),并在复选框中打勾,上面写着"移动前删除现有目标"。 我运行了"git push origin master"命令,它通过了。 它真的很光滑。 因此,现在我们有一个使用 SFTP 站点的共享 GIT 存储库,我们使用该网络驱动器程序进行映射,然后使用 Windows Git 程序运行 GIT 命令。

更新:好的,看来Eldos Net Drive不再工作,也不再受支持。 此解决方案将不再作为使用Eldos Net Drive将驱动器映射到SFTP服务器的修复程序。 此外,其他SFTP驱动器映射工具发生的一些错误现在发生在Eldos Net Drive上。 新版本的Eldos Net Drive中可用的设置都没有解决此问题。

最新更新