如何保护Git仓库中私有Flutter包文件不被修改?
如何保护私有Flutter包文件不被改写?
1. Git仓库权限与分支保护
- 给仓库设置严格权限:仅向必要人员开放写入权限,其余成员仅保留只读权限。
- 启用分支保护规则(以主分支
main为例):- 禁止直接推送代码至主分支,所有修改必须通过Pull Request(PR)提交
- 要求PR至少经过一位审核者批准才能合并
- 开启CI状态检查,确保PR不会引入破坏性改动
2. 锁定依赖版本
在使用该包的Flutter项目中,不要依赖分支名,而是锁定到具体的Git标签或提交哈希,避免意外拉取仓库的最新改动:
dependencies: your_private_package: git: url: git@your-repo-url.git ref: v1.0.0 # 可替换为具体提交哈希,如abc123def
3. 本地文件只读保护
在本地开发环境中防止误改包文件:
- 修改文件系统权限:
- Windows:右键包文件夹 → 属性 → 勾选「只读」
- macOS/Linux:执行命令
chmod -R 555 /path/to/your/package
- 用Git标记文件为「假设未更改」,让Git停止跟踪该文件的本地改动:
git update-index --assume-unchanged path/to/your/package/file.dart
如需恢复跟踪,执行:
git update-index --no-assume-unchanged path/to/your/package/file.dart
4. 用Git钩子阻止违规提交
在包仓库中添加pre-commit钩子,拦截对关键文件的提交。创建.git/hooks/pre-commit文件并写入:
#!/bin/sh # 检测是否修改了核心文件 if git diff --name-only --cached | grep -E "(lib/core|src/config)"; then echo "错误:禁止修改核心配置文件" exit 1 fi
最后给钩子文件添加执行权限:chmod +x .git/hooks/pre-commit
内容的提问来源于stack exchange,提问作者JuanMa Corrales
相关产品推荐
相关产品推荐

