AngusGit 是什么:一个代码托管与协作平台,保护分支和合并请求,需要时再 CI 构建

简介: AngusGit 是一个代码托管与协作平台。用 SSH 或 HTTPS 推代码,用保护分支和合并请求做评审,需要构建时再跑同一套账号下的流水线。仓库留在你自己的磁盘上。

AngusGit 是一个代码托管与协作平台,保护分支和合并请求,需要构建时再跑流水线。你用 SSH 或 HTTPS 推代码。分支保护写在仓库旁边。合并请求上做行级评审。需要构建时,流水线和这个仓库用同一套登录。仓库数据在你这次安装的磁盘上,可以留在内网。登录和成员目录在门户,不在仓库页里再做一套账号。

解决的主要问题

  • 改完的代码还在个人目录里,别人看不到这次差异。新建仓库后,用页面上的命令把现有目录推上去。HTTPS 的密码填访问令牌,SSH 先在「我的」加上公钥,端口默认 2222。推完打开仓库,文件树里能看到这次提交。
  • 看过的意见留在聊天里,合进去时指不出是哪一行。评审写在合并请求的差异行上。人数没到,或有人请求了修改,合并卡会写明还不能合。人数到了、评论按仓库要求解决了、必需的状态检查过了,才能点合并。
  • 构建另开一套账号,失败了还要对一次是谁推的。流水线和这个仓库用同一套登录。运行器和这次运行的日志都在 CI/CD 下面,不用再拿另一个账号去对推送的人。
  • 代码在一个系统里,流水线在另一个系统里。推送之后要到别处看构建,失败了也回不到这条合并请求。流水线写在这个仓库的 .anguscicd.yaml 或 .anguscicd/ 里,推送或合并请求会触发一次运行。状态检查里的名字可以点进那次日志。要让失败挡住合并,还得把检查名写进保护规则。
  • 合并时挡得住的只有评审,安全和构建结果进不了这道门。保护规则打开「要求安全检查通过」。仓库再打开「未通过时拒绝合并」时,未通过就不能合。构建或质量检查要挡住合并,把那个检查名写进「必需的状态检查上下文」。名单空着,页面上的失败不会拦住合并。还没扫描过,不能当成没有问题。

注意: 它不是只提供 git clone 的裸仓,也不是扫描程序本身。检查由安全产品执行,结论回到仓库的安全页和合并请求的状态检查上。这里看不到检查引擎的规则原文。助手查询到的是仓库上的安全分汇总,未扫描时不会被说成没有问题。直接向受保护分支推送会被拒绝。网页上改受保护分支上的文件,会先新建分支,再发起合并请求。

主要功能

AngusGit 功能架构

登录之后先落到「欢迎回到 AngusGit」。这一屏把待办协作、近期动态和自己的贡献放在一处。

欢迎回到 AngusGit。副文案是查看待办协作、近期动态和贡献记录。主区域是今日工作台和最近活动。工作台里能看见新建仓库、打开 PR、CI/CD 总览、根据仓库生成流水线。顶栏是「中文」。左侧是收起后的图标条。

仓库。 侧栏「仓库」的说明是「管理和浏览你的代码仓库。」页签是全部、已星标、私有、公开、已归档。搜索占位是「查找仓库...」。有创建权限时,右上角四个入口:新建仓库、导入仓库、上传导入、批量导入。

新建仓库的标题是「创建新仓库」。所有者是你的个人账号或所在团队,创建后出现在克隆地址的第一段。仓库名称只能是字母、数字、连字符、下划线和点,不能是 . 或 ..。可见性是公开或私有。可以加 README、按语言加 .gitignore、选一份许可证。点「创建仓库」后进入这个仓库的代码页。

导入仓库填仓库 URL、所有者、名称,可选私有。占位示例是一种常见 Git 地址,也接受 GitLab、Gitee、SourceForge。点「开始导入」。上传导入接受 ZIP、TAR、TAR.GZ、RAR。批量导入在「手动输入」里每行一个地址,点「添加到待导入列表」后任务自己开始。进度在「待导入」,完成后出现在「已导入」。

