返回资讯中心
外部精选
软件工程
#开发者实时流

开发者从零构建 Git 远程托管平台,工作项需通过测试才能合并

来源标题:I released my Git Remote Hosting built from scratch

一位开发者发布了自己从零构建的 Git 远程托管服务,将代码、评审、工作项和流水线整合在同一流程中。该平台要求工作项必须绑定测试,测试通过后合并才会放行,即“完成”由检查而非勾选决定。目前处于 Beta 阶段免费,代码存储于欧盟境内,网站不设置 Cookie。

Hacker News 最新kevindenotariis2026/11/13 · 今天15 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

你的代码、代码评审、工作项和流水线,都在一条线上。一个工作项可以指明证明它已完成的测试,而合并会一直等待直到这些测试通过。完成是一项检查,不是一个复选框。 Beta 期间免费。你的代码存储在欧盟。本站不设置任何 cookie。 失败 webhook 投递采用退避重试 失败的投递按指数退避(已满足)绑定到一项测试。在最近一次流水线中通过。 没有事件会被投递两次(失败中)绑定到一项测试。在 !128 的头部失败。 webhook 代码的覆盖率保持在 80% 以上(已满足)绑定到覆盖率。最近一次流水线中为 86%。 关闭 #412 !128 使用指数退避重试 webhook 投递 暂时无法合并:#412 上有一项必需标准未通过。 四个作业在同一条线上,而且每个作业都知道其他作业的存在。名字本身就说明了:git,以及所有流水线之母。 仓库可以按你的组织层级任意深度分组,并配有分支规则、推送规则和代码所有者。 合并请求带有一份实时清单,列出仍然阻碍合并的事项,并为过大的改动提供堆叠。 工作项可以链接到提交,跟随它们所涉及的代码,并知道自身何时完成。 在浏览器中绘制的流水线,面向 npm、Cargo 和 PyPI 的包,发布,以及一份记录什么在何处运行的目录。 这里的每张图都是产品本身,由我们的测试套件在示例数据上拍摄:一次改动,重试 webhook 投递,从工作项一直追踪到 API。 工作项 #412 指明了证明它已完成的检查:两项测试、一个覆盖率下限和一个延迟预算。其中一项测试在 !128 的头部失败,因此合并会等待,它上面的堆叠也会等待。 #412 被固定到重试循环上。当该循环从 webhooks/ 移到 delivery/ 时,锚点也随之移动,并说明它还有多少仍然匹配。 rust-build 是平台团队发布的一个组件。每次使用它的运行都会把它的步骤绘制为一个组,并带上该次运行解析到的版本。 人员、团队和服务账户在同一个列表中,并显示每项授权的来源、结束时间以及上次使用时间。 最多可将四个角色并排比较,无论是内置角色还是你自己的角色,并且只显示它们之间的差异。涉及他人访问权限的权限会被标记为敏感。 说明一个 token 的用途,页面就会用文字说明它能做什么、不能做什么——权限范围字符串放在其次。这个 token,release-bot,可以克隆、推送和运行流水线,仅此而已。 每条记录在写入时都会被封入哈希链。验证完整性会重放该链,并报告任何被编辑、删除或重排的记录。 Gitmoap 在每次推送时索引你仓库中的规格:它们的状态、类型化行、标识符和引用。如果一个规格声称已实现,但工作项仍未勾选,就会收到警告。 developers.gitmoap.com 上的每个操作都有自己的页面:它接受什么、需要什么权限范围、是否被审计、四种语言的示例,以及一个在你的浏览器中作答且不向任何地方发送数据的沙箱。 将一项标准绑定到测试、测量值或覆盖率,运行它的流水线就会在发布分支上的真实提交上填好这个框。未满足的必需标准会让工作项保持打开,合并按钮可以拒绝该改动。一个已关闭的工作项甚至会在证明它的测试再次变红时自行重新打开。 将工作项固定到代码的某个区域,Gitmoap 会跟随该区域经历每一次重命名、重新格式化和重构。在提交中写入 Fixes #412,当该提交到达你发布所依据的分支时,工作项就会关闭。 Gitmoap 会读取你已经保存在 specs/ 和 docs/ 下的 markdown:每份文档的状态、所有者与评审日期,每条规则以及谁引用了它,每个失效的链接。它会在每个分支上检查这些内容。 每一次改动、登录、推送和克隆在写入时都会被封入哈希链。你可以随时重放该链,以证明没有任何内容被编辑、删除或重排,包括我们自己的操作。 服务目录将服务映射到仓库路径,因此一个仓库可以容纳五个服务,而一个服务也可以跨越三个仓库。所有权是一个真实的组:失败的检查会把它的工作归档到其中。 在免费计划下,你的仓库、数据和备份存储在 AWS 爱尔兰。在 GitHub 和 GitLab 上,将数据保留在欧盟需要 Enterprise Cloud 或 Dedicated。 Gitmoap 是如何构建的,用你可以要求我们负责的事实来说明。 API 是一个 Rust 服务。教会 git 推送和克隆的客户端也是 Rust。 一个确定性模拟器运行整个平台并检查 118 条不变量,就像测试数据库那样。 API、CLI、文档参考和 API 参考都由相同的端点声明生成。如果它们出现偏差,构建就会失败。 Aurora PostgreSQL、S3 和 EFS,以及 Graviton 上的 ECS。静态和传输中均加密。每日备份,保留 95 天。 每个查询都在以你的组织为键的行级安全下运行,并叠加在应用自身的检查之上。Git 存储和流水线主机是共享的,我们对此明确说明。 每个 GitHub 和 GitLab 单元格都链接到产品自己的页面,并显示我们读取该页面的日期;链接的日期会打开该页面的存档副本。如果某项功能需要付费计划,单元格会指出最便宜的计划,针对私有仓库,按团队实际使用的方式。如果这里有内容过时,请告诉我们,我们会修正。 十件 GitHub 和 GitLab 都不做的事,十一件它们保留给付费计划的事,以及十六件 Gitmoap 尚未做的事。 Gitmoap 是一个概念验证,由一个人构建和运行。它在 Beta 期间免费,并且不提供任何保证:没有正常运行时间承诺,没有认证。 如果它有一天关闭,你会提前七天收到通知。Git 让保留自己的副本变得容易,你应该保留一份,无论在这里还是其他地方。 首个仓库指南会带你从登录开始,一直到拥有一个包含你的代码并在其上运行流水线的仓库。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →