用Git原生Clone命令克隆指定Commit的方法.pdf
《用Git原生Clone命令克隆指定Commit的方法.pdf》由会员分享,可在线阅读,更多相关《用Git原生Clone命令克隆指定Commit的方法.pdf(7页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010235316.4 (22)申请日 2020.03.30 (71)申请人 北京简单一点科技有限公司 地址 100000 北京市海淀区中关村大街18 号12层1225-108 (72)发明人 刘庆 (51)Int.Cl. G06F 8/71(2018.01) (54)发明名称 一种用Git原生Clone命令克隆指定Commit 的方法 (57)摘要 本发明提供了一种用Git原生Clone命令克 隆指定Commit的方法, 包括以下步骤: (1)当用户 通过用户原生Git客。
2、户端向Git原生服务器发送 普通Git命令时, 首先用户通过用户原生Git客户 端向Git原生服务器发送普通Gitclone命令或 者其他git命令; (2)用户命令拦截器拦截用户命 令, 若发现用户命令为普通git命令, 则不做任何 额外处理, 并将用户命令发送给Git原生服务器; (3)Git原生服务器接收用户命令, 并将返回信息 按照原路径返回至用户原生Git客户端; 本发明 提供一种可以克隆Git指定Commit的方法, 大幅 提升在只需要单commit场景下的clone(克隆)效 率。 权利要求书1页 说明书4页 附图1页 CN 111427615 A 2020.07.17 CN 1。
3、11427615 A 1.一种用Git原生Clone命令克隆指定Commit的方法, 其特征在于, 包括用户原生Git客 户端和Git原生服务器, 在用户原生Git客户端与Git原生服务器之间设置用户命令拦截器; 具有以下步骤: (1)当用户通过用户原生Git客户端向Git原生服务器发送普通Git命令时, 首先用户通 过用户原生Git客户端向Git原生服务器发送普通Git clone命令或者其他git命令; (2)用户命令拦截器拦截用户命令, 若发现用户命令为普通git命令, 则不做任何额外 处理, 并将用户命令发送给Git原生服务器; (3)Git原生服务器接收用户命令, 并将返回信息按照原。
4、路径返回至用户原生Git客户 端; (4)当用户通过用户原生Git客户端向Git原生服务器发送包含指定commit信息的 gitclone-depth1命令, 假设commit ID为A,其中A表示一个40位的真实commit ID值; commit信息可以在代码库URL中以特殊标志携带,或者git clone命令后续版本支持服务器 端参数-server-option之后, 通过此参数指定; (5)用户命令拦截器解析到用户的git clone-depth1命令, 并解析出其中的40位 commit ID信息A; (6)用户命令拦截器向git原生服务器查询该commit A是否存在; (7)Gi。
5、t原生服务器向用户命令拦截器返回查询结果; (8)如果该commit A不存在, 用户命令拦截器向用户原生Git客户端返回错误信息, 流 程结束; (9)如果该commit A存在, 步骤(6)在查询操作完成后, 不再进行正常的git对象清点来 找出最新的commit信息, 而是伪造清点结果, 直接答复用户原生Git客户端, 最新的commit 就是用户指定的commit A; (10)按照git clone命令的通信协议, git clone命令接收到步骤(9)返回的信息, 获知 Git原生服务器中最新commit的就是commit A, 然后会向Git原生服务器发送真正的下载请 求, 并且。
6、在下载请求中告诉Git原生服务器, 用户原生Git客户端本地have 0commit,want commit A, depth1其中have和want是git clone命令通信协议中的数据报文字段; (11)用户命令拦截器收到步骤(10)中的用户原生Git客户端请求, 向Git原生服务器发 送数据打包命令, 并且强制设定打包深度depth1, 将commit A的代码数据单独打包; (12)用户命令拦截器收到commit A的代码数据包, 并且将后数据包回传至用户原生 Git客户端。 (13)用户原生Git客户端接收到步骤(12)中回传的数据, 下载了commit A, 并且只有A 一个co。
7、mmit; 由于在步骤(4)中git clone使用了-depth1参数, 故commit A数据可通过 用户原生Git客户端数据检验。 权利要求书 1/1 页 2 CN 111427615 A 2 一种用Git原生Clone命令克隆指定Commit的方法 技术领域 0001 本发明涉及一种克隆指定Commit的方法, 具体是一种用Git原生Clone命令克隆指 定Commit的方法。 背景技术 0002 Git目前已经成为全球最为广泛使用的分布式版本控制系统, 用户可以通过客户 端向服务器端提交(Push)或者下载(Clone/Pull/fetch)代码。 用户的代码变更以commit粒 度。
8、作为一次变更历史, 每次客户端向服务器端提交提交(Push)或者下载(Clone/Pull/ fetch)代码可以包含若干个commit。 其中Git clone命令默认是下载服务器端的整个代码 提交历史。 Gitpull和Git fetch命名是在客户端已经通过git clone命令获取了服务器端 代码的基础上, 进行差异部分的增量下载。 0003 但是在一些场合, 例如大型分布式构建系统, 每次进行代码构建时, 因为不可能在 构建机器上把所有代码库全部都先git clone缓存起来之后再进行git pull/fetch进行增 量下载。 所以在构建时, 需要直接使用git clone命令进行。
9、代码下载。 这样的话, 虽然实际代 码构建仅需要某个指定commit的代码, 但是需要把代码库的全部历史下载下来, 效率非常 低。 0004 Git原生Clone命令: 为了提升git clone(克隆)命令的效率, git clone提供了浅 克隆的方法, 具体方式为通过-depth参数指定克隆深度, 例如: git clone-depth10表 示只克隆最后的10个commit, 能在一定程度上避免clone全部代码历史的巨大浪费。 但是, Git原生克隆命令只能clone(克隆)最新的若干个提交历史(commit), 不能对指定的单个提 交历史(commit)进行clone(克隆)。 例。
10、如对于自动化构建系统, 因为需要对非最新的代码历 史进行重新构建, 浅克隆的深度无法确定, 所以无法解决此问题。 且浅克隆也是把最新的若 干次历史全部克隆下来, 不能精确对指定的单个提交历史(commit)进行精确clone(克隆), 也存在效率浪费。 0005 国外厂商Github/谷歌Gerrit: 提供了git fetch指定commit的方式下载指定 commit。 但是, 使用git fetch命令, 需要用户先在本地通过git init初始化一个代码库, 然 后通过git remote add origin命令添加远程仓库, 最后通过git fetch进行下载三个步 骤, 命令繁琐。
11、, 学习成本较高。 发明内容 0006 本发明的目的在于提供一种用Git原生Clone命令克隆指定Commit的方法, 以解决 上述背景技术中提出的问题。 0007 为实现上述目的, 本发明提供如下技术方案: 0008 一种用Git原生Clone命令克隆指定Commit的方法, 包括用户原生Git客户端和Git 原生服务器, 在用户原生Git客户端与Git原生服务器之间设置用户命令拦截器; 具有以下 步骤: 说明书 1/4 页 3 CN 111427615 A 3 0009 (1)当用户通过用户原生Git客户端向Git原生服务器发送普通Git命令时, 首先用 户通过用户原生Git客户端向Git。
12、原生服务器发送普通Git clone命令或者其他git命令; 0010 (2)用户命令拦截器拦截用户命令, 若发现用户命令为普通git命令, 则不做任何 额外处理, 并将用户命令发送给Git原生服务器; 0011 (3)Git原生服务器接收用户命令, 并将返回信息按照原路径返回至用户原生Git 客户端; 0012 (4)当用户通过用户原生Git客户端向Git原生服务器发送包含指定commit信息的 gitclone-depth1命令, 假设commit ID为A,其中A表示一个40位的真实commit ID值; 0013 commit信息可以在代码库URL中以特殊标志携带,或者git clon。
13、e命令后续版本支 持服务器端参数-server-option之后, 通过此参数指定; 0014 (5)用户命令拦截器解析到用户的git clone-depth1命令, 并解析出其中的40 位commit ID信息A; 0015 (6)用户命令拦截器向git原生服务器查询该commit A是否存在; 0016 (7)Git原生服务器向用户命令拦截器返回查询结果; 0017 (8)如果该commit A不存在, 用户命令拦截器向用户原生Git客户端返回错误信 息, 流程结束; 0018 (9)如果该commit A存在, 步骤(6)在查询操作完成后, 不再进行正常的git对象清 点来找出最新的co。
14、mmit信息, 而是伪造清点结果, 直接答复用户原生Git客户端, 最新的 commit就是用户指定的commit A; 0019 (10)按照git clone命令的通信协议, git clone命令接收到步骤(9)返回的信息, 获知Git原生服务器中最新commit的就是commit A, 然后会向Git原生服务器发送真正的下 载请求, 并且在下载请求中告诉Git原生服务器, 用户原生Git客户端本地have 0commit, want commit A, depth1其中have和want是git clone命令通信协议中的数据报文字段; 0020 (11)用户命令拦截器收到步骤(10)。
15、中的用户原生Git客户端请求, 向Git原生服务 器发送数据打包命令, 并且强制设定打包深度depth1, 将commit A的代码数据单独打包; 0021 (12)用户命令拦截器收到commit A的代码数据包, 并且将后数据包回传至用户原 生Git客户端。 0022 (13)用户原生Git客户端接收到步骤(12)中回传的数据, 下载了commit A, 并且只 有A一个commit; 由于在步骤(4)中git clone使用了-depth1参数, 故commit A数据可通 过用户原生Git客户端数据检验。 0023 与现有技术相比, 本发明的有益效果是: 0024 本发明提供一种可以克隆。
16、Git指定Commit的方法, 大幅提升在只需要单commit场 景下的clone(克隆)效率; 本方法使得git原生clone命令具备clone指定commit的能力, 在 只需要单个commit文件内容的场景, 大幅度提升git clone的效率。 通过在用户原生Git客 户端和Git原生服务器之间增加用户命令拦截器进行命令截获及数据修改, 使用git原生 clone命令及参数实现对任意指定的代码历史进行下载, 用户命令拦截器通过伪造最新 commit信息, 从而达到欺骗git clone命令的目的, 让git clone命令误以为服务器端最新 commit为指定的commit; 对指定c。
17、ommit数据进行打包时, 强制设置打包深度为1, 只进行单 commit数据打包。 说明书 2/4 页 4 CN 111427615 A 4 附图说明 0025 图1为一种用Git原生Clone命令克隆指定Commit的方法的整体技术示意图。 0026 图2为一种用Git原生Clone命令克隆指定Commit的方法中工作流程。 具体实施方式 0027 下面结合具体实施方式对本专利的技术方案作进一步详细地说明。 0028 请参阅图1-2, 一种用Git原生Clone命令克隆指定Commit的方法, 包括用户原生 Git客户端和Git原生服务器, 在用户原生Git客户端与Git原生服务器之间设置。
18、用户命令拦 截器, 用户原生Git客户端用以发送git命令, 用户命令拦截器用以对用户命令进行处理、 以 及对数据进行改写, Git原生服务器用以存储代码版本信息; 具有以下步骤: 0029 (1)当用户通过用户原生Git客户端向Git原生服务器发送普通Git命令时, 首先用 户通过用户原生Git客户端向Git原生服务器发送普通Git clone命令或者其他git命令, 如 图2中箭头1所示; 0030 (2)用户命令拦截器拦截用户命令, 若发现用户命令为普通git命令, 则不做任何 额外处理, 并将用户命令发送给Git原生服务器, 如图2中箭头2所示; 0031 (3)Git原生服务器接收用。
19、户命令, 并将返回信息按照原路径返回至用户原生Git 客户端, 如图2中箭头3、 箭头4所示; 0032 (4)当用户通过用户原生Git客户端向Git原生服务器发送包含指定commit信息的 gitclone-depth1命令, 假设commit ID为A,其中A表示一个40位的真实commit ID值; commit信息可以在代码库URL中以特殊标志携带,或者git clone命令后续版本支持服务器 端参数-server-option之后, 通过此参数指定(当前git clone命令尚不支持此参数), 如图 2中箭头1所示; 0033 (5)用户命令拦截器解析到用户的git clone-de。
20、pth1命令, 并解析出其中的40 位commit ID信息A; 0034 (6)用户命令拦截器向git原生服务器查询该commit A是否存在, 如图2中箭头2所 示; 0035 (7)Git原生服务器向用户命令拦截器返回查询结果, 如图2中箭头3所示; 0036 (8)如果该commit A不存在, 用户命令拦截器向用户原生Git客户端返回错误信 息, 流程结束, 如图2中箭头4所示; 0037 (9)如果该commit A存在, 步骤(6)在查询操作完成后, 不再进行正常的git对象清 点来找出最新的commit信息, 而是伪造清点结果, 直接答复用户原生Git客户端, 最新的 comm。
21、it就是用户指定的commit A, 如图2中箭头4所示; 0038 (10)按照git clone命令的通信协议, git clone命令接收到步骤(9)返回的信息, 获知Git原生服务器中最新commit的就是commit A, 然后会向Git原生服务器发送真正的下 载请求, 并且在下载请求中告诉Git原生服务器, 用户原生Git客户端本地have 0commit, want commit A,depth1(其中have和want是git clone命令通信协议中的数据报文字 段), 如图2中箭头5所示; 0039 (11)用户命令拦截器收到步骤(10)中的用户原生Git客户端请求, 向G。
22、it原生服务 器发送数据打包命令, 并且强制设定打包深度depth1, 将commit A的代码数据单独打包, 说明书 3/4 页 5 CN 111427615 A 5 如图2中箭头6所示; 0040 (12)用户命令拦截器收到commit A的代码数据包, 并且将后数据包回传至用户原 生Git客户端, 如图2中箭头7、 箭头8所示。 0041 (13)用户原生Git客户端接收到步骤(12)中回传的数据, 下载了commit A, 并且只 有A一个commit; 由于在步骤(4)中git clone使用了-depth1参数, 故commit A数据可通 过用户原生Git客户端数据检验。 004。
23、2 工作原理: 通过在用户git客户端和Git代码服务器之间增加用户命令拦截器进行 命令截获及数据修改, 使用git原生clone命令及参数实现对任意指定的代码历史进行下 载, 用户命令拦截器通过伪造最新commit信息, 从而达到欺骗git clone命令的目的, 让git clone命令误以为服务器端最新commit为指定的commit。 对指定commit数据进行打包时, 强 制设置打包深度为1, 进行单commit数据打包。 0043 上面对本专利的较佳实施方式作了详细说明, 但是本专利并不限于上述实施方 式, 在本领域的普通技术人员所具备的知识范围内, 还可以在不脱离本专利宗旨的前提下 做出各种变化。 说明书 4/4 页 6 CN 111427615 A 6 图1 图2 说明书附图 1/1 页 7 CN 111427615 A 7 。
- 内容关键字: Git 原生 Clone 命令 克隆 指定 Commit 方法
基于捕获模块验证的载波防错锁方法、装置及数据接收机.pdf
浅层气浮设备.pdf
安全防护装置及冲床.pdf
市电路灯灯杆结构及其LED路灯.pdf
激光复合清洗装置.pdf
具有防撞功能的海洋环境监测设备安装装置.pdf
通讯线缆盘卷装置.pdf
防尘式EVA塑料粒破碎机.pdf
晶圆检测的承载治具.pdf
多级滑杆机构的太阳能板角度调节装置.pdf
新型锚索注浆装置.pdf
便于定长控制的不锈钢激光切割机.pdf
用于输配电线路仿线飞行的激光雷达.pdf
单主梁吊钩门式起重机.pdf
具有防尘功能的振动电机.pdf
矿用单轨式吊载人车.pdf
水生态环境治理的污水回用设备.pdf
条装食品装袋机的条装食品组输送机构.pdf
条装食品的堆叠机.pdf
建筑施工振捣装置.pdf
节能型白法沥青烟净化系统.pdf
可调节取样位置的取样器.pdf
管柱筒调节支架机加工定位工装.pdf
高压厚壁球壳外壁裂纹应力强度因子的计算方法.pdf
电极组件及其制备方法、电池单体、电池和用电装置.pdf
混凝土喷淋养护装置.pdf
地坪研磨机齿轮箱.pdf
智能充电桩用车牌识别系统及方法.pdf
基于深度相机的矩形托盘孔识别方法及系统.pdf
免烧砖及其制备方法.pdf
高抗风强度的三角通讯塔结构.pdf
电传改装系统、其安装方法及车辆.pdf
提高6-苄氨基嘌呤制剂稳定性的可溶液剂及其制备方法.pdf
健康减重的糕点及其制作方法.pdf
基于身份格式保留加密的数据脱敏方法.pdf
双定子扁平型单相交流永磁直线电机.pdf
开口骨架尺寸快速检测工装.pdf
新型阻水方式的全干式光缆结构及其制备方法.pdf
电池包翻转装置.pdf
太阳能电池自动存储系统.pdf
井下巷道形成屏蔽隔水墙的地面水力投砂装置.pdf
隐藏式弹扣门锁及其拆卸方法.pdf
用于电子束物理气相沉积制备热障涂层的夹持装置.pdf
水下密封舱体装置.pdf
基于分布式光纤的预应力管道压浆缺陷定量评估方法.pdf
高强度混凝土管桩的制备工艺.pdf
柔性显示模组及其制备方法、柔性显示装置.pdf
带机械手的自动贴标机及贴标方法.pdf
具有防雾涂层的防蓝光镜片及其生产工艺.pdf
基于绿色原位还原的3D打印抗菌水凝胶伤口敷料.pdf
垂直分布式网料等拉力连续收卷进料装置及工作方法.pdf