首页 > 其他分享 >Git 智能传输协议

Git 智能传输协议

时间:2024-08-04 12:38:34浏览次数:7  
标签:Git 智能 报文 传输 packfile 客户端 服务端 pack

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。

标签:Git,智能,报文,传输,packfile,客户端,服务端,pack
From: https://www.cnblogs.com/ckxkexing/p/18341639

相关文章

  • 基于OpenCV C++的网络实时视频流传输——Windows下使用TCP/IP编程原理
    1.TCP/IP编程1.1概念IP是英文InternetProtocol(网络之间互连的协议)的缩写,也就是为计算机网络相互连接进行通信而设计的协议。任一系统,只要遵守IP协议就可以与因特网互连互通。所谓IP地址就是给每个遵循tcp/ip协议连接在Internet上的主机分配的一个32bit地址。按照TC......
  • 【人工智能】如何选择AI绘画工具?Midjourney VS Stable Diffusion
    文章目录......
  • github克隆项目到Visual Studio 2022出错怎么回事?
    到底咋回事啊?不同的方法有不同的出错方式。。。。先是选择"用vs打开",结果:然后选择自己输入,结果:救救我,找了各种方法,git也配置了邮箱,密钥也加到github设置里了,github网页用了watttllokit也能打开,怎么就是没法克隆呢,救救救,到底是哪里的错误?????......
  • GitHub每日最火火火项目(8.3)
    项目名称:opendatalab/MinerU项目介绍:MinerU是一个一站式开源高质量数据提取工具,支持PDF、网页和多格式电子书的提取。它为用户提供了便捷的方式来获取和整理各种来源的数据。无论是从文档中提取关键信息,还是从网页中抓取特定内容,MinerU都能发挥重要作用。该工具的开源性......
  • GitHub每日最火火火项目(8.2)
    1. 项目名称:opendatalab/MinerU项目介绍:MinerU是一个一站式开源高质量数据提取工具,它支持PDF、网页、多格式电子书的提取。该工具旨在为用户提供便捷的数据提取解决方案,使用户能够轻松地从各种来源获取所需的数据。无论是从文档中提取关键信息,还是从网页中抓取特定内容,Mi......
  • go pkg包名,如何在pkg.go.dev发布golang软件包, package包名, import包名, git库名, g
    golang的包名在不同的地方作用不同,用途不同。在我们通过pkg.go.dev发布自己的包的时候,了解这些包名和他们的用途就很有必要了。下面我们以go语言中的pkg库 github.com/tekintian/strutils为例说明各种名称的区别和用途。如何在pkg.go.dev发布golang软件包要在pkg.go.dev发......
  • 基于STM32的智能农业灌溉系统教程
    目录引言环境准备智能农业灌溉系统基础代码实现:实现智能农业灌溉系统土壤湿度监控模块自动灌溉控制模块数据处理与存储模块用户界面与远程控制应用场景:农业灌溉与优化常见问题与解决方案收尾与总结引言随着现代农业的发展,智能灌溉系统在提高农作物产量和节约用水方面起......
  • AI科普:探索人工智能体(Agent)的世界
    前言近来,人工智能(AI)正在逐渐融入我们生活的各个角落。而在AI领域中,一个核心概念就是“人工智能体”(Agent)。那么,究竟什么是人工智能体?它们如何工作?又将在未来扮演怎样的角色呢?接下来,让我们一起探索这个神奇的世界!人工智能体简介智能体(Agent):它是一种能够自主行动、与......
  • 腾讯云AI代码助手评测:智能编程新时代,你准备好了吗?
    文章目录引言开发环境介绍腾讯云AI代码助手使用实例案例1案例2案例3获得的帮助与提升建议结语引言随着人工智能技术的不断发展,越来越多的开发者开始尝试利用AI工具来提高编程效率。腾讯云作为国内领先的云计算服务提供商,也推出了自己的AI生成代码插件。「腾讯云A......
  • 聚合客服-在线客服系统-智能GPT客服
    嗨,大家好!我是聚合客服AI,一款专为企业打造的智能客服系统。今天,就让我来给大家聊聊我的故事吧。演示网站:https://www.unichatgpt.com/首先,我得说,我可是一个多才多艺的AI哦。我能在网站上和访客聊天,还能接入APP、微信、抖音等平台,几乎无处不在。我背后有一个强大的知识库,可以回答......