运维CLI【免费下载链接】archinstallArch Linux installer - guided, templates etc.项目地址https://gitcode.com/gh_mirrors/ar/archinstall点击查看免费下载本文围绕仓库根目录的 CONTRIBUTING.md系统梳理向 Arch Linux 安装程序 archinstall 提交代码的完整协作规范从master分支模型与补丁分支约定到 PEP8 之外的四条编码例外、本地 pre-commit 工具链再到 Pull Request 的评审与合并流程。读完本文你将掌握如何为 archinstall 安全地提交补丁、通过mypy/ruff/flake8/pylint四层静态检查以及如何本地构建并预览文档改动。从项目定位看贡献方式archinstall 是一个以社区驱动为目标的 Arch Linux 安装器项目用于简化 Arch Linux 的安装步骤。正因如此项目对社区贡献持开放态度——任何形式的 Pull Request 都受欢迎。需要注意的是文档中同时提到未来该项目仓库有可能迁移到 Arch Linux 官方的 GitLab 实例在 GitLab 向公众开放的前提下。这意味着在迁移后代码风格指南、bug 报告与讨论的相关规范都可能随之调整贡献者在长期参与前应留意这一可能性。克隆仓库后贡献者的改动建议全部基于默认分支进行具体见下文的分支模型。分支模型master是活体稳定版本看 tagCONTRIBUTING.md 明确了 archinstall 的分支策略master是默认分支也是所有新功能开发的主阵地。文档将其形容为 a living entity一个活体这意味着master几乎永远不会处于完全稳定状态功能在合并前可能随时变化。稳定版本请认准 tagged commits打了 tag 的提交而不是直接基于master使用。补丁发布走独立分支补丁分支从稳定 tag 的提交切出并按发布后将变成的版本号命名。例如针对v2.1.4的补丁会在v2.1.5分支上进行发布时即成为v2.1.5。从当前仓库实际状态看默认分支确实为master且尚无其他长期分支与文档描述一致。参与功能开发时直接向master提交即可修复稳定版本的 bug 时则应基于对应稳定 tag 切出补丁分支再按版本号命名。问题反馈与讨论渠道项目对 bug、疑问和建议的反馈渠道做了分层正式渠道通过项目使用的 issue 跟踪器报告问题、疑问和建议适合结构化的 bug 报告与功能提议。非正式渠道项目设有 Discord 服务器适合较为随意的技术讨论。贡献者在提 bug 前可先对照 docs/help/known_issues.rst 排查已知问题同时保持与项目风格一致的报告格式。编码规范PEP8 与 archinstall 的四条例外archinstall 的目标是尽量遵循 PEP8但明确列出了四条例外这是所有代码贡献者必须遵守的底线使用 Tab 缩进而非空格这样做的目的是降低非 IDE 开发者的代码导航成本。Tab 的显示宽度应等于 4 个空格。唯一例外是用于文档目的、需要精细调整缩进的注释。行长度上限为 160 字符由 flake8 强制检查而不是 PEP8 默认的 79/99 字符。统一使用 Unix 格式的换行符禁止混入其他平台专属的换行格式。字符串引号遵循 PEP8唯一的例外是构造格式化字符串时外层引号优先使用双引号例如fWelcome {name}优于fWelcome {name}但并非强制。这些规则不止写在文档里还落实到了仓库的工具链配置中可以在提交代码前自动校验.flake8 配置了max-line-length 160、max-complexity 40并显式忽略W191tab 缩进、W503行首二元运算符、E704与E203pyproject.toml 中 ruff 的line-length 160、格式规则indent-style tab、quote-style single与项目源码风格保持一致同时开启了pyupgradeUP、isortI等数十类检查pyproject.toml 中 pylint 同样配置了indent-string \t与max-line-length 160。另外需要留意的是文档指出这些风格规范大部分是事后为清理代码而制定的因此仓库中可能存在不符合规范的历史代码。旧代码不合规不代表新代码可以不合规新提交仍然要以规范为准而历史代码subject to change随时可能被重构。使用 pre-commit hooks 本地化校验archinstall 内置了 pre-commit hooks让你在本地git commit时就能跑起mypy、ruff check和flake8等检查避免把明显问题推到 CI 阶段。安装方式只需一条命令在仓库根目录执行pre-commit install安装后每次执行git commit都会自动触发 hook。所有检查项定义在 .pre-commit-config.yaml 中当前包含以下检查链工具配置要点作用ruff--extend-select I --fix修复未使用的导入并排序isort 规则ruff-format—按项目格式规则自动格式化代码rufflint—运行常规 linter 检查pre-commit-hookscheck-added-large-files等通用仓库卫生检查详见下flake8--config.flake8以项目.flake8配置执行fail_fast: truemypy--config-filepyproject.toml、pass_filenames: false全量类型检查fail_fast: truepylintlocalrequire_serial: true本地环境中串行执行的 pylint 检查通用钩子来自 pre-commit-hooks 仓库固定在v6.0.0覆盖了仓库卫生的多个方面check-added-large-files阻止超大文件入库阈值--maxkb50005 MBcheck-merge-conflict检查文件中是否残留合并冲突标记check-symlinks检查是否存在指向无效目标的符号链接check-yaml解析所有 YAML 文件验证语法destroyed-symlinks检测被改成普通文件的符号链接detect-private-key检查是否误提交私钥check-ast验证 Python 文件能否被解析为合法语法check-docstring-first检查代码先于 docstring这类常见错误。mypy 的检查强度非常高pyproject.toml中strict true、warn_unreachable true并启用了deprecated、explicit-override、possibly-undefined等一长串错误码同时对archinstall.default_profiles.*、archinstall.examples.*、archinstall.lib.packages、archinstall.lib.utils等模块强制disallow_any_explicit。这意味着新代码必须带有完整的类型标注Any的显式使用会被严格限制。提示pre-commit 的mypy钩子使用pass_filenames: false即每次提交都是对整个项目做全量类型检查而非仅检查变更文件首次提交时耗时较长属正常现象。文档贡献本地构建 Sphinx 文档如果你希望为文档做出贡献请参考 docs/README.md 在本地构建文档。构建依赖如下sphinx-docsphinx-rtd-theme。使用 pip 安装依赖pip install -U sphinx sphinx-rtd-theme然后在docs目录下执行make html也可以指定其他 Sphinx 构建目标docs/Makefile 中已定义标准的 Sphinx 目标转发cd docs make html构建产物位于docs/_build目录用浏览器打开_build/html/index.html即可预览你的改动效果。文档源码入口可参见 docs/index.rst 与 docs/conf.py其中 conf.py 负责 Sphinx 的项目配置。提交变更Pull Request 工作流archinstall 采用 GitHub 风格的 Pull Request 工作流所有代码贡献都必须通过 PR 提交。其协作要点如下评审机制任何对项目感兴趣的人都可以评审你的代码当核心开发者认为 PR 就绪时才会合并。响应承诺项目团队会尽快合并 PR或说明它尚未就绪的原因如果几天没有收到回复你可以在 PR 线程中追加一条评论ping提醒。说明变更动机为了让 PR 更快被合并请在描述中解释为什么要做这个改动。例如可以指出某段代码示例相对 Arch Linux 命令行已经过时并附上相关在线文档链接或所改动代码的实现链接——这能大幅降低评审者的理解成本。不要擅自 squash提交 PR 之后不要自行压缩squash提交记录因为这会抹掉评审过程中的上下文。合并时维护者会统一 squash commits。维护者信息当前维护者为 Anton HvornumTorxed历史贡献者名单见项目的 Contributors 页面。参考与深入阅读贡献规范原文CONTRIBUTING.mdpre-commit 检查链定义.pre-commit-config.yamlflake8 行宽与复杂度限制.flake8ruff / mypy / pylint 完整配置pyproject.toml文档本地构建指南docs/README.md、docs/Makefile核心安装逻辑实现可作为理解代码结构的入口archinstall/lib/installer.py赞分享运维CLI【免费下载链接】archinstallArch Linux installer - guided, templates etc.项目地址https://gitcode.com/gh_mirrors/ar/archinstall点击查看免费下载相关推荐Shardeum 贡献指南详解分支策略、Pull Request 流程与代码格式化规范Shardeum 贡献指南详解分支策略、Pull Request 流程与代码格式化规范 本文基于 Shardeum 开源仓库根目录下的 CONTRIBUTIN区块链终极Amethyst源码贡献指南从克隆到PR的完整流程终极Amethyst源码贡献指南从克隆到PR的完整流程 Amethyst是一款为macOS设计的自动平铺窗口管理器类似于xmonad帮助用户高效管理窗口布开发工具Parsley.js 贡献指南本地测试、编码规范与 Pull Request 全流程Parsley.js 贡献指南本地测试、编码规范与 Pull Request 全流程 Parsley.js 是一个「不写一行 JavaScript 就能完成前前端上一篇avatars-api-middleware完全指南如何快速搭建专属头像服务下一篇前端性能优化实战使用beautiful-react-hooks解决实际项目性能问题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