空仓库的副标题是「这是一个空仓库,准备开始你的项目吧!」克隆地址在 HTTPS 和 SSH 之间切换。HTTPS 推送时,用户名填登录名,密码填个人访问令牌,不是登录密码。页面上的「去配置」打开「我的 → 访问令牌」。SSH 要先在「我的」添加公钥。默认 SSH 端口是 2222,地址形如 ssh://git@主机:2222/所有者/仓库.git。同一页可以复制「创建新仓库(从命令行)」和「推送现有仓库(从命令行)」。仓库里已经有文件时,绿色「代码」按钮打开 Clone 面板,也可以下载 ZIP。网页里上传大文件时,页面会让你改用 Git 推送。

点进仓库后,代码页自己的页签包括代码、分支、标签、发布、问题、Wiki、安全、洞察、设置。侧栏的「代码」是进入仓库。还没选中仓库时,它提示「没有找到仓库,请先创建仓库」。

分支和标签。 分支选择器的标题是「分支与标签」。提交哈希可以粘贴后跳转。保护规则在仓库「设置 → 分支保护」,标题是「分支保护规则」,说明是「保护分支免受意外更改」。添加规则时选择分支名称,然后按需打开:

  • 需要代码评审,并填写必需的评审人数
  • 需要状态检查通过。必需的状态检查上下文用逗号分隔,名称要和合并请求里的检查名一致。名单留空时,这项不会拦住合并。打开之后才会出现「需要最新分支」
  • 要求安全检查通过
  • 对管理员同样生效
  • 限制推送权限,再选允许推送的用户和团队

「允许强制推送」和「允许删除」在危险分组里,页面写明这两项会降低保护强度。默认关闭,分支就不能被强推或删除。保存后规则带「受保护」徽章。

合并请求和评审。 对话页的合并卡只有两种标题:「此拉取请求已准备好合并」,或「此拉取请求尚未准备好合并」。还不能合并时,页面写出原因,例如仍是草稿、评审者请求了修改、评审还没完成、状态检查还没通过,或必须先解决冲突。准备好之后点「合并拉取请求」。

仓库「设置 → 拉取请求」决定允许哪种合并,对话框里才会出现那种方式。允许合并提交会保留来源上的每次提交,并在目标上增加一个合并提交。允许压缩合并把来源合成一个新提交。允许变基合并把来源上的提交逐个接到目标顶端。还可以打开「自动删除分支」。单条请求上的「启用自动合并」只影响这一条,仓库里对应的方式要先允许。

同一页还可以要求代码评审、解决所有评论、所有评审人通过。启用 CODEOWNERS 时,按仓库里的 .github/CODEOWNERS 给路径加评审人。仓库根的 CODEOWNERS 和 docs/CODEOWNERS 也会被读,用第一个找得到的文件,只认 @用户名。评审人数没填、或没选评审人就保存,页面会要求补全。

评审在差异里对某一行点「对该行添加评论」。有人请求更改时,作者改完并得到新的批准之前,合并卡保持不能合并。状态检查每一项是成功、失败或进行中。只有保护规则里填写了检查名称,失败的必需检查才会挡住合并。

问题和 Wiki。 问题用来留下缺陷和需求,用标签和里程碑归类。描述或提交里的 #编号 会出现在合并请求的「关联的 Issue」里。标了「合并后将关闭」的,会在合并预览里再出现一次。

Wiki 页的说明是「项目文档和知识库」。要先在「设置 → 功能」打开「知识库」,这一页才能编辑。新建页面填标题和内容。标签回车添加,最多 5 个。每次保存产生一个新版本。历史里选起始版本和目标版本,可以对比,也可以恢复。打开「仅维护者可编辑」之后,只有所有者、维护者或达到该权限的协作者能改。

流水线。 需要构建时再接。文件放在仓库根的 .anguscicd.yaml,或 .anguscicd/ 目录下的 *.yaml、*.yml。控制台里可以在可视化和 YAML 之间切换,两边同步。触发可以是推送、拉取请求、标签、定时或手动。

还没有流水线时,CI/CD 总览会出现「开始 First Green」。向导先接入运行器,没有在线机器就按接入指引做完再重新检查。然后选模板,填流水线名称和仓库,点创建,再触发运行。运行详情里看任务日志。失败时可以诊断或重跑。名称是给人看的短名,不要写成文件路径。写回仓库之后,详情标题下会显示 configPath。

流水线检查的名字可以在合并请求里点开,进入那一次运行。它会不会挡住合并,取决于保护规则里的上下文名单,不取决于页面上有没有出现这次运行。

