VPNT Technical Report Series
Vol. 2026, No. 1 · 管理员层手册
← 目录 / 管理员层手册

第 1 章 资产创建

配置好协作基础设施,让成员能顺畅完成"新建分支 → 提 PR → 审查 → 合入"。

1.1 仓库初始化

课题组以 C++ 和 MATLAB 为主,.gitignore 建仓时即写入以下常见忽略项,从源头避免误提交编译产物与大文件:

# 编译产物 / 构建目录
build/
bin/
*.o
*.obj
*.exe
*.dll
*.lib
*.a
*.so
*.out

# MATLAB
*.asv
*.mex*
slprj/
*.autosave

# 数据与模型(不纳入版本控制,仅在 PR 说明来源)
*.mat
*.dat
*.bin
*.csv
data/
datasets/

# IDE / 编辑器
.vs/
.vscode/
.idea/
*.user

# 系统与临时文件
Thumbs.db
.DS_Store
*.log
*.tmp

# 密钥 / 环境变量
.env
*.key
*.pem

数据、模型等大文件不进仓库的完整规则与例外评估流程见《用户层手册》第 5.2 节。如某项目确需纳管 *.csv*.mat 等,可在该项目 .gitignore 中按需放开。

1.1.1 统一换行符(.gitattributes)

实验室以 Windows 为主,不同成员的编辑器与 core.autocrlf 设置不一,易产生"整文件被改"的假 diff 与满屏换行差异。建仓时即提交一个 .gitattributes,从源头统一换行策略,成员无需各自配置:

# 默认按文本处理,仓库内统一存为 LF
* text=auto eol=lf

# 明确指定二进制类型,避免被当文本改写
*.png binary
*.jpg binary
*.pdf binary
*.mat binary
*.bin binary
*.exe binary

.gitattributes 随仓库分发、对所有成员生效,优先级高于个人的 core.autocrlf。成员不要再手动改 core.autocrlf,一切以仓库策略为准。

1.2 分支保护(关键)

在平台上把 main 设为受保护分支:

Gitea 具体操作路径:

仓库 -> Settings -> Branches -> Branch Protection -> Add Rule

在规则中按下表勾选:

选项 设置 对应要求
Protected Branch Name `main` 保护主线
Enable Push 关闭(或仅限维护者) 禁止直推
Enable Force Push 关闭 禁止强推
Enable Merge Whitelist 开启,仅勾选维护者 仅维护者可合并
Require approvals 设为 `1`(或按需更多) 需审核通过才可合并
Dismiss stale approvals 开启 有新提交后旧的批准失效,须复审

1.2.1 成员与角色权限映射

在 Gitea 按「组织 / 仓库 -> Settings -> Collaborators / Teams」添加成员,将手册角色映射到 Gitea 权限级别:

手册角色 Gitea 权限级别 能做什么
报告人(Reporter) Read 克隆、看代码、提 Issue、评论
开发者(Developer) Write 推送到功能分支、提 PR(受分支保护限制无法直推 `main`)
维护者(Maintainer) Write + 合并白名单 在 Write 基础上,加入 `main` 的 Merge Whitelist,拥有合并与签字权
管理员(Administrator) Admin / Owner 仓库设置、分支保护、成员管理、破坏性操作(见第 3 章)

组织内推荐用 Team 批量授权:建 developersmaintainers 两个 Team,成员加入对应 Team 即继承权限,避免逐仓库逐人配置。

1.3 模板预置

1.4 自动化检查(暂缓)

1.5 scope 列表维护

1.6 检查清单

完成标准
仓库 + main 默认分支 已创建
分支保护 禁止直推 / 禁止强推 / 需审核 / 仅维护者合入
PR / Issue 模板 已预置并可用
scope 列表 README 已维护

练手项目已完成上述配置,可对照 lab-git-practice.github/templates/ 目录。


← 附录 A 练手考核对照第 2 章 质量控制 →