Skip to content

Contributing guide (git)

Nick LaFarge edited this page Nov 21, 2022 · 1 revision

GitHub has an excellent Get Started for learning about workflow, contributing, and the collaborative tools we will use for development.

Issues

Anyone is welcome/encouraged to help with any Issue. This can be feedback within pull requests, comments within the issue themselves, or implementing changes within the codebase to address the specific issue. Look for good first issue or help wanted tags if you're trying to find somewhere to start

Resources to learn git

There are so many tools, GUIs, and resources online for learning git, that it is impossible to list them here. You will have to experiment a bit to find what works for you. The Pro Git textbook is available for free online, and is an excellent source as well.

If you're using CLion or PyCharm for this project, they have pretty good built-in git functionality (as do all JetBrains IDEs). GitKraken is another good option for those who want a visual interface It is often easiest to use command line git, especially for specific problems, though the learning curve for that is steeper.

Workflow

We will use GitHub flow as our general workflow approach. As a high level example, say you see an issue that you want to help fix. The general process to follow is:

  1. Create a new branch for the particular issue(s). The easiest way to do this is to open the issue, and click on "Create a branch" under "Development"
  2. Implement your changes in this newly created branch
  3. Once you are ready for feedback, open your branch through GitHub and create a pull request. This doesn't necessarily mean everything is finished - this is a great way to solicit feedback on your change
  4. Discussions take place in the pull request, and once the change is ready (with any necessary unit tests implemented), then someone will approve the request and the change will be merged into the main branch

This workflow may be new to many people, so feel free to reach out if you get stuck anywhere.

Clone this wiki locally