|  | 
|  | 1 | +## Table of Contents | 
|  | 2 | + | 
|  | 3 | +- [Table of Contents](#table-of-contents) | 
|  | 4 | +- [Step 1: Build from Source](#step-1-build-from-source) | 
|  | 5 | +- [Step 2: Configuring Git and GitHub for Development](#step-2-configuring-git-and-github-for-development) | 
|  | 6 | +  - [Create your fork](#create-your-fork) | 
|  | 7 | +  - [Configure remotes](#configure-remotes) | 
|  | 8 | +  - [Authenticating with GitHub](#authenticating-with-github) | 
|  | 9 | +- [Guidelines](#guidelines) | 
|  | 10 | + | 
|  | 11 | +## Step 1: Build from Source | 
|  | 12 | + | 
|  | 13 | +To work on `python-template-cpp`, you are going to need to build it from source. See | 
|  | 14 | +[Build from Source](Build-from-Source) for | 
|  | 15 | +detailed build instructions. | 
|  | 16 | + | 
|  | 17 | +Once you've built `python-template-cpp` from a `git` clone, you will also need to | 
|  | 18 | +configure `git` and your GitHub account for `python-template-cpp` development. | 
|  | 19 | + | 
|  | 20 | +## Step 2: Configuring Git and GitHub for Development | 
|  | 21 | + | 
|  | 22 | +### Create your fork | 
|  | 23 | + | 
|  | 24 | +The first step is to create a personal fork of `python-template-cpp`. To do so, click | 
|  | 25 | +the "fork" button at https://github.com/python-project-templates/python-template-cpp, or just navigate | 
|  | 26 | +[here](https://github.com/python-project-templates/python-template-cpp/fork) in your browser. Set the | 
|  | 27 | +owner of the repository to your personal GitHub account if it is not | 
|  | 28 | +already set that way and click "Create fork". | 
|  | 29 | + | 
|  | 30 | +### Configure remotes | 
|  | 31 | + | 
|  | 32 | +Next, you should set some names for the `git` remotes corresponding to | 
|  | 33 | +main python-project-templates repository and your fork. See the [GitHub Docs](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/configuring-a-remote-repository-for-a-fork) for more information. | 
|  | 34 | + | 
|  | 35 | +### Authenticating with GitHub | 
|  | 36 | + | 
|  | 37 | +If you have not already configured `ssh` access to GitHub, you can find | 
|  | 38 | +instructions to do so | 
|  | 39 | +[here](https://docs.github.com/en/authentication/connecting-to-github-with-ssh), | 
|  | 40 | +including instructions to create an SSH key if you have not done | 
|  | 41 | +so. Authenticating with SSH is usually the easiest route. If you are working in | 
|  | 42 | +an environment that does not allow SSH connections to GitHub, you can look into | 
|  | 43 | +[configuring a hardware | 
|  | 44 | +passkey](https://docs.github.com/en/authentication/authenticating-with-a-passkey/about-passkeys) | 
|  | 45 | +or adding a [personal access | 
|  | 46 | +token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) | 
|  | 47 | +to avoid the need to type in your password every time you push to your fork. | 
|  | 48 | + | 
|  | 49 | +## Guidelines | 
|  | 50 | + | 
|  | 51 | +After developing a change locally, ensure that both [lints](Build-from-Source#lint-and-autoformat) and [tests](Build-from-Source#testing) pass. Commits should be squashed into logical units, and all commits must be signed (e.g. with the `-s` git flag). We require [Developer Certificate of Origin](https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin) for all contributions. | 
|  | 52 | + | 
|  | 53 | +If your work is still in-progress, open a [draft pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests). Otherwise, open a normal pull request. It might take a few days for a maintainer to review and provide feedback, so please be patient. If a maintainer asks for changes, please make said changes and squash your commits if necessary. If everything looks good to go, a maintainer will approve and merge your changes for inclusion in the next release. | 
|  | 54 | + | 
|  | 55 | +Please note that non substantive changes, large changes without prior discussion, etc, are not accepted and pull requests may be closed. | 
0 commit comments