Skip to content

v1.17.0:组织内网共享、跨仓库看板与软件中心整理

Choose a tag to compare

@neko233-com neko233-com released this 23 Oct 05:22
· 18 commits to main since this release

组织内网共享

  • 组织页新增“共享”标签:成员可上传文件与短笔记,内容存于 APP_DATA_PATH/org-share(可用 [org_share] PATH 重定向),不进入 Git 或 LFS。
  • 分片上传默认 8 MiB、最多 8 路并行,支持缺失区间续传;下载支持单次 HTTP Range,便于客户端并行拉取。
  • 每组织默认 100 GiB、单文件 32 GiB、默认 30 天过期,可标记永久;上传前同时校验组织配额与卷剩余空间(默认预留 1 GiB),超出分别返回 413/507。
  • 站点管理员可通过 /-/admin/org-share、gitsss admin org-share quota 或 PUT /api/v1/admin/org-share/quota 调整配额,并用 gitsss admin org-share cleanup 清理过期对象。
  • gitsss admin org-share put/get/push/pull 支持服务端与跨机传输;完整接口见 docs/operations/org-share.md。

跨仓库看板

  • 用户与组织看板支持用 owner/repo#123 附加 issue:issue 保留在所属仓库看板,同时出现在当前看板。
  • 只接受与看板同一所有者、且当前用户有权限访问的仓库;无效引用与越权访问会被拒绝。

访问反馈与请求体

  • 已登录但无权限时,仓库页面、API 与 Git HTTP 返回可操作的 403 提示(含仓库名与下一步);匿名用户和仅公开令牌仍返回 404,避免泄露私有仓库。
  • 修正 Uint8Array 请求体被浏览器按视图偏移截断的问题,发送前复制为独立 ArrayBuffer。
  • 以上修复与组织共享的 Darwin 磁盘预留一并汇总自 v1.16.1 热修复。

软件中心

  • 新增“系统”列:按文件最终后缀识别 Windows、macOS、iOS、Android、全平台与待识别,重命名后自动更新,目录显示横线。
  • 新增递归分页列表与 GET /api/v1/orgs/{org}/software,返回 platform 和组织内完整 path,每页最多 200 条,按目录优先、名称 A–Z 稳定排序。
  • 新增 POST /api/v1/orgs/{org}/software/organize:先预览 revision,再原子应用;按 Android/iOS/macOS/Windows/全平台 整理,保留用途目录与文件 ID,冲突时整批不写入。

传输与性能

  • 删除、移动和子树遍历改用邻接索引,避免在大型目录树上反复全表扫描。
  • 虚拟 ZIP 归档计划在组织树未变化时跨 Range 请求复用;无关变更确认内容未变后同样复用。
  • 恢复单文件下载的 sendfile 路径,同时保留下载进度统计。
  • 分片上传仅在成功后写一次状态,并校验分片链、大小与所属用户,拒绝并发或过期写入。
  • 多标签页改为按标签页作用域与上传会话租约:失去所有权时立即停止并移除任务,心跳不再整页刷新。
  • 共享上传按平台预分配磁盘:Linux 使用 fallocate,macOS 使用 F_PREALLOCATE,Windows 使用 FILE_ALLOCATION_INFO;卷不支持时回退为稀疏文件并继续校验空间。

发布与校验

  • release-native 拒绝脏工作区和过期的前端构建戳。
  • 源码包只包含 Git 跟踪文件,生成可复现的 tar.gz。
  • 新增 build/verify-release.py 与 task release:verify:校验 7 平台及 3 个 Windows Go-Git 变体、平台包成员字节、xz 解压内容、嵌入版本标签和 SHA256SUMS 回读。
  • 版本以构建标签嵌入,兼容 Go 1.27 不再记录 -ldflags 的行为。

升级与回滚

  • 数据库新增 org_share_item、org_share_upload、org_share_quota 三张表,迁移版本升至 343;不改动既有表结构。
  • Git 仓库、对象、refs、LFS 字节与 data/gitsss/layout.json 契约不变;软件中心仍只调整目录元数据。
  • 升级前请备份数据库。旧二进制会拒绝高于自身的数据库版本,因此回滚需同时恢复 v1.16.0 的数据库备份并换回旧二进制;共享文件位于独立路径,可保留或手动清理。
  • 本版本为纯 Go 构建(CGO 关闭),提供 Linux/macOS/Windows 七个平台包及 Windows Go-Git 变体;Linux CGO WAL 配置可按 docs/features/push-throughput.md 自行构建。

校验

  • 每个二进制与压缩包均附 .sha256,SHA256SUMS 覆盖全部资产并在发布前本地回读校验。
  • 本地验证:前端 74 个文件、211 项测试;软件中心单测与 TestAPIOrgSoftware;仓库访问反馈与令牌范围集成测试;orgshare/projectboard 单测;go build ./...;七平台与 Windows Go-Git 变体交叉编译、打包与校验。macOS 与非本机架构完成交叉编译和静态校验,未进行 macOS 真机运行。

完整变更:v1.16.0...v1.17.0