新的拉取请求¶
针对 Phalcon 的拉取请求必须基于我们的主仓库cphalcon它是一组代码更改,这些更改:
- 修复一个错误(当前问题)
- 引入新的功能或增强。
您的拉取请求必须包括:
- 确保目标分支正确。
- 更新相关的
CHANGELOG.md
- 包含单元测试
- 根据需要更新文档和使用示例
- 您的代码必须遵守 Phalcon 使用的编码标准。对于 PHP 代码,我们使用PSR-12而对于 Zephir 代码,我们在仓库根目录提供了一个
.editorconfig
文件以帮助您遵循标准。
注意
我们不接受针对master
分支
如果您的拉取请求与修复某个问题/错误相关,请在拉取请求正文中链接该问题编号。您可以利用我们在 GitHub 上的模板来展示此信息。如果问题不存在,请先创建一个。
对于新功能,我们需要先创建并引用一个问题。如果您引入的功能与 Phalcon 的理念和实现相冲突,该拉取请求将被拒绝。
此外,任何引入破坏性变更的新功能将不会被当前版本接受,而是需要更新为目标指向下一个主要版本。
强烈建议在与核心团队及社区讨论您的 NFR 和 PR 时获取反馈、指导,并制定一个使所有人受益的发布计划。
分支与提交¶
以下步骤为推荐但非强制执行。
如果您正在处理一个问题,请记下该问题的编号。假设该问题为:
#12345 - Create New Object
- 切换到
5.0.x
分支 - 创建一个分支:
T12345-create-new-object
分支名称以T
开头,后跟问题编号以及作为 slug 的问题标题。
在您的cphalcon
文件夹中导航至.git/hooks
创建一个名为commit-msg
将以下代码粘贴到其中并保存:
#!/bin/bash
if [ -z "$BRANCHES_TO_SKIP" ]; then
BRANCHES_TO_SKIP=(master develop)
fi
BRANCH_NAME=$(git symbolic-ref --short HEAD)
BRANCH_NAME="${BRANCH_NAME##*/}"
BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$")
BRANCH_IN_COMMIT=$(grep -c "\[$BRANCH_NAME\]" $1)
if [ -n "$BRANCH_NAME" ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]] && ! [[ $BRANCH_IN_COMMIT -ge 1 ]]; then
ISSUE="$(echo $BRANCH_NAME | cut -d'-' -f 1)"
ISSUE="${ISSUE/T/#}"
sed -i.bak -e "1s/^/[$ISSUE] - /" $1
fi
确保该文件具有可执行权限
您现在向该分支添加的任何提交都将与该12345
问题关联。
执行上述操作可以让每个人清楚哪些提交与哪个问题相关联。