问题标签 [git-http-backend]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git http-backend:远端意外挂断
我有一个网络服务器,它接受来自 Git 客户端的传入连接并将它们重定向到git-http-backend。克隆效果很好,但推送失败:
调查传入连接,以下是上面标记连接的请求标头的一些信息,这些信息失败了:
我读取了 4 个字节,然后返回输出。我想知道,我在这里可能会想念什么。所以我假设客户端认为服务器支持智能 HTTP,但我没有实现它。
git - git-receive-pack/git-upload-pack 和 git-http-backend 的区别
为了更多地了解 git,我尝试使用 Python 和 Flask 编写一个非常简单的 Git 服务器。我注册了一个端点并将调用重定向到git-http-backend。到目前为止,一个简单的拉动工作正常。简单/小推也通过。
现在我偶然发现了git-upload-pack和git-receive-pack,我想知道为什么或何时需要它们?他们git-http-backend
在后台使用吗?我不确定我是否还必须支持这些命令。
PS 我试着绕着 SmartHTTP 转。是全双工的意思吗?或者 SmartHTTP vs Dumb 意味着什么?如果它也只是接收和发送/推送文件,我不完全理解什么应该是聪明的?
git - Git push 在写入对象时冻结并给出 504 错误
问题
Git
通过 HTTPS 为 81 kB 存储库写入对象时挂起(不允许使用 SSH)。Nginx 的具体报错信息access.log
如下:
背景
我在已挂载的 Debian 映像中托管 Nginx 和 Git 服务器。需要注意的重要一点:我www
的所有网站文件都以只读方式单独安装。我的 Git 根文件夹也在里面www
(即www/git
)。
我的 Nginx 配置如下:
如果我https://git.domain.com
从浏览器访问,我会得到一个Gitweb
GUI。我克隆了git clone https://git.domain.com/Hello-World/.git
,一切都很好。但是当我尝试推送 using 时git push
,它会在写入对象步骤时挂起,最终给我一个网关超时错误。有趣的是,每次发生这种情况时,https://git.domain.com
Gitweb 页面和 Git 后端都会关闭,迫使我终止并重新启动我的fcgiwrap
进程。
我猜
我试过git config --global http.postBuffer 524288000
无济于事。因为我正在验证(通过输入我的用户名和密码),git-receive-pack
所以应该被允许,对吧?
我假设这与git
没有写权限的文件夹有关?也许我的 Nginx 配置的正则表达式不正确?
编辑:
通常来自 Git 的错误会转到 stderr,这通常由 Web 服务器写入日志。你的系统上是否有这样的日志,如果有,它包含什么?
我从客户端的命令提示符中得到的错误如下:
同样来自 Nginx 的error.log
:
strace
对于fcgiwrap
过程:
在此之后,fcgiwrap
完全挂起。在这一点上,我既不能clone
也不能push
,必须产生一个新fcgiwrap
进程。
git - 如何通过 http(s) 创建远程 git 存储库
至今:
我有 apache 和 git-http-backend 在我自己的(家庭)服务器上运行。我可以 ssh 到服务器并创建一个存储库。我能够在本地克隆服务器存储库,进行更改并推送回服务器。
我将创建许多小项目。在 svn 上,我以前很少有存储库,项目只是子目录。svn 支持仅获取子文件夹并假设它们是项目。在 git 中,我无法从子文件夹克隆,在我看来,一个项目应该在它自己的存储库中。我的问题是:如何在没有 ssh 进入服务器的情况下创建存储库(实际上是一个项目)。(顺便说一句,我只在我的家庭网络中启用了 ssh。)
我试过 gitweb,但这似乎是一个只读工具。我曾尝试“git init --bare https://...”,但这会将路径解释为本地相对路径。
git - 从 AWS EC2 克隆 git 在本地使用 HTTP
我制作了 AWS EC2 并成功使用 ssh 克隆。
这是示例。
git clone ssh://ubuntu@:/home/ubuntu/git/chm/
使用以下说明在本地成功克隆,并且所有提交和推送都是可能的。
但是,我想使用 http 执行没有密码的克隆。
我尝试了很多次谷歌搜索,但是在执行克隆时遇到了超时。
如果你知道怎么做,如果你能详细告诉我,我将不胜感激。
谢谢你。