Contributing

Thanks for contributing! Please read this document before you make a PR.

Supported Platforms

Any changes must support the following platforms:

  • macOS
  • Linux
  • OpenBSD (You may need to browse their man page)

Your change must also be compatible with the dependency constraints that are specified in Installation. If you aren't sure if a feature is compatible, check the manual or release notes. For example, the Bash changelog is here.

If you aren't able to test your new command on a platform, make that clear in your PR; someone else may be able to test it on their system.

Adding a New Command

Let's say you wish to add a new command. Assuming your new command is named foo:

  1. Write a bash script under ./bin called git-foo. The script should be started with #!/usr/bin/env bash.
  2. Read ./man/Readme.md and write documentation for git-foo.
  3. Don't forget to introduce it in Commands.md.
  4. Update ./etc/git-extras-completion.zsh. Just follow existing code.
  5. (Optional) Update ./etc/bash_completion.sh.
  6. (Optional) Update ./etc/git-extras.fish.
  7. (Optional) Add a test under ./tests.
  8. Run ./check_integrity.sh foo to check if all done. (You may also run ./check_integrity.sh to check all commands.)

You are welcome to open up an issue to discuss new commands or features before opening a pull request.

AI Contributions

Contributions that use AI tools are permitted, but there must be a human in the loop. We:

  • allow code generated by AI.
  • partially allow issues/pull requests to be generated by AI, but it must be disclosed and we highly recommend adding additional human commentary. You must be able to vouch for its correctness as if you had written it yourself.
  • require that replies to maintainers (as in issues and PRs) must be human written.

If any of the above requirements are violated or if it is clear that there is no human in the loop, we will close your pull request.

Submitting a pull request

Please follow the suggestion in ./.github/PULL_REQUEST_TEMPLATE.md.