This document contains information used by the editors maintaining the specification.
-
Use your judgement for approving editorial changes and improvements. In general we don't need lots of review for these changes. If a change improves the readability of the spec or corrects a typo then it doesn't represent a significant contribution from an IP perspective.
-
Substantive normative changes should be approved by two editors. If the PR originated from outside the editorial team, then two editors should indicate their support before it is merged. If the PR was submitted by an editor, then another editor is able to merge it.
-
If the Pull Request contains a normative change to the specification and the IPR check fails because the contributor is either not part of the working group or not yet known to the IPR checker then please contact the chairs and do not merge the PR. The chairs will either update the tool if the contributor is a member or otherwise resolve the issue.
-
Travis-CI runs against all pull requests on the
master
branch. If the build fails due to a Bikeshed error then the pull request should not be merged until it has been corrected to build without errors. If a broken pull request is merged then the main spec build will be broken. -
The editors should review the contribution considerations listed in the README.md file.
-
Use your judgement before approving a change that might be considered controversial. In general, such changes often need a wider review from the working group and should not be merged before that happens. Of course, we can revert or amend changes if it is clear that they don't represent WG consensus so it is a judgement call.
-
Note: the editors don't need to create pull requests for editorial changes. Editors may commit these changes directly to the repository. Editors should create pull requests for normative changes associated with a bug or issue. Editors may merge their own pull requests if they are expected to be uncontroversial. Again, use good judgement .
The spec is built by Travis-CI when a change is committed to the master
branch. This rebuilds all the files in the gh-pages
branch and replaces them in the repo. You should not edit or commit into the gh-pages
branch since any changes here will be lost with the next build.
The build process uses an up-to-date version of the Bikeshed script but uses a cached version of the Bikeshed spec-data. This is to ensure that real-time changes to this data do not break the spec build. To update the cached data to the latest version, run bikeshed update
locally and copy the spec-data
files into the .spec-data
folder in the master
branch in the repo.
This spec does not use the green "Merge pull request" button. This ensures that each change is a single commit on the main master
branch.
The following subsections contain instructions for merging. They assume the Bash functions that follow them are present.
-
git checkout master
-
pr <pull request ID>
-
If the pull request contains multiple commits, squash them as appropriate.
- In general, all commits and merges should be squashed into a single commit.
- If commits or sets of commits represent multiple distinct actions (i.e. do something then rename a variable), then the branch might be squashed into two or more commits, each representing a distinct action.
- Squash commits by running
git rebase -i origin/master
then usingsquash
on the commit(s) to be squashed.
-
If the commit message needs to be updated (i.e. To add "Fix #<bug ID>: "), do one of the following and update the message:
- Run
git rebase -i origin/master
then usereword
to select the commit(s) to reword. - Run
git commit --amend
and edit the last commit message.
- Run
-
git push
-
Close the pull request by following these steps in the web interface:
-
Let
hash
be the the commit hash. -
Navigate to the pull request.
-
Add a comment that say "Merged as
hash
." and click the "Close pull request" button to post that comment.
For pull requests coming from branches within this repository, use the same steps above except use mypr
and there is no reason to use the web interface.
git push
will automatically close the pull request and mark it as merged, since the commits contained there were updated.
The following is based on https://github.com/whatwg/meta/blob/master/MAINTAINERS.md.
pr () {
git fetch origin refs/pull/$1/head:refs/remotes/origin/pr/$1 --force
git checkout -b pr/$1 origin/pr/$1
git rebase master
git checkout master
git merge pr/$1 --ff-only
}
Pulls down the PR into a local branch, using the special refs GitHub provides; rebases the PR's commits on top of master
; and does a fast-forward only merge into master
.
mypr () {
git checkout $1
git rebase master
git push origin $1 --force
git checkout master
git merge $1 --ff-only
}
Rebases the PR on top of master
; force-pushes it to the appropriate branch, thus updating the PR; and does the fast-forward only merge into master
.