开发
docker
安装 docker 和 docker-compose
just
安装 Just:
cargo install just --locked
just validate-tools # 验证设置
其他必需工具
我们提供一个简单的命令来检查所有要求是否已设置
just validate-tools
Git 设置
建议核心贡献者和临时贡献者始终在自己的帐户下创建主仓库的 fork。本地仓库应该有两个远程:upstream 指向主 maplibre/martin 仓库,origin 指向用户自己的 fork。main 分支应跟踪 upstream/main,但所有新工作将推送到 origin,并从那里创建 PR。
此设置的理由(点击展开)
此理由从 Yuri 的一篇文章复制而来
开源贡献既是技术现象,也是社会现象。 任何 FOSS 项目自然都有一个“等级制度“ - 一组 拥有广泛权利的贡献者与其他所有人。其中一些分离 是必要的 - 核心贡献者对代码有更深入的了解,共享愿景, 并相互信任。
核心贡献者拥有其他人没有的一项权利 - 他们可以创建仓库分支。 因此,他们可以“本地“贡献 - 通过将建议的更改推送到主仓库的工作分支, 并在同一仓库内创建“本地“拉取请求。这与其他人不同, 其他人只能从自己的 fork 贡献。
从自己的 fork 创建拉取请求与从主仓库创建拉取请求之间几乎没有区别, 核心贡献者永远不应该从主仓库创建拉取请求有几个原因:
- 它确保临时贡献者始终运行与核心贡献者相同的 CI。如果贡献过程中断,它将影响所有人,并将更快修复。
- 它让每个人处于同一水平的竞争环境中,减少“等级制度“效应,让项目对新贡献者感觉更友好
- 它确保主仓库只有维护的分支(例如
main和v1.x), 而不是一堆所有权和工作状态对每个人都不清楚的 PR 分支
在 martin 仓库中,我们遵循这一点,并有一个分支保护规则,防止核心贡献者从主仓库创建拉取请求。
# 将主 fork 克隆到本地机器,将远程命名为"upstream"
# 确保将 URL 替换为正确的 URL
git clone -o upstream https://github.com/maplibre/martin.git
cd martin
# 将您自己的 fork 添加为远程,将其命名为"origin"
git remote add origin https://github.com/nyurik/martin.git
有关 IDE 的进一步设置说明,请在安装以下必要工具后查看参与贡献步骤。
如果您已经在本地克隆了仓库,请使用此指南更新您的设置(点击展开)
如果您已经在本地克隆了仓库,您可以更新它以使用新设置。这假设您有仓库的本地克隆,远程名称为 origin,并且您已经在 GitHub 上 fork 了仓库。
# 快速查看您的远程:git remote -v
git remote -v
# 将现有远程重命名为"upstream"。您的"main"分支现在将跟踪"upstream/main"
git remote rename origin upstream
# 将您自己的 fork 添加为远程,将其命名为"origin"(调整 URL)
git remote add origin https://github.com/nyurik/martin.git
贡献新代码
# 切换到 main 分支(跟踪 upstream/main),并拉取最新更改
git switch main
git fetch upstream
# 为您的工作创建一个新分支
git switch -c my-new-feature
# 编辑文件并提交更改
# '-a' 将添加所有修改的文件
# `-m` 允许您添加简短的提交消息
git commit -a -m "My new feature"
# 将更改推送到您自己的 fork
# '-u' 将使用远程跟踪您的本地分支
git push -u origin my-new-feature
# 点击终端中 `git push` 显示的链接以使用 GitHub Web 界面从您的 fork 创建拉取请求
tip
开发 MBTiles SQL 代码时,只要修改了 SQL 查询,您可能需要使用 just prepare-sqlite。
快速开始
# 安装工具
cargo install just --locked
just validate-tools
# 开始开发
just start # 测试数据库
just run # Martin 服务器
just test # 验证设置
使用 Just
just help # 常用命令
just --list # 所有命令
just validate-tools # 检查设置
开发工作流程
just start # 启动测试数据库
just run # 启动 Martin 服务器
just test # 运行所有测试
just fmt # 格式化代码
just clippy # lint 代码
just book # 构建文档
just stop # 停止测试数据库
向命令传递参数
just test-cargo -- --test integration_test
just run --config /path/to/config.yaml