PowerShell/CONTRIBUTING.md
Andy Schwartzmeyer fa7b96253d Note that CI gates pull requests
[ci skip]
2016-01-29 09:33:27 -08:00

2.8 KiB

Contributing to Project Magrathea

Rules

Do not commit code changes to the master branch!

Read the documentation on submodules!

Do not commit submodule updates accidentally!

Don't forget to commit early and often!

Please add [ci skip] to commits that should be ignored by the CI systems (e.g. changes to documentation).

All pull requests must pass both CI systems before they will be approved.

New to Git?

If you're new to Git, learn the following commands: checkout, branch, pull, push, merge.

Use GitHub's Hello World to learn how to create a feature branch, commit changes, and issue a pull request.

The user name and email must be set in order to commit changes:

git config --global user.name "First Last"
git config --global user.email "alias@microsoft.com"

Rebase and Fast-Forward Merge Pull Requests

Because GitHub's "Merge Pull Request" button merges with --no-ff, an extra merge commit will always be created. This can be especially annoying when trying to commit updates to submodules. Therefore our policy is to merge using the Git CLI after approval, with a rebase onto master to enable a fast-forward merge. If you are uncomfortable doing this, please ask @andschwa to merge.

Submodules

This repository is a superproject with a half-dozen submodules. DO NOT commit updates unless absolutely necessary. When submodules must be updated, a separate Pull Request must be submitted, reviewed, and merged before updating the superproject. When committing submodule updates, ensure no other changes are in the same commit. Submodule bumps may be included in feature branches for ease of work, but the update must be independently approved before merging into master.

I highly recommend these configurations to help deal with whitespace, rebasing, and general use of Git.

Auto-corrects your command when it's sure (stats to status)

git config --global help.autoCorrect -1

Refuses to merge when pulling, and only pushes to branch with same name.

git config --global pull.ff only
git config --global push.default current

Shows shorter commit hashes and always shows reference names in the log.

git config --global log.abbrevCommit true
git config --global log.decorate short

Ignores whitespace changes and uses more information when merging.

git config --global apply.ignoreWhitespace change
git config --global rerere.enabled true
git config --global rerere.autoUpdate true
git config --global am.threeWay true