# # # Distribution Statement A. Approved for public release. Distribution unlimited.
# # #
# # # Author:
# # # Naval Research Laboratory, Marine Meteorology Division
# # #
# # # This program is free software: you can redistribute it and/or modify it under
# # # the terms of the NRLMMD License included with this program. This program is
# # # distributed WITHOUT ANY WARRANTY; without even the implied warranty of
# # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the included license
# # # for more details. If you did not receive the license, for more information see:

GeoIPS git workflow#

Follow these steps when making modifications to geoips-based packages or plugins

GeoIPS GitHub Issue Creation Workflow#

FROM WEB: Create an Issue for something that needs to be done#

  • Select an appropriate Issue template

    • Navigate to: NRLMMD-GEOIPS/geoips#issues

      • NOTE: you can create Issues on repos besides “geoips” if desired.

    • Click green “New Issue” button in top right

    • Click green “Get started” box to the right of the desired template

  • Populate Issue contents appropriately

    • Title: Short descriptive name for the Issue (example: “Update GEOIPS_REPO_URL to GitHub”)

    • Write: Follow template within “Write” tab to populate with appropriate content

    • Assignees: Add Assignees as appropriate

    • Labels: Add descriptive labels as appropriate

    • Projects: Link to “GeoIPS - All Repos and all Functionality”, other Projects as appropriate

  • Click “Submit new issue”

FROM WEB: MEMBERS: Create Branch from Existing Issue#

NOTE: Those who are NOT members of the GeoIPS organization will fork, not branch. Skip to NON MEMBERS section

  • Navigate to Issue you would like to resolve

  • Click on Development->Create Branch

    • Branch name Use auto-populated default branch name

    • Repository Destination Select repository to which you would like to make changes

      • NOTE you can create branches on repositories outside the repository the Issue resides in

    • Change branch source optional (defaults to “main”)

    • Select “Checkout locally”

    • Click “Create branch”

    • Copy and paste the resulting “git fetch” and “git checkout” commands

FROM WEB: NON-MEMBERS: Create fork of repo#

  • NOTE: NRLMMD-GEOIPS members will branch following steps above, **skip this section if you are a member

  • Navigate to desired repository

  • Click drop down next to “Fork”

  • Click “+ Create a new fork”

  • Select appropriate owner/organization to own the fork (could be your individual github username)

  • Uncheck “copy main branch only”

  • Click “create fork”

GeoIPS command line workflow#

FROM COMMAND LINE: Switch to new branch, Make changes as usual#

  • Navigate to repository of your choice

    • Issue only needs to be created on a single repository

    • You can create branches and make changes on any number of repos, as appropriate.

    • Related changes on different repositories will all be linked to the same Issue.

  • Switch to new branch, and make changes as appropriate

    • Ensure you copy and paste git fetch and git checkout commands when creating branch above

    • Switch to new branch: Paste git fetch / git checkout commands specified when creating branch from Issue

      • git fetch origin

      • git checkout <new_branch_name>

    • <Make changes to code>

    • git commit # Frequently commit your changes

  • Use enforced commit message format for all commits

    • Please follow Commit Message Template

    • Summary line <= 120 characters

    • Blank line (if commit message is more than one line)

    • OPTIONAL: additional details

    • Issue ID

  • Update CHANGELOG.md in each repository with changes related to this Issue

    • Before pushing your final changes to GitHub and creating a pull request, you MUST update CHANGELOG.md appropriately

    • Please follow CHANGELOG Template

    • You will Copy and paste CHANGELOG modifications directly into the “Summary” section of pull request.

    • If CHANGELOG.md is not updated appropriately, pull request will be rejected.

  • Create test scripts and associated outputs for any new functionality
    • Ensure any new functionality is tested in:
      • <repo>/tests/scripts/<test_name>.sh

    • Ensure new test scripts are included in:
      • <repo>/tests/test_all.sh

Push changes to github#

  • From command line: When you have made all of the changes required for the current Issue, push changes to GitHub

    • Perform once for each repository with changes related to this Issue

    • git push

GeoIPS GitHub Pull Request workflow#

FROM WEB: Create pull request from new ticket branch to “dev” branch#

Follow these instructions for each repo that requires changes for a given Issue.

  • IF NEEDED: Navigate to Issue URL via web browser, and finalize with any last minute notes or resolutions

    • IF APPROPRIATE: Summary of overall changes

    • IF APPROPRIATE: Complete testing instructions (if multiple repostiories involved)

    • IF APPROPRIATE: Complete test output (if multiple repositories involved)

  • Create a Pull Request on each repo with changes associated with the current Issue ID

    • Click on “Pull requests” tab within current repo

    • Click green “New pull request” button

    • Source: <new_branch_name>

    • Destination: main

    • Click green “Create pull request” button

  • Fill Auto-populated template with appropriate content:

    • Generated from Global Pull Request Template

    • Important to follow template title and contents directions for ease of review

    • Pull request will be denied if template is not followed appropriately

  • Ensure appropriate tags and attributes are set on the pull request

    • Reviewers: Identify at least two Reviewers

    • Labels: As appropriate

    • Projects: VERY IMPORTANT: Select “GeoIPS - * *All Repos and All Functionality, additional Projects if desired.

  • Click “Create”

    • Now wait for the automated emails from GitHub saying your changes have been approved and merged.

GeoIPS Merge PR and Close Issue workflow#

FROM WEB: Merge pull requests#

This could include related pull requests from multiple repositories.

  • Navigate to GeoIPS Project

  • Find current Issue card - Issue will have all associated PRs linked

  • CTRL-Click on each linked pull request

    • Click green “Merge branch” from each PR

    • Click “Delete head branch” from each PR

  • This should automatically update the Project so all related PRs and Issues are moved to the “Done” columnn

FROM WEB: Ensure all Issues and Pull Requests were successfully closed#

  • Could require approvals / merges from multiple pull requests in multiple repos before closing Issue

  • Navigate to GeoIPS Project

  • Ensure all related Issue and Pull Request cards were automatically moved to the “Done” column