本文档概述了为 fzf 项目贡献的技术流程。它提供了提交代码更改、报告问题以及参与此命令行模糊查找器开发的具体指南。有关从源代码构建 fzf 的信息,请参阅 从源代码构建。
要为 fzf 做出贡献,您需要安装以下工具:
来源:go.mod1-21 .github/workflows/linux.yml26-29 .github/workflows/linux.yml36
以下图表说明了 fzf 代码库中贡献者可能会接触到的关键组件
来源:.github/workflows/linux.yml1-49 .github/workflows/macos.yml1-46 BUILD.md1-62
以下图表说明了 fzf 项目的标准贡献工作流程
来源:.github/workflows/linux.yml4-9 .github/workflows/macos.yml4-9
派生仓库
克隆和设置
创建分支
进行更改
本地测试
提交并推送
创建拉取请求 (Pull Request)
master 分支;对于实验性功能,目标是 devel 分支来源:.github/workflows/linux.yml4-9 .github/workflows/linux.yml44-48 .github/workflows/macos.yml1-46
fzf 遵循特定的代码风格和约定,以在代码库中保持一致性
go fmt 格式化您的代码golint 和 go vet 检查问题make lint 检查风格问题| 组件 | 位置 | 风格指南 |
|---|---|---|
| Go 核心 | src/*.go | Go 标准格式 |
| Shell 集成 | shell/* | POSIX 兼容性 |
| 测试 | test/*.rb | Ruby 风格指南 |
| 构建系统 | Makefile | Make 约定 |
| Vim 插件 | plugin/fzf.vim | Vim 脚本约定 |
来源:.github/workflows/linux.yml30-33 .github/workflows/linux.yml41-42 .github/workflows/macos.yml27-30 .github/workflows/macos.yml38-39 BUILD.md13-19
fzf 拥有全面的测试套件,所有贡献都应包含相应的测试。
单元测试
_test.go)go test ./... 运行集成测试
test/ 目录中test_go.rb 用于 Go 特定集成测试Shell 集成测试
来源:.github/workflows/linux.yml44-48 .github/workflows/macos.yml41-45
fzf 使用 GitHub Actions 进行持续集成,以确保代码质量和兼容性。您的拉取请求必须通过所有 CI 检查才能合并。
Linux 工作流
make lint)make test)ruby test/runner.rb --verbose)macOS 工作流
make test)ruby test/test_go.rb --verbose)附加检查
来源:.github/workflows/linux.yml1-49 .github/workflows/macos.yml1-46
提交拉取请求时,请遵循以下指南,以确保顺利的审查过程
保持 PR 的专注性
master 分支,实验性功能目标 devel 分支)撰写清晰的描述
更新文档
解决 CI 故障
积极响应反馈
来源:.github/workflows/linux.yml4-9 .github/workflows/macos.yml4-9
良好的文档对项目至关重要。在贡献代码更改时,请考虑文档需求
代码注释
README 和文档文件
示例
来源:BUILD.md1-62
fzf 在 MIT 许可下获得许可。通过为 fzf 贡献,您同意您的贡献将根据相同的许可获得许可。
The MIT License (MIT)
Copyright (c) 2013-2024 Junegunn Choi
贡献时
来源: README.md969-974