今天终于发现,之前对 git+ssh 协议的认知是错误的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
julyclyde
V2EX    git

今天终于发现,之前对 git+ssh 协议的认知是错误的

  •  
  •   julyclyde 2024-08-18 12:51:11 +08:00 2705 次点击
    这是一个创建于 418 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我一直很好奇,为啥 dumb HTTP 协议需要挂一个 post update hook 去执行 update-server-info 命令,而 git+ssh 协议却不需要

    后来才明白,我之前误把 git+ssh 理解为 file+ssh 协议了

    今天使用 export GIT_SSH_COMMAND="ssh -vvv" 的方法,给 ssh 开了 verbose 模式 debug1: Sending command: git-upload-pack 'git/git.git' debug2: mux_master_process_new_session: channel 1: request tty 0, X 0, agent 0, subsys 0, term "xterm-256color", cmd "git-upload-pack 'git/git.git'", env 4 从日志可以看出,其实 git+ssh 协议是通过 ssh 调用远端的 git 内部命令来提供服务的,而不是通过 ssh 访问远程文件系统来提供服务的

    这个做法其实和 smart HTTP 类似: git+ssh 协议:ssh 作为网络层和身份验证层,ssh session channel 作为适配层,git 内部命令作为实际的 git 协议服务器 smart HTTP 协议: httpd 作为网络层和身份验证层、CGI 模式执行的 git-http-backend 作为适配层、git 内部命令作为实际的 git 协议服务器

    而 dumb HTTP 协议,因为是 httpd 直接服务静态文件的,没有调用 git 的内部命令提供服务,所以才缺了 update-server-info 这个步骤,需要通过 hook 来执行该命令。

    不过 post update hook 和 git send-pack 之间的互动我没看明白,不知道 update-server-info 命令到底输出了什么内容给 git send-pack 命令,让它上传文件到 dumb HTTP 服务去 这段代码应该怎么读呢?

    1 条回复    2024-08-19 09:23:30 +08:00
    nanmu42
        1
    nanmu42  
       2024-08-19 09:23:30 +08:00 via iPhone   3
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3109 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 11:07 PVG 19:07 LAX 04:07 JFK 07:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86