这篇讲内网 GitLab 占着大内存、团队却只用仓库和评审时怎么把这三件事放到更轻的 AngusGit 上。看完你可以按团队建好仓库并连同历史迁入配好合并方式和分支保护构建继续留在 Jenkins制品继续留在制品仓库。先登录 AngusGit。搬一个仓库时在设置 → 团队点新建团队团队标识沿用 GitLab 组的英文名。侧栏仓库 → 新建仓库所有者选这个团队添加 README 文件、添加 .gitignore、选择许可证都不要勾否则推送会因为历史对不上被拒绝。本机没有公钥时执行ssh-keygen -t ed25519 -C youexample.com把cat ~/.ssh/id_ed25519.pub的那一行登记到我的 → SSH密钥。然后执行地址换成你的主分支叫master时先在裸仓库里git branch -m master maingitclone--barehttps://gitlab.example.com/组/项目.gitcd项目.gitgitpush ssh://gitgit.example.com:2222/团队/仓库.git--allgitpush ssh://gitgit.example.com:2222/团队/仓库.git--tags用户名是git端口是 2222。改用 HTTPS 时到我的 → 访问令牌生成一把勾了git:write、仓库权限为WRITE的令牌用户名填登录名密码填令牌。验收用下面的命令没有意外输出就是两边一致diff\(gitls-remote--heads--tagshttps://gitlab.example.com/组/项目.git|sort)\(gitls-remote--heads--tagsssh://gitgit.example.com:2222/团队/仓库.git|sort)仓库多时把 GitLab 路径和「团队/仓库名」每行一对写进repos.txt对每一行重复上面的克隆和推送。先手动成功推一个并在系统凭据窗口里保存令牌再跑循环。master改成main时这一对名字不同是预期的。拉取请求在 GitLab 里叫合并请求Merge Request和 AngusGit 页面上的拉取请求是同一件事。GitLab 占内存是因为它的一体化安装包里带了数据库、缓存、后台任务、内置 CI、容器镜像仓库和监控等一整套组件即使只用代码托管这些进程也一直在后台运行。如果你们的流水线已经在 Jenkins 上跑、制品也有单独的仓库那么用 2 核 4 GB 起步的 AngusGit 承接仓库、拉取请求和代码评审这三件事就够了。1. 先确认团队真的只用这三件事吗动手之前先花十分钟确认现有 GitLab 上哪些功能真的在用。可以对照下表逐项问一遍功能在用吗拆分后放在哪仓库托管、推拉代码几乎一定在用AngusGit合并请求、网页评审几乎一定在用AngusGitIssue、里程碑看团队习惯AngusGit 也有可以一起迁GitLab CI不一定已经在 Jenkins 上的继续用 Jenkins容器镜像仓库、软件包仓库不一定制品仓库例如 AngusRepoGit LFS少数团队在用AngusGit 不支持这类仓库先留在原处Git LFS 是把大文件存在仓库之外的 Git 扩展。如果 GitLab CI 和 Git LFS 这两行的答案都是「不用」拆分会很顺利如果团队重度依赖 GitLab CI先看文末参考里的选型一文评估流水线怎么处理。2. 第一件仓库AngusGit 上的仓库都挂在团队下面地址形如ssh://gitgit.example.com:2222/团队/仓库.git。所以搬仓库分三步先建团队再把仓库搬过来最后让开发者改远程地址。按现在的分组建团队在设置 → 团队里新建团队一个团队对应 GitLab 上的一个组。团队标识会出现在仓库地址里建议沿用 GitLab 组的英文名这样大家改远程地址时更好记。把仓库连同历史搬过来先在 AngusGit 上新建同名的空仓库然后用git clone --bare从 GitLab 克隆一份完整副本裸仓库只存 Git 数据没有可编辑的工作区再用git push --all和git push --tags推到 AngusGit。这样提交历史、全部分支和标签都会带过来。让开发者改远程地址每个人在本地仓库里执行git remote set-url origin把远程地址换成新地址。用 SSH 的先在我的 → SSH密钥登记公钥用 HTTPS 的密码一栏填我的 → 访问令牌里生成的令牌。命令、凭据和两边对比见开头。先手动成功推一个仓库再对repos.txt里的每一行重复同样的克隆和推送。3. 第二件合并请求在 AngusGit 上合并请求叫拉取请求用法和 GitLab 的 Merge Request 一样从功能分支发起合进main。需要提前定下来的是合并方式。打开仓库的设置 → 拉取请求这里有三个开关合并提交、压缩合并、变基合并。只打开团队约定的那一种合并框里就只会出现这一种避免每个人按自己的习惯选。如果还没想好选哪种想保留每个提交选合并提交希望一个拉取请求在main上只留下一条提交选压缩合并。三种方式的详细区别见文末参考里的合并方式一文。4. 第三件人工评审评审在侧栏的评审里完成。评审人打开待评审里的一条拉取请求在文件变更里逐个文件看差异在需要讨论的行上留言最后点提交评审选择批准、请求更改或评论。以还开着的 xlliu/test-cicd-example #1 为例它的标题是「SC-02/SC-04 PR trigger verification」状态是待评审。页面左侧是文件树两个文件都还没有标记为已查看右侧展开的是apps/service-a/src/index.js新增了两行目前还没有行评。点右上角的提交评审会弹出一个对话框标题同样是「提交评审」说明文字是「选择你的评审决定并添加评论」下面有批准、请求更改、评论三个选项。选好结论、再点对话框里的提交评审评审才算提交只打开对话框状态仍然是待评审。到这一步评审人批不批准还只能靠自觉。要把评审变成必须遵守的规定需要打开分支保护也就是给分支加上「禁止直接推送、合并前必须满足条件」的规则保护主分支打开仓库的设置 → 分支保护给main添加一条规则打开需要代码评审必需的评审人数填 1并打开对管理员同样生效。保存之后直接推送main会被拒绝改动必须通过拉取请求、拿到批准后才能合并。按目录指定评审人可选如果不同目录由不同的人负责就在仓库里加一个 CODEOWNERS 文件写明每个目录的负责人。之后创建拉取请求时系统会自动把对应的人加为评审人。配好之后团队每天的流程就固定为开分支、推送、发起拉取请求、评审人批准、合并。每一项的具体设置见文末参考里的分支保护和 CODEOWNERS 两篇。5. 不放进来的功能交给谁仓库、拉取请求和评审之外的功能继续交给各自的专职系统对应关系如下功能原有系统归属拆分后怎么处理构建和测试Jenkins继续用 Jenkins触发方式见表后说明镜像、软件包制品仓库放在制品仓库里例如 AngusRepo大文件Git LFS / 存储AngusGit 不支持 Git LFS大文件放到制品仓库或 Release 附件统一登录用户中心用户和登录由 GM 管理对接 LDAP 在 GM 企业版上配置构建这一行要注意触发方式。Webhook 是代码有变动时自动通知外部系统的机制而 AngusGit 的推送 Webhook 只在git push时发出所以在网页上合并拉取请求之后建议让 Jenkins 配合 Poll SCM轮询 SCM定时检查分支有没有新提交来发现新代码。这样拆分之后每个系统各管一件事出了问题也更容易定位是哪一边。常见问题拆出来之后原来的 GitLab 怎么办先不要删。把 GitLab 改为只读保留一段时间方便回查旧的合并请求和讨论记录确认没有遗漏后再归档。迁移期间怎么双跑新旧平台并行一段时间期间只让一边可写、出了问题怎么回滚见文末参考里的迁移清单一文。以后又需要内置流水线了怎么办AngusGit 的团队版和企业版带内置流水线换用对应的安装包即可已有的仓库和拉取请求数据不受影响。社区版人数不够怎么办社区版最多 10 个用户超过时换用团队版或企业版仓库、拉取请求和评审的用法都不变。小结GitLab 私有化部署吃内存很多时候是因为一整套组件都在运行而团队只用其中三件事。把仓库、拉取请求和人工评审搬到 AngusGit 上仓库按团队建好连同历史一起搬过来合并方式在设置 → 拉取请求里统一评审在评审里完成再用分支保护和 CODEOWNERS 把它变成规定。构建继续交给 Jenkins镜像和软件包放到制品仓库以后需要内置流水线时换用团队版或企业版即可。结论只保留仓库、拉取请求和代码评审三件事时用 2 核 4 GB 起步的 AngusGit 加 GM 就能替代重型 GitLab构建和制品分别留给 Jenkins 和制品仓库。参考文章AngusGit 手册拉取请求AngusGit 手册代码评审私有化 Git 怎么选用一套仓库和合并请求替换 GitLab从 GitLab 搬仓库到 AngusGit公开项目直接导入私有和内部项目推送合并请求怎么合入在保留提交、压缩和变基里选一种在合并请求里做完代码评审看 Diff、写行评、通过或打回怎么保护 Git 主分支先开分支保护再用合并请求合代码谁来审这段代码用 CODEOWNERS 按目录自动指派评审人从 GitLab 迁到 AngusGit迁移清单、双跑和回滚
企业数字化 ERP 产品动态
相关推荐
[Python-3] 分支与循环 一、程序执行流程
程序的执行流程,可以理解为:程序按照什么顺序执行语句,以及在什么情况下执行哪些语句。
我们先认识三种基本流程:顺序、分支和循环。
1、顺序结构
顺序结构是最基本的执行方式。在没有被分支、循环等结构改变执行… · 2026/11/3 2:46:27
仓库一年悄悄吃掉你多少利润?一位批发老板的“WMS觉醒“ 老张在郑州做快消品批发十二年,年营收八千万,仓库三千平,SKU 上万。他一直以为自己是个"做生意的",直到去年年底对完账才发现:自己其实是个开仓库的。旺季的时候,送货的车在门口排两个小时&#… · 2026/11/3 2:46:27
Android SystemUI架构设计:进程模型、模块划分与通知管线 简介:这份演示文稿聚焦 Android SystemUI 架构设计,面向系统开发、Framework 定制及系统 UI 组件学习者,帮助理解 SystemUI 的职责范围、模块划分和通知处理链路。内容从 SystemUI 的定位与源码目录切入,依次介绍状态栏、通知、锁… · 2026/11/3 3:16:32
Visual Studio资讯订阅指南与技巧 1. 为什么需要订阅Visual Studio的独家资讯? 作为一名长期使用Visual Studio进行开发的程序员,我深刻体会到及时获取官方更新信息的重要性。Visual Studio作为微软旗下的旗舰级集成开发环境(IDE),其功能迭代速度之快、… · 2026/11/3 3:16:32
VSCode开发SpringBoot项目:轻量高效的全栈解决方案 1. 为什么选择VSCode开发SpringBoot项目?作为一名长期使用IntelliJ IDEA的Java开发者,我第一次尝试用VSCode开发SpringBoot项目时内心是充满怀疑的。但经过三个月的深度使用后,我发现这个轻量级编辑器在SpringBoot开发中展现出惊人的潜力。VS… · 2026/11/3 3:16:32
HDFS分布式存储原理与大数据应用实践 1. HDFS 的分布式设计哲学在2003年的一个普通工作日,Doug Cutting正在为他的开源网络爬虫项目Nutch的存储问题发愁。当时的单机存储系统已经无法满足日益增长的网页数据存储需求,这促使他开始思考如何构建一个能够跨多台机器工作的文件系统。这个想法最终… · 2026/11/3 3:16:32
C语言文件读写入门:fopen、fgets与fclose文本持久化实战 简介:这份C语言文件读写学习文档面向刚接触文件操作的初学者,围绕如何用标准库把数据写入文件、再从文件读回并输出这一常见需求展开,重点降低fopen、fprintf、fgets、fclose等函数的上手门槛。压缩包仅含1个doc文件,体积约14KB&a… · 2026/11/3 3:16:32
电动汽车智能充放电调度系统设计与优化算法实现 1. 项目背景与核心价值电动汽车有序充放电调度系统是当前智能电网研究的热点方向。随着电动汽车保有量快速增长,无序充电行为给电网带来的负荷压力日益凸显。我们团队开发的这套系统创新性地结合动态分时电价机制,通过多元宇宙优化算法实现实时调度&… · 2026/11/3 3:15:32
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18