Skip to content

How the Gatekeeper accepts the pull request

Michael Levy edited this page Sep 26, 2018 · 8 revisions

Once a developer has issued a pull request and the code has been reviewed, the gatekeeper (@mnlevy1981) will handle the final merge onto development in github with the following steps:

  1. In local checkout, make sure development and the branch to merge (branch) are up-to-date with github (development comes from marbl-ecosys/MARBL, branch comes from repository specified in pull request)
    1. Also check to see that development has been merged into branch (the developer should have done this)
  2. Merge branch onto development
    • Use git merge branch --no-ff to force a commit message highlighting the merge (and to keep the branch structure in the git graph); instead of default commit message, copy the first comment from pull request
    • Given (1i), there should not be any conflicts to resolve; the resulting development will be indentical to branch
  3. Sanity checks
    1. git diff development branch should not contain any differences
    2. make clean; make to ensure library and executable both build
    3. on development, git log --first-parent should show the merge commit message followed by the previous head of development
  4. delete branch (locally)
  5. If necessary, make a new development tag (marbl[X].[Y].[Z])
    • Note that not every PR will be tagged - the hope is that git log --first-parent can be used to give a reasonable approximation of a ChangeLog to help determine what changed between tags and specific commit IDs can be used to check out desired versions.
  6. Push development (and marbl[X].[Y].[Z], if applicable) back to marbl-ecosys/MARBL
  7. Close any tickets addressed by new tag
  8. Update Release Notes for the new tag

Notes:

  1. PRs that fail the Travis-CI testing will not be accepted
  2. If the PR updated the documentation (changes to files in docs/), then the github.io repo needs to be updated as well
    • Run make clean html from docs/src/ in the main MARBL repo
    • Delete versions/latest/* from the MARBL github.io repo
    • Copy docs/html/* from main MARBL repo into versions/latest/ of the github.io repo
    • Make sure you git rm any files that have been removed from the documentation, then update master of the github.io repo
  3. When the code is ready to be released, merge development onto stable (using git merge --ff-only) and tag appropriately
    • Copy docs/html/* (including all subdirectories)

Key tags:

  1. marbl0.26.2: consistently use git merge --no-ff to bring branches onto master
  2. marbl0.28.6: consistenyly overwrite the default merge message from git merge --no-ff