• Our git repository is at https://github.com/pyinstaller/pyinstaller:

    git clone https://github.com/pyinstaller/pyinstaller
    • Development is done on the develop branch. Pull-request shall be filed against this branch.

    • Releases will reside on the master branch.

  • Install required testing tools:

    pip install -r tests/requirements-tools.txt
  • Commit as often as you’d like, but squash or otherwise rewrite your commits into logical patches before asking for code review. git rebase -i is your friend. Read the »» Detailed Commit Guideline for more information.

    Reformatting code without functional changes will generally not be accepted (for rationale see #2727).

  • Write meaningful commit messages.

    • The first line shall be a short sentence that can stand alone as a short description of the change, written in the present tense, and prefixed with the subsystem-name.

    • The body of the commit message should explain or justify the change. Read the »» Detailed Commit Message Rules for more information.

  • Provide tests that cover your changes and try to run the tests locally first.

  • Submit pull-requests against the develop branch. Mind adding a changelog entry so our users can learn about your change!

  • For new files mind adding the copyright header, see PyInstaller/__init__.py (also mind updating to the current year).

  • In response to feedback, squash the new “fix up” commits into the respective commit that is being fixed with an interactive rebase (git rebase -i). Push the new, rewritten branch with a git push --force. (Scary! But github doesn’t play nicely with a safer method.)