- Github for code and issues management
-
Following branches should be used for primary code management
master
there can be only this branch. This hold all the latest already released code.
- in case we are doing tag based release,
master
can be used as stable bleeding edge releasable code.
-
{type}/{GithubIssueNo}-issue-one-liner
should be the format for branch naming- See Type section for branch
{type}
. - Find
{GithubIssueNo}
in Github.
- See Type section for branch
Pull requests are the only way to propose a value you want to add. Following is a general workflow for submitting any requests.
- Clone the repo and create your branch from
master
. - If you've added code that should be tested
- Ensure that your code doesn't fail to build
- Make pull request to
master
branch - Assign respective developers to review and merge pull request
We have very precise rules over how our git commit messages can be formatted. This leads to more readable messages that are easy to follow when looking through the project history. But also, we use the git commit messages to generate the changelog.
Each commit message consists of a header, a body and a footer. The header has a special format that includes a type, a scope and a subject:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
The header is mandatory and the scope of the header is optional.
Any line of the commit message cannot be longer 74 characters! This allows the message to be easier to read on GitHub as well as in various git tools.
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 nor adds a feature
- perf: A code change that improves performance
- test: Adding missing tests or correcting existing tests
- build: Changes that affect the build system, CI configuration or external dependencies (example scopes: gulp, broccoli, npm)
- ci: Any changes to our CI configuration files and scripts (Travis, Circle CI, BrowserStack, SauceLabs, AWS CodeBuild)
- chore: Other changes that don't modify
src
ortest
files
The scope could be any module name of the commit change. For example Compiler
, ElementInjector
, etc.
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
Just as in the subject, use the imperative, present tense.
- The body should include the motivation for the change and contrast this with previous behavior.
- The body can include multiple line starting with
-
The footer should contain any information about Breaking Changes and is also the place to reference Github issues that this commit Closes.
Breaking Changes should start with the word BREAKING CHANGE:
with a space or two newlines. The rest of the commit message is then used for this.
Before opening any issues, it is prefered to ensure that the issue is not already reported by searching here.