Git 智能传输协议

news/2025/3/19 5:34:37/文章来源:https://www.cnblogs.com/ckxkexing/p/18341639

Git - Transfer Protocols (git-scm.com)

Git中存在两种传输数据的协议:“dump”和“smart”协议。

Dump 协议

类似HTTPS的Get请求,因为其安全性,已经很少被使用了。

获取内容的大致流程:

  1. 获取info/refs
  2. 获取Head
  3. 然后一次获取object对象。(loose形式)
  4. 若获取某一对象失败,则尝试获取pack形式的信息。

Smart协议

Dump协议简单但是不够高效。

Smart协议中,服务端需要具备Git的知识,能根据客户端发送的信息,分析其needs,然后打包成packfile发送给客户端。

一、上传数据阶段

客户端send-pack,服务端receive-pack

a) ssh

客户端向服务端发送报文以及服务端不存在的object构成的packfile。

报文记录了存在变化的分支信息。

b) http

  1. get request, 获取远程的分支信息。
  2. post request,发送 send-pack的输出和packfile。

二、下载数据阶段

客户端fetch-pack,服务端upload-pack

a) SSH

客户端请求建立连接后,服务端发送git状态信息,包括,另外报文中的

symref=HEAD:refs/heads/master

代表远程文件中,HEAD指针指向的信息。

客户端根据返回的报文信息检查本地存在的objects以及需要的objects信息。

服务端收到报文后,将客户端want的object打包,发送packfile。

b) HTTPs

基于https的下载过程是通过2次请求完成。

  1. get request, 获取每个分支的变更信息。
  2. post request,发送本地存在和want的对象信息。返回RetCode和packfile。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/777654.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[图文直播]Jenkins单分支流水线任务实操

前言 去年的时候,工作角色被定义为去做中台服务,虽然这个工作并不是我职业规划的主线,但正好也借此机会,去解决掉我“闭环能力”中一个暂时缺失的环节,我对自己的定位一直都是要做一个“极限单兵”,希望在地质专业软件这个相对细分的领域,做到自己能完全闭环下面的各个阶…

笔试查漏补缺

笔试查漏补缺 1:排序算法常用时间复杂度: 快速排序 快速排序的核心操作是“哨兵划分”,其目标是:选择数组中的某个元素作为“基准数”,将所有小于基准数的元素移到其左侧,而大于基准数的元素移到其右侧。具体来说,哨兵划分的流程如图所示。选取数组最左端元素作为基准数…

Rust项目的代码组织

学习一种编程语言时,常常优先关注在语言的语法和标准库上,希望能够尽快用上新语言来开发,我自己学习新的开发语言时也是这样。 不过,想用一种新的语言去开发实际的项目,或者自己做点小工具的话,除了语言本身之外,了解它在项目中如何组织代码也是至关重要的。毕竟在实际项…

springboot+vue前后端分离项目-项目搭建17-集成AOP系统日志

后端 1. 新增logs表和实体类,新增com/example/demo/mapper/LogsMapper.java,新增com/example/demo/controller/LogsController.javapackage com.example.demo.controller;import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi…

8.2日CSP-J初赛内容总结

8.2日CSP-J初赛内容总结Adobe:PS,PR,......Reader 微软:Onedrive(存文件),Excel(表格),Word(文字编辑),Onenote(笔记),PowerPoint(PPT)位号从正数部分最低位开始编号,0到更大的数字。 位号从左往右的小数部分从 \(-1\) 开始编号,编号变小基数:进制的进位数字 位权:基数的…

8.3日CSP-J初赛内容总结

8.3日CSP-J初赛内容总结 优先级 \(括号>非>与>或\) \(括号>逻辑运算>位运算\) \(括号>按位取反>按位与>按位或=按位异或\) 按位与或非 \(\to\) 补码按位取反补码所有位取反 按位与将 \(2\) 个补码对其地位 逐位比较1的个数基本上等于 \(n\) 除 \(2\) 的…

初学java4

这周我重新下载了jdk-17并更改了路径,目的是为了添加新的环境变量用于使用eclipse。 eclipse for java作为老牌java编程所需的软件,很值得我学习使用,不过下载以及环境变量的准备有些麻烦。 下载成功后使用起来就很方便了。

问题:ModuleNotFoundError: No module named pydotplus

无法找到pydotplus模块在 Anaconda propmt中安装:pip install pydotplus

使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起

或许你接触过Jenkins, 在我理解就是拉取源码,然后构建成镜像,最后启动容器! 但是这个功能对于小内存的服务器来说就是奢望了! 今天介绍一个新版本,把你这个遗憾弥补下! 在PasteSpider中,也是支持拉取源码,然后编译发布的!!! 以下案例使用svn作为源码管理 如果你使用…

D37 2-SAT P3007 [USACO11JAN] The Continental Cowngress G

视频链接:D37 2-SAT P3007 [USACO11JAN] The Continental Cowngress G_哔哩哔哩_bilibili P3007 [USACO11JAN] The Continental Cowngress G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// O(n*n) #include <iostream> #include <cstring> #include <algo…

Java 文件 I/O流详解

文件文件操作是Java开发中一个重要的组成部分,它允许开发者对文件进行读取,写入,创建,删除和修改等操作,文件操作的主要通过java.io包中的类来实现的,其中的File类更是文件操作的核心类File类的常用方法 创建文件或目录文件创建使用createNewFile();可以创建一个新的空文件,如果…

kubelet节点资源预留

目录一、Node Allocatable1、node资源预留1.1 为什么要做资源预留?1.2 node allocatable1.2.1 查看node节点资源1.2.2 确认node01节点资源2、 配置资源预留2.1 kube预留值2.2 systemReserved预留2.3 evictionHard预留2.4 整体配置2.5 重启服务2.6 Allocatable资源说明 一、N…