Contributions take many forms from submitting issues, writing docs, to making code changes - we welcome it all!
If you don't have a GitHub account, you can sign up as it will help you to participate with the project.
If you are looking to contribute to the codebase, please ensure you have Visual Studio 2015 installed - you can download the Community edition from here
If you are running GitHub Desktop, you can clone this repository locally from GitHub using the "Clone in Desktop" button from the Octokit.net project page, or run this command in your Git-enabled shell:
git clone https://github.com/octokit/Octokit.net.git Octokit
If you want to make contributions to the project, forking the project is the easiest way to do this. You can then clone down your fork instead:
git clone https://github.com/MY-USERNAME-HERE/Octokit.net.git Octokit
After doing that, run the .\build
script at the root of the repository
to ensure everything builds and the tests pass.
We have an up-for-grabs
tag on our issue tracker to indicate tasks which contributors can pick up.
If you've found something you'd like to contribute to, leave a comment in the issue so everyone is aware.
For v1 of the Octokit.net API, we're looking to support everything that v3 of the GitHub API supports. As this is currently a pre-1.0 library, we're always looking for ways to improve the API to make it easy to work with the GitHub API.
When you're ready to make a change, create a branch off the master
branch:
git checkout master
git pull origin master
git checkout -b SOME-BRANCH-NAME
We use master
as the default branch for the repository, and it holds the most
recent contributions. By working in a branch away from master
you can handle
potential conflicts that may occur in the future.
If you make focused commits (instead of one monolithic commit) and have descriptive commit messages, this will help speed up the review process.
To ensure new files are available in the various projects, we have a helper script to synchronize these changes across all the projects in the solution.
If you need to create new files:
- add the file to the main
Octokit
project - build the project (to ensure the
csproj
change is saved) - run this command:
.\build FixProjects
At any time you can build the project with .\build BuildApp
- this will also
run FxCop analysis.
Octokit.net also has a suite of tests which you can run to ensure existing behaviour is not affected. If you're adding new features, please add some tests alongside so the maintainers can sleep at night, knowing their safety blanket is nice and green!
The test suite is arranged into fast and slow tests.
Unit Tests: .\build UnitTests
These tests verify specific behaviour while being isolated from the rest of the library. If you are not familiar with unit testing, have a look at the existing examples - they should be easy to apply to your work.
Convention Tests: .\build ConventionTests
These tests verify conventions and structure across the entire codebase - ensuring everything is consistent and predictable. When writing new features, these tests may fail and should help indicate where the changes have violated the conventions, so feel free to run them locally while you're working on new features.
Integration Tests
Octokit has integration tests that access the GitHub API, but they require a bit of setup to run. The tests make use of a set of test accounts accessed via credentials stored in environment variables.
Run the following interactive script to set the necessary environment variables:
.\script\configure-integration-tests.ps1
After running this, ensure any existing instances of Visual Studio are restarted so they pick up the new environment variables are detected.
With these variables set, you can run the integration tests locally using
.\build IntegrationTests
or by running the Octokit.Tests.Integration
assembly in the Visual Studio test runner.
Note: as the integration tests rely on using the actual GitHub API, you may encounter issues if running the tests too frequently. Please use a test account so that you're not impacted in the unlikely scenario of your account being flagged as a spammer.
If you are making changes to the documentation for Octokit, you can test these
changes locally using the guide
under the docs
folder.
You can publish your branch from GitHub for Windows, or run this command from the Git Shell:
git push origin MY-BRANCH-NAME
Once your changes are ready to be reviewed, publish the branch to GitHub and open a pull request against it.
A few suggestions when opening a pull request:
- if you are addressing a particular issue, reference it like this:
Fixes #1145
- prefix the title with
[WIP]
to indicate this is a work-in-progress. It's always good to get feedback early, so don't be afraid to open the PR before it's "done". - use checklists to indicate the tasks which need to be done, so everyone knows how close you are to done.
- add comments to the PR about things that are unclear or you would like suggestions on
Some things that will increase the chance that your pull request is accepted:
- Follow existing code conventions. Most of what we do follows standard .NET conventions except in a few places. We include a ReSharper team settings file.
- Include unit tests that would otherwise fail without your code, but pass with it.
- Update the documentation, the surrounding one, examples elsewhere, guides, whatever is affected by your contribution