当前位置: 首页 > news >正文

2.git-repo部署及新项目创建

特别说明
如果repo projects是可以下载的,建议下载时,repo init之后,到.repo中找到对应manifest,将所有的clone-depth删除,避免后面在git push的时候出现难以解决的错误:

remote unpack failed:error Missing commit

开始操作

1. 遍历所有project

在repo projects根目录执行

repo forall-c'echo $REPO_PROJECT'|teeprojects.txt

如果所有的proejcet放到Gerrit同一目录下,而不是Gerrit根目录,则可以:

repo forall-c'echo xxx/$REPO_PROJECT'|teeprojects.txt

2.生成批量创建projects脚本

修改{user}和{GerritServer}
注意要确保user是有创建Project的权限:

sed's/^/ssh -p 29418 {user}@{GerritServer} gerrit create-project /'projects.txt>createProjects.sh

3. 执行脚本创建空projects

chmod777createProjects.sh ./createProjects.sh

执行过程可能会报project already exist,这说明存在多个Repo Path指向了同个Repo Project,通常是branch或revision(commit id)不同。 这时候可以将前面的projects.txt内容贴到excel表,利用excel表的查重功能找出这些project。

再到manifest文件中搜索这些project,确认是branch不同还是revision不同,在Push完所有代码后再补操作。

4. 确认Gerrit All-Projects的权限

5. Push所有代码

修改{user}{GerritServer}{xxx}{BranchName}(repo forall-c'pwd && git push --tags -f -o skip-validation ssh://{user}@{GerritServer}:29418/{xxx}/$REPO_PROJECT HEAD:refs/heads/{BranchName}')2>&1|teepush.log

6. 单project推送

如果出现个别project推送失败需要重新推送,可以到相应路径下执行如下命令:(修改{user}、{GerritServer}和{ProjectName})

gitpush--tags-f-oskip-validation ssh://{user}@{GerritServer}:29418/{ProjectName}HEAD:refs/heads/{BranchName}

7. project already exist处理 核对完manifest后:

(1)若是branch不同,则查看Gerrit上现在的codebase是哪个Branch,然后到还没被Push上去的Project Path,用同样的push命令,更换BranchName后执行
(2)若是revision不同,则查看Gerrit上的Branch log中有没有包含到所有revision,若没有,则到revision最新的Project Path下再执行一次push

8. 建立自己的repo manifest

(1)将原来的.repo/manifest/xxx.xml拷贝一份到自己Gerrit manifest仓库下,然后将里面的dest-branch和upstream都改成自己新建的BranchName。
(2)删除所有project revision,可以用Nodepad++的正则表达式,将所有revision=“xxx”替换为空,但要保留内的revision
(3)针对多Path指向同一个Project不同Branch,则要特别保留它的dest-branch和revision,revision没有保留的话,会被上的revision覆盖
(4)针对多Path指向同一个Project不同revision,则要特别保留它的revision

revision=\"([^\"]*)\"

注意如果想避免多出一个空格,想在查找目标中多加一个空格一起替换掉,则要加在前面,因为有的project把revision放在最后,后面没有空格。

9.manifaset修改

配置文件中的remote=“origin” 代表project默认关联的下载路径为origin定义的代码Gerrit project路径,revision=“master” 代表下载关联的分支名称,若需要修改repo init默认的分支,修改该定义值就行

<remotename="origin"fetch="../eeasytech/sar-linux"/><remotename="forfun"fetch="../xxx/linux"/><defaultremote="origin"revision="master"sync-j="4"/>

10.服务器开发代码与原厂SDK同步与维护

下载原厂SDK并将SDK备份到Gerrit

先将SDK代码打包,拷贝到服务器下,然后解压后进入到目录下执行如下命令,一开始创建gerrit manifest项目时候,创建两个分支,一个是原厂分支,一个是开发分支,(修改{user}:Gerrit用户、{GerritServer}:Gerrit服务器地址;{RepoProjectPatch}:Gerrit项目服务器的文件夹或路劲,{BranchName}:服务器远程SDK分支名称)

(repo forall-c'pwd && git push --tags -f -o skip-validation ssh://{user}@{GerritServer}:29418/{RepoProjectPatch}/$REPO_PROJECT HEAD:refs/heads/{BranchName}')2>&1|teepush.log

从Gerrit下载公板SDK

