# Maintainer Guide

## Making a Release

1. Make sure setup.py has the right version number

2. Update NEWS file

3. Run `python3 setup.py distcheck`, fix any issues and commit.

4. Commit NEWS as `"release 3.X.Y"` and push

5. Tag with: `git tag -s 3.X.Y -m "release 3.X.Y"`

6. Push tag with: `git push origin 3.X.Y`

7. In case of a stable release, upload to PyPI: `twine upload dist/PyGObject-3.X.Y.tar.gz`

8. Commit post-release version bump to setup.py

9. Create GNOME tarball `python3 setup.py sdist_gnome`

10. Upload tarball: `scp pygobject-3.X.Y.tar.xz user@master.gnome.org:`

11. Install tarball: `ssh user@master.gnome.org 'ftpadmin install pygobject-3.X.Y.tar.xz'`

12. In case the release happens on a stable branch copy the NEWS changes to the master branch

## Branching

Each cycle after the feature freeze, we create a stable branch so development can continue in the master branch unaffected by the freezes.

1. Create the branch locally with: `git checkout -b pygobject-3-2`

2. Push new branch: `git push origin pygobject-3-2`

3. In master, update setup.py to what will be the next version number (3.3.0)