问题标签 [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.

0 投票
0 回答
76 浏览

git - git http-backend:远端意外挂断

我有一个网络服务器,它接受来自 Git 客户端的传入连接并将它们重定向到git-http-backend。克隆效果很好,但推送失败:

调查传入连接,以下是上面标记连接的请求标头的一些信息,这些信息失败了:

我读取了 4 个字节,然后返回输出。我想知道,我在这里可能会想念什么。所以我假设客户端认为服务器支持智能 HTTP,但我没有实现它。

0 投票
1 回答
259 浏览

git - git-receive-pack/git-upload-pack 和 git-http-backend 的区别

为了更多地了解 git,我尝试使用 Python 和 Flask 编写一个非常简单的 Git 服务器。我注册了一个端点并将调用重定向到git-http-backend。到目前为止,一个简单的拉动工作正常。简单/小推也通过。

现在我偶然发现了git-upload-packgit-receive-pack,我想知道为什么或何时需要它们?他们git-http-backend在后台使用吗?我不确定我是否还必须支持这些命令。

PS 我试着绕着 SmartHTTP 转。是全双工的意思吗?或者 SmartHTTP vs Dumb 意味着什么?如果它也只是接收和发送/推送文件,我不完全理解什么应该是聪明的?

0 投票
1 回答
456 浏览

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从浏览器访问,我会得到一个GitwebGUI。我克隆了git clone https://git.domain.com/Hello-World/.git,一切都很好。但是当我尝试推送 using 时git push,它会在写入对象步骤时挂起,最终给我一个网关超时错误。有趣的是,每次发生这种情况时,https://git.domain.comGitweb 页面和 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进程。

0 投票
1 回答
77 浏览

git - 如何通过 http(s) 创建远程 git 存储库

至今:

我有 apache 和 git-http-backend 在我自己的(家庭)服务器上运行。我可以 ssh 到服务器并创建一个存储库。我能够在本地克隆服务器存储库,进行更改并推送回服务器。

我将创建许多小项目。在 svn 上,我以前很少有存储库,项目只是子目录。svn 支持仅获取子文件夹并假设它们是项目。在 git 中,我无法从子文件夹克隆,在我看来,一个项目应该在它自己的存储库中。我的问题是:如何在没有 ssh 进入服务器的情况下创建存储库(实际上是一个项目)。(顺便说一句,我只在我的家庭网络中启用了 ssh。)

我试过 gitweb,但这似乎是一个只读工具。我曾尝试“git init --bare https://...”,但这会将路径解释为本地相对路径。

0 投票
2 回答
37 浏览

git - 从 AWS EC2 克隆 git 在本地使用 HTTP

我制作了 AWS EC2 并成功使用 ssh 克隆。

这是示例。

git clone ssh://ubuntu@:/home/ubuntu/git/chm/

使用以下说明在本地成功克隆,并且所有提交和推送都是可能的。

但是,我想使用 http 执行没有密码的克隆。

我尝试了很多次谷歌搜索,但是在执行克隆时遇到了超时。

如果你知道怎么做,如果你能详细告诉我,我将不胜感激。

谢谢你。