Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Define repository settings in .github/settings.yml so that they can be managed and tracked via pull requests, see Fabric example.

  • Define Branch protection rules (TODO - define best starting config)

  • Consider using a CODEOWNERS file to specify write permission per directory, see Fabric example with additional /docs maintainers.
    • Add a link to maintainers.md scope field so that users can find domain area contacts
  • Consider using a .github/PULL_REQUEST_TEMPLATE.md and .github/ISSUE_TEMPLATE

...

  • Although there are often multiple paths to achieve an outcome in git and GitHub, there is value in defining a suggested path, both for the benefit of new GitHub users, and for the sake of project consistency.

  • Rebase merging is preferred over Merge commits and Squash merging to keep commit history and PR description clean (assuming contributors squash/amend their own pull requests)
  • Preserve commit hash - rebase then merge with fast forward option
    • git rebase (branch); git merge --ff-only
    • git commit -s versus git commit -S
      • -S is crypto verified, -s is DCO signoff. Rebase preserves both.
  • amend commits to avoid having multiple commits (amend commits instead of squashing commits - git commit --amend). If you do have multiple commits squash them before opening PR. Keep pull requests focused to a logical unit of work.
  • Mergify to simplify cherry picks and backports - @Mergifyio backport <branch>
  • Example Fabric guidance doc for forking, branching, remotes, creating pull requests, updating pull requests, cherry picking
    • TODO add this to Hyperledger TOC best practices site instead of buried in Fabric docs, add a link to Git-help Discord channel for git/github questions and discussions