安全结论和溯源。 侧栏「安全」按仓库看风险、漏洞、密钥、许可证、代码质量和扫描历史。扫描在安全产品里执行,结果回到这一页。还没开通时,页面引导去「管理」里完成集成。本仓可以打开推送后自动扫描,以及「未通过时拒绝合并」。单条发现可以标成已知悉、已修复、已抑制或误报。合并请求的状态检查旁边可以「打开仓安全详情」。

「溯源」打开「代码溯源」,说明是「比对代码相似度,并追踪重复片段的来源。」你指定仓库、文件、代码块或函数,再指定拿来对比的一批仓库。详情里可以并排看相似位置,并导出报告。这和问题编号的互相引用不是同一件事。

动态和成员。 「消息」是站内通知,「趋势」看热门内容,「活动」是操作记录。成员要先在门户接受邀请,才会出现在这里的「成员」里。仓库授权给团队之后,这个团队里的人按该授权使用仓库。

应用场景

  • 一次已经改完的修复还在笔记本上,评审只能收补丁。 在仓库列表新建私有仓库,空仓库页复制「推送现有仓库(从命令行)」。HTTPS 的密码填访问令牌,不填登录密码。SSH 先在「我的」加上公钥,端口按页面上的地址,默认 2222。推完打开这个仓库,文件树里能看到刚才那次提交。登录密码推不上去,就停在这一步,先换令牌。

  • 评论留在聊天里,合进默认分支时指不出是哪一行。 给默认分支加保护规则,打开需要代码评审并填写人数。之后在网页上改这个分支里的文件,编辑器会要求新建分支并发起合并请求。评审人在差异的某一行写评论。人数没到,或有人请求了修改,合并卡标题是「此拉取请求尚未准备好合并」,原因写在同一张卡上。人数到了、评论按仓库要求解决了、必需的状态检查过了,标题变成「此拉取请求已准备好合并」,这时才能点合并。

  • 流水线已经失败,合并按钮仍能点。 仓库根放 .anguscicd.yaml,或放在 .anguscicd/ 里。运行器在线后,推送或合并请求会触发一次运行,状态检查里的名字可以点进那次日志。要让这次失败挡住合并,把这个检查名写进保护规则的「必需的状态检查上下文」。名单是空的,页面上的失败就不会拦住合并。

  • 外部仓库收进来之后,默认分支仍能被直接推送。 仓库列表点导入仓库,填 URL 和所有者,点开始导入。多行地址用批量导入,每一行会显示等待中、处理中或失败。失败行里有源地址和错误信息。出现在「已导入」之后,马上按上面的保护规则套上默认分支。导入完成不等于已经保护。

  • 检查结论在另一个网站上,这条合并请求对不上。 打开该仓库的「安全」,看这次扫描。未通过并且打开了「未通过时拒绝合并」时,这条合并请求不能合。状态检查旁边可以「打开仓安全详情」。发现可以标已知悉、已修复、已抑制或误报。还没扫描过,不能当成没有问题。引擎规则原文不在这一页。

  • 议题里写了要改什么,合进去的提交对不上那一条。 描述或提交里写上 #编号,合并请求的「关联的 Issue」里会出现它。标了「合并后将关闭」的,合并预览里会再出现一次。编号没写上,合完也不会帮你把那条议题关掉。

核心亮点

  • 合不进去时,合并卡上有原因。 少做的那一步,是到聊天记录里翻谁还没点头。卡的标题只有准备好和尚未准备好两种。尚未准备好时,原因写在同一张卡上:草稿、请求了修改、评审没完成、状态检查没过,或还有冲突。规则本身在这个仓库的「设置 → 分支保护」和「设置 → 拉取请求」,不在另一套账号里。

  • 第一屏是待办,不是菜单树。 左侧菜单收起后,只剩一列图标。标题是「欢迎回到 AngusGit」。能读到的是今日工作台、快捷操作和最近活动。快捷操作有四项:新建仓库、打开 PR、CI/CD 总览、根据仓库生成流水线。待办有「待我处理」和「进行中」。顶栏语言是「中文」,旁边有主题开关。统计卡上的仓库数和提交数会变,不在这里当功能说明。

  • 推和拉仍用原来的 Git 命令。 空仓库页和已有文件时的 Clone 面板给出 HTTPS 或 SSH 地址,命令可以整段复制。改的是地址和认证:HTTPS 的密码是访问令牌,SSH 的公钥在「我的」,端口默认 2222。网页编辑只适合小改。文件过大时,页面会让你改用 Git 推送。

  • 保护规则就在这个仓库旁边。 分支名称、评审人数、状态检查上下文、安全检查、是否连管理员也生效、谁可以推,都在「设置 → 分支保护」。强制推送和删除默认关着。受保护之后,直接推送被拒绝,在网页上改文件,会落到新分支。

  • 构建和仓库是同一次登录。 流水线写在仓库的 .anguscicd.yaml 或 .anguscicd/ 里,也可以在流水线页用可视化编辑器创建。运行器、审批和这次运行的日志都在 CI/CD 下面。它会不会挡住合并,由保护规则里的检查名决定。没有流水线时,总览上的 First Green 把第一台运行器和第一条流水线按顺序走完。

  • 检查结论回到仓库,不另开一份名单。 安全页按仓库列出风险和扫描历史。未通过并且打开了「未通过时拒绝合并」时,这条合并请求不能合。发现可以在这一页标已知悉、已修复、已抑制或误报。引擎怎么跑,不在这篇文章里展开。

  • Wiki 每次保存都是一个版本。 先打开功能里的知识库。历史里可以对比两版并恢复。仅维护者可编辑打开后,其他人不能改这一套页面。

