我们决定使用我们的 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 工具来管理我们的文件。进行初始签入的同一台开发人员机器是尝试进行后续推送的开发人员机器。