Skip to content

Using GitHub for ODP Development

Matias Elo edited this page Dec 20, 2023 · 10 revisions

GitHub Setup (only need to do this once)

  1. Create Github account (if needed)
  2. Login to your GitHub account.
  3. Go to the ODP Git Repo: https://github.com/OpenDataPlane/odp
  4. Use the Fork Button to create a fork in your GitHub account

Enable GitHub Actions (only need to do this once)

  1. Make sure GitHub Actions are enabled for your forked copy of ODP repository: Settings -> Actions -> General -> Allow all actions and reusable workflows

After this, whenever you push to your fork, GitHub Actions will run regression tests on it and give you a report of any problems with your patches under the Actions tab.

Creating a working clone

  1. From your Linux development system create a clone of your fork of ODP
git clone https://github.com/<yourgithubname>/odp myodp.git
cd myodp.git
  1. Create a remote to track the main ODP repo:
git remote add upstream https://github.com/OpenDataPlane/odp.git

You can add other remotes as needed if you want to work with forks owned by other team members. The name of the remote is of your choosing.

After you do this: git remote -v shows:

origin: https://github.com/<yourgithubname>odp.git (fetch)

origin: https://github.com/<yourgithubname>odp.git (push)

upstream: https://github.com/OpenDataPlane/odp.git (fetch)

upstream: https://github.com/OpenDataPlane/odp.git (push)

Updating your fork

git pull upstream master
git rebase

Creating a new branch for development and Pushing commits to your fork

It's recommended to have separate branch for each developed feature. Then create pull request from that branch. E.g. branch master_bug_123 --> OpenDataPlane/odp.git/master, parallel work can be done in a separate branch like master_feature_a --> OpenDataPlane/odp.git/master

Creating a Pull Request

ODP project uses standard GitHub pull requests (PR). To create a PR you simply click New pull request button for your development branch. It is highly recommended that your branch passes all regression tests before submitting a PR. For more details refer to the GitHub official documentation.