部署方式

本包安装 AngusGit,并带上门户。浏览器先打开门户,再打开本产品。有 Docker 时走安装向导,默认是 Docker Compose。没有 Docker,走主机 ZIP。安装机不能访问公网,走离线安装。Kubernetes 的 Helm 目前是预览,不要当成生产安装。

生产用 Linux x86_64。试用可以用 macOS。docker compose version 要能打出版本号。macOS 用当前登录用户跑向导,不要加 sudo。Linux 要装到 /opt/angus,先把目录所有者改成当前用户。

80 端口空闲。要 HTTPS 时 443 也空闲。SSH 克隆用 2222。8803 和 8801 是应用自己的端口,反向代理会转发,不必对公网开放。gm.<你的域名> 和 git.<你的域名> 解析到这台机器。机器要能访问 https://repo.anguskit.com。安装包从该站的 raw-public 下载,解压目录是 AngusGit-1.0.0。

unzip <安装包>.zip
cd AngusGit-1.0.0
./install.sh

Windows 在 Docker Desktop 里执行 .\install.bat。向导提示是英文。

向导提示 你输入什么 它决定什么
Install mode 回车 Docker Compose。没有 Docker 时改用主机 ZIP
Access 输入 2 自带反向代理和子域名。回车留在按端口访问
反向代理 回车 Caddy。Let's Encrypt 只能配 Caddy
证书 必须输入数字,没有默认 1 已有 PEM,2 自签,3 Let's Encrypt,4 只用 HTTP
数据库 回车 Compose 在本机起 MySQL 8
安装目录 回车 当前解压目录,即 $ANGUS_HOME
根域名 example.com 这种根域 填 git.example.com 会多拼一层。IP 或 localhost 会停下

管理员密码至少 8 位。不要沿用向导给出的公开默认数据库口令。数据目录只在第一次创建时采用这个口令。装完只改配置文件、不改库里已经存下的口令,应用会连不上。默认字符串不写在这里。

证书选 1、2 或 3,打开 https://gm.<你的域名>/,再打开 https://git.<你的域名>/。选 4 则两边都是 http://。自签时浏览器会警告。当前安装包在选 Let's Encrypt 时,仍会为七个产品子域申请证书,即使这台机器只装了本产品和门户。那七个名字都要解析到本机,或者改用通配符证书。只走 HTTP 时选 4,不受这条限制。

成功是日志末尾两行:doctor: OK 和 Install finished. 日志在 $ANGUS_HOME/logs/install.log。之后执行 ./bin/angusctl.sh doctor。

MCP 接入

POST /mcp。经网关时地址是 https://<gateway-host>/git/mcp。私有化没有产品前缀时,改为 https://<git-host>/mcp。

令牌是门户用户访问令牌,前缀 xcan_tp。在门户用要给助手的那个账号打开「我的」,签发之后放进环境变量 ANGUS_GIT_TOKEN。不要写进仓库,不要贴进聊天。别的产品的令牌不能连这个地址。控制台「设置 → 管理 → MCP 接入」可以复制配置,页面不显示令牌明文。

请求头是 Authorization: Bearer,值用上面的环境变量。只支持 stdio 的宿主可以用 npx 包 @anguskit/mcp,参数 --product git。ANGUS_BASE_URL 填网关根,不要带 /git/mcp。

