|
1 | | -# 📖 SecRandom 贡献指南 |
| 1 | +# 向 SecRandom 贡献代码 |
2 | 2 |
|
3 | | -SecRandom 欢迎**任何人**向我们的仓库提交代码。您可以帮助我们做很多工作,包括但不限于: |
| 3 | +❤️感谢您向 SecRandom 做出贡献,您可以为 SecRandom 项目做出包括但不限于反馈 Bug、提出功能请求、贡献代码等贡献。在进行贡献前,请务必阅读以下指南。 |
4 | 4 |
|
5 | | -- 提交补丁来修复bug |
6 | | -- 添加新功能 |
7 | | -- 优化现有的功能 |
8 | | -- 优化代码的性能 |
9 | | -- 完善文档与翻译 |
10 | | -- 更多...... |
| 5 | +## 反馈 Bug |
11 | 6 |
|
12 | | -通过阅读本指南,您将会了解为 SecRandom 贡献代码的各个流程。您还会了解使用 commit 信息进行二进制构建的方式。现在就开始吧! |
| 7 | +如果在使用 SecRandom 的过程中遇到 Bug,可以在 GitHub Issues 中提交 Bug 反馈。 |
13 | 8 |
|
14 | | -## 🚀 快速开始 |
| 9 | +**请务必准确地按照 Issues 模板中的要求和示例填写相关字段**,否则开发者可能难以诊断您遇到的问题。 |
15 | 10 |
|
16 | | -在向 SecRandom 项目贡献代码之前,请确保您已完成以下准备工作: |
| 11 | +## 提交功能请求 |
17 | 12 |
|
18 | | -> [!NOTE] |
19 | | -> 除了使用命令行,您还可以使用 GitHub Desktop 或您 IDE 中的内置功能/插件进行操作。 |
| 13 | +如果您有关于 SecRandom 新功能的想法,欢迎在 GitHub Issues 提交功能请求。 |
20 | 14 |
|
21 | | -1. **Fork 项目** |
22 | | - |
23 | | - - 访问 [SecRandom GitHub 仓库](https://github.com/SECTL/SecRandom) |
24 | | - - 点击右上角的 "Fork" 按钮创建您自己的仓库副本 |
25 | | - |
26 | | -2. **克隆仓库** |
| 15 | +## 贡献代码 |
27 | 16 |
|
28 | | -> [!WARNING] |
29 | | -> 确保在这一步之前,您已经将终端的工作目录切换到您想保存/修改 SecRandom 源代码的地方。 |
| 17 | +在为 SecRandom 贡献代码之前,请务必阅读以下指南。 |
30 | 18 |
|
31 | | - ```bash |
32 | | - git clone https://github.com/您的用户名/SecRandom.git |
33 | | - cd SecRandom |
34 | | - ``` |
| 19 | +### 技术栈 |
35 | 20 |
|
36 | | -3. **添加上游仓库** |
| 21 | +在开始贡献之前,了解项目的技术栈将有助于您更快地上手: |
37 | 22 |
|
38 | | - ```bash |
39 | | - git remote add upstream https://github.com/SECTL/SecRandom.git |
40 | | - ``` |
| 23 | +| 类别 | 技术/工具 | 用途 | |
| 24 | +|------|-----------|------| |
| 25 | +| 编程语言 | Python 3.13.5 | 项目的主要开发语言 | |
| 26 | +| 包管理器 | uv | 依赖管理和虚拟环境创建 | |
| 27 | +| UI 框架 | PySide6 + Fluent Design | 现代化桌面应用界面开发 | |
| 28 | +| 日志管理 | loguru | 高效的日志记录 | |
| 29 | +| 数据处理 | numpy & pandas | 数据处理和分析 | |
| 30 | +| 语音合成 | edge-tts | 文本转语音功能 | |
| 31 | +| Excel 处理 | openpyxl | Excel 文件导入导出 | |
| 32 | +| 安全认证 | pyotp | 双因素认证 | |
41 | 33 |
|
42 | | -4. **安装虚拟环境** (可选) |
| 34 | +### 开发环境搭建 |
43 | 35 |
|
44 | | -> [!TIP] |
45 | | -> 若您不需要运行代码以测试效果,您可以跳过这个部分。 |
| 36 | +#### 1. 前置条件 |
46 | 37 |
|
47 | | - SecRandom 使用 `uv` 管理虚拟环境。您需要先获取它再执行以下命令。您可以在 [uv官方文档](https://docs.astral.sh/uv/getting-started/) 中获取关于 `uv` 的信息。 |
| 38 | +确保您的系统已安装以下软件: |
48 | 39 |
|
49 | | - ```bash |
50 | | - uv venv |
51 | | - uv sync |
52 | | - ``` |
| 40 | +- Python 3.13.5 |
| 41 | +- Git |
| 42 | +- uv 包管理器 ([安装指南](https://docs.astral.sh/uv/getting-started/)) |
53 | 43 |
|
54 | | - 随后您可以这样运行代码(在虚拟环境中): |
| 44 | +#### 2. 准备工作 |
55 | 45 |
|
56 | | - ```bash |
57 | | - uv run ./main.py |
58 | | - ``` |
| 46 | +1. **Fork 项目** |
| 47 | + - 访问 [SecRandom GitHub 仓库](https://github.com/SECTL/SecRandom) |
| 48 | + - 点击右上角的 "Fork" 按钮,创建您自己的仓库副本 |
59 | 49 |
|
60 | | -## 📤 提交您的贡献 |
| 50 | +2. **克隆仓库** |
| 51 | + ```bash |
| 52 | + git clone https://github.com/您的用户名/SecRandom.git |
| 53 | + cd SecRandom |
| 54 | + ``` |
61 | 55 |
|
62 | | -1. **创建分支** |
| 56 | +3. **添加上游仓库** |
| 57 | + ```bash |
| 58 | + git remote add upstream https://github.com/SECTL/SecRandom.git |
| 59 | + ``` |
63 | 60 |
|
64 | | - ```bash |
65 | | - git checkout -b feature/功能名称 |
66 | | - ``` |
| 61 | +#### 3. 安装依赖 |
67 | 62 |
|
68 | | -2. **进行修改** |
| 63 | +使用 uv 安装项目依赖: |
69 | 64 |
|
70 | | - - 编写您的代码 |
71 | | - - 添加必要的注释(请使用中文) |
72 | | - - 确保遵循项目代码规范 |
| 65 | +```bash |
| 66 | +uv sync |
| 67 | +``` |
73 | 68 |
|
74 | | -3. **提交更改** |
| 69 | +#### 4. 运行项目 |
75 | 70 |
|
76 | | - ```bash |
77 | | - git add . |
78 | | - git commit -m "描述您的更改内容" |
79 | | - ``` |
| 71 | +安装依赖后,您可以直接运行项目: |
80 | 72 |
|
81 | | -4. **同步上游更改** |
| 73 | +```bash |
| 74 | +uv run main.py |
| 75 | +``` |
82 | 76 |
|
83 | | - ```bash |
84 | | - git fetch upstream |
85 | | - git rebase upstream/master |
86 | | - ``` |
| 77 | +### 贡献准则 |
87 | 78 |
|
88 | | -5. **推送并创建拉取请求 (Pull request, PR)** |
| 79 | +**您为 SecRandom 贡献的功能须遵循以下准则:** |
89 | 80 |
|
90 | | - ```bash |
91 | | - git push origin feature/您的功能名称 |
92 | | - ``` |
| 81 | +- **稳定**:您贡献的功能需要能尽可能稳定工作。 |
| 82 | +- **具有泛用性**:您贡献的功能需要面向大部分用户。 |
| 83 | +- **激进功能需添加开关**:如果您贡献的功能比较激进,请添加功能开关,并默认禁用此功能。 |
| 84 | +- **能用**:在提交补丁前,请在本地测试您实现的功能是否能正常使用。 |
| 85 | +- 尽量不要提交仅包含文案修复的补丁。 |
93 | 86 |
|
94 | | - - 访问您的 GitHub Fork 仓库 |
95 | | - - 点击 "Compare & pull request" (比较/拉取请求) 按钮 |
96 | | - - 填写 PR 描述并提交 |
| 87 | +### 补丁质量 |
97 | 88 |
|
98 | | -## 📋 贡献指南 |
| 89 | +随着本项目的规模逐渐扩大,有些用户提交了一些低质量的补丁。这些补丁有的完全不能实现预期的功能,有的甚至根本不能通过编译,浪费了开发者的时间和精力对这些补丁进行代码审阅和问题排查。我们接受有瑕疵的补丁, **但我们希望您在提交补丁前,您的补丁至少应该满足以下的要求:** |
99 | 90 |
|
100 | | -### 代码规范 |
| 91 | +- 实现的功能能够工作,在提交补丁前请至少在本地机器测试一次补丁的功能是否可以正常工作。 |
| 92 | +- 我们不建议在没有人为干预的情况下完全地使用生成式人工智能实现您要贡献的功能。 |
101 | 93 |
|
102 | | -- 使用中文编写代码注释,别忘记撰写 Docstring |
103 | | -- 遵循 PEP8 倡导的风格指南,若有意异议可以查看现有的代码 |
104 | | -- 确保导入所有您已使用的类/函数/变量,不要使用 `from module import *` |
105 | | -- 验证第三方 UI 组件与其他库中的类/函数/变量是否存在 |
| 94 | +如果您持续提交低质量的补丁,我们可能会限制您继续向本项目/组织提交补丁。 |
106 | 95 |
|
107 | | -> [!TIP] |
108 | | -> 您可以使用 **PyRight**, **Ruff** 等工具检查代码是否有缺陷/代码是否符合规范。 |
| 96 | +### 分支与开发周期 |
109 | 97 |
|
110 | | -### 提交 (commit) 信息规范 |
| 98 | +SecRandom 代码仓库目前具有以下分支: |
111 | 99 |
|
112 | | -- 使用清晰、简洁的提交信息 |
113 | | -- 以 fix, feat 等约定俗成的单词开头 |
114 | | -- 避免过于简单的描述(如:"修复bug") |
| 100 | +- `master`:SecRandom 主要开发分支。 |
115 | 101 |
|
116 | | -> [!TIP] |
117 | | -> 我们推荐使用[约定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/)撰写提交信息。 |
| 102 | +当开始下个版本的 SecRandom 时,会将当前的主分支分叉到对应的维护分支。在开发下一个版本的 SecRandom 过程中,也会在维护分支上并行维护当前稳定版本的功能。 |
118 | 103 |
|
119 | | -### PR 要求 |
| 104 | +由于不同开发分支上的代码接口可能存在差异。因此,**根据您做出的贡献类型,您需要选择不同的基础分支。** |
120 | 105 |
|
121 | | -- PR 标题应简洁明了地描述更改内容(若只有一个提交,也可以直接使用这个提交的标题) |
122 | | -- 提供详细的更改说明,包括: |
123 | | - - 新增/修改/删除的功能 |
124 | | - - 新增/修改版本/删除的依赖库 和 更改 Python 版本 |
125 | | - - 其他破坏性更改也请一并告知 |
126 | | -- 确保所有测试通过 |
127 | | -- 确保您修改的代码至少在您的计算机上运行正常 |
128 | | -- 关联相关的 Issue(如有) |
| 106 | +**以下类型的贡献建议以当前的维护分支为基础分支:** |
129 | 107 |
|
130 | | -### 最后一步...... |
| 108 | +- 修复稳定版中的 Bug |
| 109 | +- 对稳定版中的功能进行小幅度的优化 |
131 | 110 |
|
132 | | -当 SecRandom 的维护者审查了您的 PR,确保没有任何问题之后,就会将您的所贡献的代码合并到主分支。 |
| 111 | +**以下类型的贡献建议以 `master` 为基础分支:** |
133 | 112 |
|
134 | | -现在我们 **恭喜您成为 SecRandom 贡献者的一员!** |
| 113 | +- 添加新的功能 |
| 114 | +- 对代码进行重构 |
| 115 | +- 其它对 SecRandom 进行较大改动的贡献 |
| 116 | +- 修改README等文档 |
135 | 117 |
|
136 | | -如果您的 PR 没有通过,也没有关系。请仔细阅读我们的维护者给出的建议并且继续努力,早有一日,您会成为 SecRandom 贡献者的一员。加油😃👍! |
| 118 | +### 提交 |
137 | 119 |
|
138 | | -## 📖 Actions 构建工作流 |
| 120 | +在本代码仓库提交时,请尽量遵守 [约定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/) 规范。 |
139 | 121 |
|
140 | | -若您需要测试自动构建的二进制程序,您可以阅读以下文字来获取更多信息。 |
| 122 | +### 合并更改 |
141 | 123 |
|
142 | | -### 🚀 GitHub Actions 统一构建工作流使用指南 |
| 124 | +在进行合并之前,请先测试您贡献的代码,确保您贡献的代码能稳定运作。 |
143 | 125 |
|
144 | | -SecRandom 项目使用统一的 GitHub Actions 工作流进行构建和发布,配置文件位于 `.github/workflows/build-unified.yml`。该工作流支持多种触发方式和配置选项。 |
| 126 | +您可以向本项目发起 [Pull Request](https://github.com/SECTL/SecRandom/pulls) 来合并您的更改。在发起 Pull Request 时,请简要地描述您做的更改,并最好附上您实现的功能的演示截图/视频。 |
145 | 127 |
|
146 | | -#### 通过提交消息触发特定构建 |
| 128 | +### Actions 构建工作流 |
147 | 129 |
|
148 | | -您可以通过在 git commit 消息中包含特定关键词来触发不同的构建行为: |
| 130 | +SecRandom 项目使用 GitHub Actions 进行自动构建和发布,配置文件位于 `.github/workflows/build-unified.yml`。 |
149 | 131 |
|
150 | | -1. **触发打包构建** |
151 | | - - 在 commit 消息中包含 `打包` 关键词 |
152 | | - - 例如:`git commit -m "新增功能 打包"` |
| 132 | +#### 触发构建 |
153 | 133 |
|
154 | | -2. **指定构建平台** |
155 | | - - `win` - Windows 平台 |
156 | | - - `linux` - Linux 平台 |
157 | | - - `all` - 所有平台 |
158 | | - - 例如:`git commit -m "修复bug 打包 linux"` |
| 134 | +您可以通过以下方式触发构建: |
159 | 135 |
|
160 | | -3. **触发所有平台构建** |
161 | | - - 创建符合版本号规范的 tag(格式:`v数字.数字.数字.数字`) |
162 | | - - 例如:`git tag v1.2.3.4 && git push origin v1.2.3.4` |
| 136 | +1. **提交消息触发**: |
| 137 | + - 在 commit 消息中包含 `开始打包` 关键词 |
| 138 | + - 示例:`git commit -m "新增功能 开始打包"` |
163 | 139 |
|
164 | | -#### 构建参数关键词说明 |
| 140 | +## 📞 联系方式 |
165 | 141 |
|
166 | | -提交消息中可以包含以下关键词来控制构建行为: |
| 142 | +如果您在贡献过程中遇到任何问题或需要帮助,可以通过以下方式联系我们: |
167 | 143 |
|
168 | | -| 关键词 | 含义 | 示例 | |
169 | | -|--------|------|------| |
170 | | -| `打包` | 通用打包触发 | `git commit -m "新增功能 打包"` | |
171 | | -| `win` | Windows 平台 | `git commit -m "修复UI 打包 win"` | |
172 | | -| `linux` | Linux 平台 | `git commit -m "优化性能 打包 linux"` | |
173 | | -| `all` | 所有平台 | `git commit -m "大更新 打包 all"` | |
| 144 | +- 🔗 GitHub Issues:[提交问题](https://github.com/SECTL/SecRandom/issues) |
| 145 | +- 💬 QQ 群:833875216 |
| 146 | +- 📧 邮箱:lzy.12@foxmail.com |
174 | 147 |
|
175 | | -**组合使用示例:** |
| 148 | +--- |
176 | 149 |
|
177 | | -- `git commit -m "优化性能 打包 pi"` - 使用 PyInstaller 构建 Windows 平台 |
178 | | -- `git commit -m "修复bug 打包 pi"` - 使用 PyInstaller 构建 Linux 平台 |
| 150 | +感谢您对 SecRandom 项目的支持和贡献!让我们一起打造更好的公平随机抽取系统! 🚀 |
0 commit comments