Some basic conventions for contributing to this project.
Please make sure that there aren't existing pull requests attempting to address the issue mentioned. Likewise, please check for issues related to update, as someone else may be working on the issue in a branch or fork.
- Please open a discussion in a new issue / existing issue to talk about the changes you'd like to bring
- Develop in a topic branch, not master/develop
When creating a new branch, prefix it with the type of the change (see section Commit Message Format below), the associated opened issue number, a dash and some text describing the issue (using dash as a separator).
For example, if you work on a bugfix for the issue #361, you could name the branch fix361-template-selection
.
Want to contribute but don't know where to start?
Some of the open issues are labeled with prefix exp/
, this is used to mark them as available for contributors to work on. All of these have an attributed difficulty level:
- beginner: a task that should be accessible with users not familiar with the codebase
- intermediate: a task that require some understanding of the project codebase or some experience in either AngularJS or Golang
- advanced: a task that require a deep understanding of the project codebase
You can have a use Github filters to list these issues:
- beginner labeled issues: https://github.com/portainer/portainer/labels/exp%2Fbeginner
- intermediate labeled issues: https://github.com/portainer/portainer/labels/exp%2Fintermediate
- advanced labeled issues: https://github.com/portainer/portainer/labels/exp%2Fadvanced
Please check your code using grunt lint
before submitting your pull requests.
Each commit message should include a type, a scope and a subject:
<type>(<scope>): <subject>
Lines should not exceed 100 characters. This allows the message to be easier to read on github as well as in various git tools and produces a nice, neat commit log ie:
#271 feat(containers): add exposed ports in the containers view
#270 fix(templates): fix a display issue in the templates view
#269 style(dashboard): update dashboard with new layout
Must be one of the following:
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- refactor: A code change that neither fixes a bug or adds a feature
- test: Adding missing tests
- chore: Changes to the build process or auxiliary tools and libraries such as documentation generation
The scope could be anything specifying place of the commit change. For example networks
,
containers
, images
etc...
You can use the area label tag associated on the issue here (for area/containers
use containers
as a scope...)
The subject contains succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize first letter
- no dot (.) at the end
贡献代码的指引
1)通用
先看看有没有相关的 PR/issues 已经存在,如果没有则进入下一步
打开一个 issue 讨论你要带来的一些变化(也可以在已经存在 的 issue 上讨论)
在一个特定主题的分支上开发,不要在 master/develop 分支开发!
新建分支时,有一些命名规则,例如:
(type)(issue number)-text-desc
举例:
你在提交一个 bugfix 来解决 issue #361 则分支可以命名为: fix361-template-selection.
2)为已经打开的 issues 贡献代码
想做却不知道如何开始?
有一些 issues 的标签是 exp/ 开头的,意味着可以供大家去开发,但有难度的区分:
beginner: 针对不太熟系该项目代码的开发者
intermediate: 针对该项目代码有一定理解,或对 AngularJS or Golang 有使用经验的开发者
advanced: 针对该项目代码有深入理解的开发者
可以使用 Github filters 来过滤出 issues:
beginner labeled issues: https://github.com/portainer/portainer/labels/exp%2Fbeginner
intermediate labeled issues: https://github.com/portainer/portainer/labels/exp%2Fintermediate
advanced labeled issues: https://github.com/portainer/portainer/labels/exp%2Fadvanced
3)代码 Linting
检查代码使用 grunt lint 然后再提交 PR
4)提交的信息格式
():
不要超过 100 字符,整洁的 commit log 示例:
#271 feat(containers): add exposed ports in the containers view
#270 fix(templates): fix a display issue in the templates view
#269 style(dashboard): update dashboard with new layout
有如下几类 type
feat: A new feature
fix: A bug fix
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
refactor: A code change that neither fixes a bug or adds a feature
test: Adding missing tests
chore: Changes to the build process or auxiliary tools and libraries such as documentation generation
Scope
关于 scope :表示
提交的代码是改动了哪一块的内容,例如:networks, containers, images 可以使用 area 标签来关联 issue (例如:标签 area/containers 使用 containers 作为a scope)
关于 subject :表示
简明的描述本次提交做了那些改变
使用祈使句和现在时: "change" not "changed" nor "changes"
不要大些第一个字母
语句最后不要使用点 (.)