Skip to content

Contributing

Step 1. Fork this repository to your GitHub

Step 2. Clone the repository from your GitHub

git clone https://github.com/[YOUR GITHUB ACCOUNT]/gitpy.git

Step 3. Add this repository to the remote in your local repository

git remote add upstream "https://github.com/josix/gitpy"

You can pull the latest code in main branch through git pull upstream main afterward.

Step 4. Check out a branch for your new feature

git checkout -b [YOUR FEATURE]

Step 5. Install prerequisite

# Install uv (recommended)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Or with pipx
python -m pip install pipx
python -m pipx install uv invoke
python -m pipx ensurepath
  • uv: for package and environment management
  • invoke: for task management

Step 6. Create your local Python virtual environment and install dependencies

uv sync --group dev
# Or use invoke task:
uv run inv env.init-dev

Step 7. Work on your new feature

Note that this project follows conventional-commit and bumps version based on it. Use the following command to commit your changes.

uv run inv git.commit
# Or use commitizen directly:
uv run cz commit

Step 8. Run test cases

Make sure all test cases pass.

uv run pytest tests/ -v
# Or use invoke task:
uv run inv test

Step 9. Run test coverage

Check the test coverage and see where you can add test cases.

uv run pytest --cov=gitpy tests/
# Or use invoke task:
uv run inv test.cov

Step 10. Reformat source code

Format your code with ruff.

uv run ruff format .
# Or use invoke task:
uv run inv style.reformat

Step 11. Run style check

Make sure your coding style passes all enforced linters.

uv run ruff check .
uv run mypy gitpy tests
# Or use invoke task:
uv run inv style

Step 12. Run security check

Ensure the packages installed are secure, and no major vulnerability is introduced

uv run bandit -r gitpy
uv run pip-audit
# Or use invoke task:
uv run inv secure

Step 13. Create a Pull Request and celebrate 🎉