unpack failed:error Missing tree错误的解决办法

unpack failed:error Missing tree错误的解决办法,第1张

使用Git的时候出现的问题

情况是已经提交到了gerrit然后又使用git commit --amend来修改message这个时候就出现了标题中的问题

解决办法

git push --no-thin origin HEAD:refs/for/项目名

具体就是卡在这个更新上:

想了想,应该是这个用 ssh key 认证更新。开始配置 ssh key

三步走完后,添加 ssh key 到Gerrit上。

1找到 ssh key 的配置页面

2添加

3完成

完成以上步骤之后,验证上传的 ssh key 是否能用。

验证命令:

验证成功:

我的问题就出现在这里,ssh验证不成功,导致cocoapod在更新ssh地址的时候失败

解决方案,关了自己的代理。 哭晕在厕所。。。

如标题描述,最近关于这个gerrit的submit type的设置引起了一个问题,我大概模拟了下开发的提交场景,如下:

开发A和开发B都在修改仓库repo_test的代码,开发A修改test1txt 然后提交到gerrit上,并在gerrit上合入了这个提交(commitA),开发B没有执行git pull, 直接修改了test2txt, 这个test2txt和test1txt没有任何关联性,是完全不相关的模块,然后开发B提交gerrit,然后gerrit上合入了这个提交(commitidB),此时,由于开发B的这个提交相对服务器少了开发A的改动提交,就自动生成了一条merge(叫commitB+吧),比如如下:

以上,B+是自动生成的merge,这个自动merge的记录在gerrit上是看不到的,真正的修改是在B,所以开发在gerrit上找到B,让我(职位:CM)在B节点标记tag,我在B标记tag后打包(我执行git checkout B),发现没有A的修改了,这就出问题了!!!但是git checkout B+就有A的提交!!

然后发现,是因为开发B没执行git pull ,没把A的改动带进去,所以提交的时候就自动产生了这个merge的提交记录,话说,使用rebase就不会产生,但是怎么搞呢?

然后发现了gerrit的submit type 可以控制:

默认的是“Merge if Necessary”, 这个就是在有差异的时候自动生成一条merge记录

所以换成“Rebase if Necessary”,这个会自动rebase,不会自动产生merge记录

如下是gerrit换成“rebase if Necessary”的提交记录:

STM32 对内部FLASH读写接口函数(转)

ymodem协议c实现(转)

STM32启动模式及API(转)

Keil STM32调试,使用ST-Link下载程序时提示“flash timeoutreset the target and try it again”

UVA 11020

LeetCode Maximal Square

Android中的消息机制

关于DPM(Deformable Part Model)算法中模型可视化的解释

Nodejs能够做什么?

hdu 1071 The area

Linux经常使用命令(九)

[ACM] hdu 4248 A Famous Stone Collector (DP+组合)

linux程序设计——个人总结

poj3252-Round Number 组合数学

QML与C++交互:登陆界面设计

delphi2010发送邮件—中文显示为乱码解决

WCF探索之旅(五)——WCF与WebService的异同

数据库备份还原,日志清理代码

Android自己定义View、画家(画布)Canvas与画笔Paint的应用——绘图、涂鸦板app的实现

Berkeley DB基础教程

SSL和SSH的差别

OpenStack作为第二大开源社区,拥有众多代码贡献者。但是,对于刚刚接触OpenStack,想要了解OpenStack源码,并且想为OpenStack的开发贡献自己的一份力量时,经常会不知从何下手。本文便是针对此类情况,介绍如何加入社区,如何提交commit,如何review代码等问题展开的。

1签订ICLA参与社区贡献前,需要签订ICLA协议。进入docsopenstackorg网站,在Contributor Guides下找到并点击“OpenStack Infrastructure User Manual ”。

依次打开图中所标注的链接。按照网站说明进行注册。需要注意的是,在注册launchpad时,要使用所在公司的邮箱,便于社区统计各公司的贡献数据。当然,如果你是自由职业者或者所在公司没有在社区上注册,则可随意使用一个邮箱。

图3当完成以上四步后,便可以看到OpenStack Individual Contributor License Agreement(ICLA)已验证。

上传自己的SSH 密钥

配置Git Bashgit config --global username "XXX"git config --global useremail XXX@XXXXXXcom此处填写要与gerrit账户一致。

安装git-review

下载源码库作为刚刚接触社区的同学,建议先在openstack-manuals项目上下手,一方面可以借此熟悉openstack。同时,在进行社区贡献,验证bug时,促使自己动手操作,增加运维经验。先从github上下载源代码,以OpenStack社区手册openstack-manuals为例:git clone git://githubcom/openstack/openstack-manualsgitcd openstack-manualsgit review -s首先会确保能使用你的ssh key登录gerrit,默认使用当前git环境变量配置的用户,否则,会提示输入gerrit用户名,可以通过这个链接查看gerrit用户名。成功后,会在openstack-manuals目录下生成一个gitreview目录最新代码:git checkout mastergit pull新建分支,如果是blueprint,分支名是“bp/BP-NAME”,其中的BP-NAME是在launchpad上bp的名称;如果是修复bug,分支明是“bug/BUG-NUMBER”,其中BUG-NUMBER可以在bug页面上找到:git checkout -b BRANTCH-NAME

commit注意,在每提交一个新的commit之前,请先确保代码是最新的。执行下面两条命令更新库。git checkout mastergit pull提交代码前,还需要对openstack-manuals目录下的git文件夹内的两个文件进行修改。

第一次需要生成一个密码,可以重复生成,请尽量选择使用没有特殊字符的密码,由大小写字母加数字的密码即可。若是在nova项目下,请修改标注的openstack-manuals为nova即可。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/meirong/8849209.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-28
下一篇2023-09-28

发表评论

登录后才能评论

评论列表(0条)

    保存