未设置 ANGUS_MCP_ENABLED 时端点是打开的。把它关掉之后,/mcp 不存在,推送、合并请求页面和 REST 不受影响。未设置 ANGUS_MCP_WRITE_ENABLED 时写工具是打开的。关掉之后,写工具从列表里消失。写操作仍然走这个账号的权限和分支保护。助手不能绕过保护规则去强制合并。向受保护分支提交会被拒绝。同一账号每分钟 30 次 tools/call。一次调用里的多次内部读取只计一次。

连上之后可以让助手列出工具。常见的只读名字有 git_whoami、git_list_repos、git_pr_context。git_whoami 返回用户 id 和用户名,没有邮箱,也没有令牌。git_list_repos 不返回克隆地址。git_pr_context 带回可审阅的变更,不会因此合并。仓库安全分用 git_repo_security_summary。未扫描时 scanned 为 false。发现详情、密钥原文和扫描任务不在这里,它们属于安全产品自己的 MCP。

SDK 接入

官方 REST SDK 版本 1.0.0。Java 构件 angus-git-sdk,包名 cloud.xcan.angus.sdk.git。npm 是 @anguskit/angus-git-sdk。PyPI 是 angus-git-sdk。Go 模块是 github.com/anguskit/angus-sdk-git。没有官方 NuGet 包。

认证头是 Authorization: Bearer <access_token>。网关 Base URL 是 https://bj-c1-prod-apis.anguskit.com/git。路径前缀 /api/v1/**。冒烟请求是 GET /api/v1/analytics/resources/count。列团队是 GET /api/v1/team。字段以 API 参考里的 OpenAPI 为准。/innerapi 不在官方 SDK 里。

日常推送和拉取仍用 Git 客户端。SDK 不代替 git push,也不代替合并卡上的那一次确认。

FAQ

它是不是只给一个克隆地址?
不是。克隆地址在空仓库页或「代码」按钮里。评审、问题、Wiki、保护分支和流水线都在同一个控制台。登录在门户。

为什么合并按钮点不了?
看合并卡标题。尚未准备好时,原因就在这张卡上。草稿要先标记为可评审。评审人数、请求更改、必需的状态检查、冲突,各算一条。保护规则里的检查名单如果是空的,页面上的失败检查不会单独拦住合并。

SSH 连不上?
先看地址里的端口。默认是 2222,不是 22。公钥要加在「我的」的 SSH 密钥里。HTTPS 则用访问令牌当密码。

助手能不能直接合进受保护分支?
不能。写工具仍受这个账号的权限和分支保护约束。受保护分支上的提交会被拒绝。强制合并没有对应的参数。

SDK 能不能代替 Git?
不能。SDK 调的是 REST。推送、拉取和克隆用原来的 Git 命令,地址用仓库页上的 HTTPS 或 SSH。

检查没跑完,能不能当成没问题?
不能。安全分汇总在未扫描时 scanned 为 false。发现的正文不在 Git 的 MCP 里。

参考文章

相关文章
|
6天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
2747 22
|
1天前
|
云安全 人工智能 安全
|
5天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
|
6天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
1226 5
|
云安全 安全 网络安全
|
7天前
|
安全 算法 定位技术
《高性价比人生指南》完整原版:普通人用最少的资源,过好这一生的底层逻辑~How To Live Better
📖《高性价比人生指南》是一份基于实证、拒绝焦虑的生存手册,倡导以“人生时薪”为视角,重新计算时间、金钱与精力的成本与收益。它不承诺逆袭,只教人算清账:省下的钱若耗掉时间便亏;买体验比买物品更值;睡眠是最高杠杆的健康投资;关系贵在情绪价值而非表面热络;学习重在改变行为而非自我安慰。核心理念:用低成本、高回报的微小行动,换取长期的选择权——不是成为谁,而是掌控自己人生的主动权。
|
19天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
3351 52
|
11天前
|
人工智能 JSON Linux
【保姆级】ComfyUI部署教程(下载+安装+配置+工作流,2026最新)
ComfyUI 是一款开源节点式AI生成工具,支持图像、视频、音频及3D内容创作。通过拖拽连线组合模型加载、提示词、采样等节点,构建可复用、易修改的工作流,兼容SD1.5、SDXL、Flux、Qwen Image等主流模型。

热门文章

最新文章