修改{BranchName}:manifests 仓库SDK项目对应的分支;{ManifestsName}:manifest 的xml配置文件名称

repo init-ussh://$USER@{GerritServer}:29418/git/manifests.git-b{BranchName}-m{ManifestsName}reposync

举例:

repo init-ussh://$USER@192.178.1.108:29418/git/manifests.git-ballwins-mlinux-v1.0.xml reposync

开发线(master)rebase公板SDK

#本地先重新下载全新开发线代码,再执行如下命令
{BranchName}:原厂SDK同步分支

repo forall-c'echo $REPO_PROJECT;git rebase origin/{BranchName}'

##通常执行完后很多仓库会有冲突,需要到有冲突的仓库依次解完冲突,然后执行

gitrebase--continue

通过以上命令rebase后,本地解决所有冲突,就可以强推到服务器开发线,rebase后的结果是我们的所有commit都会基于最新sdk的commit。
修改:
{RepoProjectPatch}:Gerrit项目服务器的文件夹或路劲
{GerritServer}:gerrit服务器地址
master:创建的项目开分支为主分支,取决创建项目时定义开发分支的分支名

(repo forall-c'pwd && git push --tags -f -o skip-validation ssh://$USER@{GerritServer}:29418/{RepoProjectPatch}/$REPO_PROJECT HEAD:refs/heads/master')2>&1|teepush.log
http://www.jsqmd.com/news/600466/

相关文章:

  • 2026年比较好的折叠门功能五金/功能五金生产厂家推荐 - 品牌宣传支持者
  • 深度行业洞察:如何科学评估与挑选高品质宠物智能舱?
  • 基于机器学习与深度学习的高光谱图像分类包含3DCNN_SVM、3DCNN_RF、3DCNN_SVM三种。其他的需要可以自己改机器学习 深度学习 卷积神经网络 3DCNN 2DCNN 高光谱
  • UI----1
  • 2026年4月吡咯喹啉醌肽饮推荐指南 - 优质品牌商家
  • 2026铸铁雨篦优质供应商推荐榜 高性价比选型 - 优质品牌商家
  • StructBERT-Large中文复述识别效果展示:中文机器翻译后编辑(MTPE)质量语义评估
  • MiniCPM-V-2_6高可信推理:Object HalBench幻觉率低于GPT-4o实测
  • 崇左本地人推荐的越南火锅店必吃榜
  • 掌握Makefile:从基础到高级的自动化构建指南,依托Java和百度地图实现长沙市热门道路与景点实时路况检索的实践探索。
  • 计算机网络:从基础到未来趋势,从0死磕全栈之Next.js 中间件(Middleware)详解与实战。
  • 2026年降AI工具价格全面对比:哪款最便宜还好用
  • DAO(去中心化自治组织)初探
  • WPF开源Office控件库全解析,利用css的动画效果制作轮播图。
  • DAMO-YOLO目标检测环境搭建DAMO-YOLO数据集代训练DAMO-YOLO代码改进更新可搭建windows系统和ubuntu系统的环境,搭建完直接可用可训练任意目标检测的coco格式数
  • 操作系统常见问题
  • (云知识)云平台,云服务,,
  • 微型载货汽车盘式制动器设计【毕业论文+cad图纸+开题报告+任务书……】
  • AIGC检测能识别哪些AI工具生成的内容:检测边界解析
  • 崇左便宜的饭店本地人推荐
  • 别只盯着server.log了!Kafka Controller日志与GC日志里的“宝藏”与“陷阱”
  • 从零配置上网行为管理:H3C AC本地认证与第三方AAA服务器切换指南
  • 城通网盘直链解析:三步实现免费高速下载的完整方案
  • OpenClaw跨技能协作:gemma-3-12b-it协调多个模块完成复杂项目
  • OpenClaw多任务管道:Phi-3-mini-128k-instruct串联处理复杂工作流
  • 开源鸿蒙跨平台Flutter开发:基于 CustomPaint 的高刷心电图 (ECG) 渲染引擎设计-临床体征实时监测终端
  • with open方法详解
  • OpenClaw+百川2-13B-4bits量化版:低成本搭建个人AI助手全流程
  • 崇左大新县一带,有没有本地人强烈推荐的美食老店
  • PLY格式驱动3D视觉检测革命,常规可见光相机在工业视觉检测中的应用。