# Gerrit 大量代码提交流程优化

背景

本文适用于 提交大量初始代码 的场景(仓库版本的早期)。

有时候提交大量代码到Gerrit的时候会提示:

$ git push
Counting objects: 512996, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (482705/482705), done.
Writing objects: 100% (512996/512996), 2.61 GiB | 9.46 MiB/s, done.
Total 512996 (delta 123942), reused 624 (delta 117)
remote: Resolving deltas: 100% (123942/123942)
remote: Counting objects: 512999, done
remote: Processing changes: refs: 1, done
To ssh://xx@xx:29418/xxx
! [remote rejected] master -> refs/for/master (commit bb5b175: Exceeding maximum number of files per change (499908 > 100000))
error: failed to push some refs to 'ssh://xx@xx:29418/xxx'

此后就需要花费大量的人力到提交代码上,降低开发效率;因此有必要解决这样的问题。

注意,用这种方法提交的代码不会在Gerrit-Code Review区域显示,因此本文最适用于 提交初始代码 的场景,为了规范技术管理,其他场景的操作最好向管理员报备后再操作

做法

思路很简单,提交的时候绕过refs/for/ 和refs/heads/即可。

在Gerrit中添加权限

入口:点击Gerrit仓库,找到AccessEditADD REFERENCE

为了以防万一,添加一个组,赋予强推权限。

Gerrit新建强推组:syncer

> 实际上,下面的权限是我先通过`git push --force`以后,根据错误提示再一步步配置了Gerrit的权限得到的。

1、refs/heads/master

  • Push:ALLOW - sysncer - Allow pushing with or without force
  • Forge Committer Identity:ALLOW - sysncer
  • Forge Author Identity:ALLOW - sysncer

2、refs/remotes/origin/master

  • Create Reference:ALLOW - sysncer
  • Delete Reference:ALLOW - sysncer

3、refs/for/refs/heads/master

  • Create Reference:ALLOW - sysncer
  • Delete Reference:ALLOW - sysncer

提交方式

0、找到Gerrit的仓库地址,${Gerrit-repo}

1、拉取需要提交的Gerrit代码仓库:

git clone ${Gerrit-repo}

2、提交

注意,一般的Gerrit仓库要提交代码之前需要:config refs/heads/*:refs/for/*,但是在这里不需要。

git push

# 必要时,使用强推命令。
git push --force --mirror

结果:

Counting objects: 136002, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (125500/125500), done.
Writing objects: 100% (136002/136002), 971.01 MiB | 9.36 MiB/s, done.
Total 136002 (delta 27908), reused 0 (delta 0)
remote: Resolving deltas: 100% (27908/27908)
remote: Counting objects: 136015, done
remote: Processing changes: refs: 1, done
To ssh://xx@xx:29418/xx
610d066..c3d6d87f master -> master

3、验证:在另外的地方git clone下来看看git log记录,看看提交信息是否健全。

Gerrit 大量代码提交流程优化的更多相关文章

  1. 敏捷开发-代码提交流程& 安装gerrit

  2. git代码提交流程

    1.进入我的项目文件夹所在目录: 2.git status 查看我修改过的文件: 3.git add -A 将修改的文件全部添加, git add 文件名  只添加指定的文件名: 4.git comm ...

  3. Gerrit代码评审流程

    Gerrit代码评审流程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.代码评审流程(如下图所示) 第一步:贡献者报建一个提交,并通过之前从gerrit下载的commit-ms ...

  4. Openstack贡献者须知 2 — 社区工作运作 & 代码贡献流程

    目录 目录 前文列表 订阅邮件列表 Mailing Lists 社区工作运作流程 Openstack 代码贡献流程 PEP8 Python编程风格 查阅相关资源 前文列表 Openstack贡献者须知 ...

  5. Git代码版本控制流程

    我们的项目使用Git作为代码仓库.和版本控制工具. Git有几种Workflow,来管理代码版本变更流程,我们采用Gitflow Workflow流程. Gitflow Workflow,采用了mas ...

  6. Git代码提交规范

    1. 引言 思想,因人而异,难以重复 写代码时,每个人的习惯是不一样的,所以,引入了代码规范,为了省力,引入了自动格式化代码工具,前端工程中比较典型的自动格式化代码工具如:Prettier · Opi ...

  7. iPhone应用提交流程:如何将App程序发布到App Store?

    对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时刻就是将应用程序提交到iTunes App Store.Xcode 4.2开发工具已经把App提交 ...

  8. kbengine Unity3d demo 代码执行流程(4)

    当服务端成功启动,客户端链接服务端后进入demo中的游戏界面,demo中的功能包括注册.登录.角色管理.战斗.场景等等. 对于新接触kbengine的人,看见客户端的代码后会觉得很迷茫,有些无从下手. ...

  9. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

  10. Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践

    结合Git使用Bitbucket进行代码版本管理流程规范与实践   By:授客 QQ:1033553122   目录 目录 1 一. 测试环境 2 二. 新建项目 2 三. 新建公有版本库 3 四. ...

随机推荐

  1. Solution Set - SAM

    讲解一些 SAM 经典的应用.可以结合 字 符 串 全 家 桶 中 SAM 的部分食用. 洛谷P2408 求不同子串个数.在 SAM 中,所有结点是一个等价类,包含的字符串互不相同.结点 \(u\) ...

  2. 茴香豆 RAG 平台实操-书生浦语大模型实战营第二期第3节作业

    书生浦语大模型实战营第二期第3节作业 本页面包括实战营第二期第三节作业的全部操作步骤.如果需要知道RAG相关知识请访问学习笔记. 作业要求 基础作业 在茴香豆 Web 版中创建自己领域的知识问答助手 ...

  3. gprMax项目代码分解:gprMax.py

    目录 1. 引言 2. 代码分解 (1) 导入模块 (2)main()函数 (3)run_main()函数 (4)run_std_sim()函数 (5)run_benchmark_sim()函数 (6 ...

  4. SQL——连续出现的数字

    SQL三个排序函数 ROW_NUMBER().RANK().DENSE_RANK() ROW_NUMBER()不并列 连续的 RANK()分组不连续排序(跳跃排序) DENSE_RANK()并列连续 ...

  5. ubuntu配置nginx+php开发环境(virtualbox)

    A.安装环境 1.安装php7.0 sudo apt install php7.0 2.安装php7.0-fpm,这是php和nginx之间的连接器. sudo apt install php7.0- ...

  6. mac更新nodejs

    查看本机node.js版本: node -v 清除node.js的cache:sudo npm cache clean -f 安装 n 工具:sudo npm install -g n 安装最新版本的 ...

  7. 移动端termux安装kali

    1.相关准备一部安卓手机,termux,NVAC,浏览器2.安装kali首先进入kali的官网选择文档找到Android手机上的kali找到NetHunter-Rootless找到kali安装命令:t ...

  8. 第三方调用saltstack

    python api使用 实例及工作原理解析 指定target 函数,命令等等,就可以可以了. [root@mcw01 ~]# python Python 2.7.5 (default, Aug 4 ...

  9. kubernetes 之网络(canal)

    https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ 所有节点重设 ...

  10. 将自己喜欢的网页保存为单个文件包括图片(mhtml文件)

    from selenium import webdriver driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver.exe') ...