Skip to content

Development Workflow

Ryan L McIntyre edited this page Mar 10, 2018 · 29 revisions

VimDevIcons

Theses details are for contributors not general VimDevIcon plugin users 😉


Table of Contents:

  1. Prerequisites
  2. KISS Workflow*
  3. Branch Conventions
  4. Versions
  5. Automated Testing
  6. Issues
  7. New Release Workflow
  8. New Release Vimscripts Upload
  9. Code Standards

Prerequisites

KISS Workflow*

This describes the overall workflow and release methodology for the VimDevIcons project.

Goals

Overview

  • master is basically the stable dev or nightly branch
  • Pull Requests are simply merged in (not rebased)
  • There are no squashing requirements at the moment
  • Each release will have a tag and a branch
    • Tags will follow format of: vMAJOR.MINOR.PATCH
    • Braches will follow format of: MAJOR.MINOR.PATCH

Branch Conventions

Only time-critical bug fixes or possibly trivial doc changes go directly into the master branch.

As of 10th March 2018, VimDevIcons uses the KISS Workflow* to keep development momentum from being blocked by releases: Everything goes directly into the master after basic smoke test or review. master is basically dev or nightly branch, could break at anytime

Versions

VimDevIcons uses, at least as well as it can, Semantic Versioning.

Each release will have a branch and corresponding tag:

  • branch MAJOR.MINOR.PATCH, e.g. 0.5.3
  • tag vMAJOR.MINOR.PATCH v0.5.3

Automated Testing

todo

Issues

Submitted issues should follow the Issue Template as close as possible

New Release Workflow

  • pull latest master branch
  • create new versioned branch
    • "MAJOR.MINOR.PATCH"
    • e.g.
    git checkout -b 0.5.3
  • merge any PRs that go in the milestone into the newly versioned branch
    • e.g.
    git checkout -b THE_PR_BRANCH_NAME master
    git pull https://github.com/THE_PR_BRANCH_URI THE_PR_REMOTE_BRANCH_NAME
    git checkout THE_VERSIONED_BRANCH
    git merge --no-ff THE_PR_BRANCH_NAME
    
  • commit any general issue fixes/updates that go in the milestone
  • update the readme if applicable
    • Make sure to update the versioned image reference paths (if minor or greater version changed)
  • update the changelog
    • create new list item for the release
    • create new list items for each new merged PR, fix, update, etc
      • for PRs make sure to add @ for attribution to person who made the PR
      • prefix an appropriate verb in past tense for each (Updated, Added, Fixed, Improved, Changed)
  • update internal version references in all .vim files that have them
  • regenerate the vim doc automatically with html2vimdoc
    • e.g.
    cd ~/vim-tools
    html2vimdoc/bin/python ./html2vimdoc.py --file=devicons ~/projects/vim-devicons/readme.md > ~/projects/vim-devicons/doc/webdevicons.txt
    cd ~/projects/vim-devicons/
    # for now do some basic search and replace to prevent issues with special characters:
    sed -i 's/✅//' doc/webdevicons.txt
  • push the new branch
    • git push -u origin <semver_based_branch_name>
  • merge to master
    • git checkout master
    • git merge <semver_based_branch_name>
  • create tag
    • "vMAJOR.MINOR.PATCH"
    • i.e. same as branch name but with prefixed with a 'v'
    • e.g. git tag v0.5.3
  • push latest master and tag
    • git push origin master
    • git push --tags
  • add new release on GitHub
    • basically copy and paste the version changes from the changelog.md
  • Finally download release zip and upload to VimScripts

New Release VimScripts Upload

  • Download latest release zip

  • Rename the zip file slightly:

  • Rename zip file from vim-devicons-x.x.x.zip to vim-devicons-vx.x.x.zip

  • Make some necessary tweaks to a few files in the zip:

  • Rename root folder

  • Rename from vim-devicons-x.x.x to just vim-devicons

  • Edit readme.md and add the follow mirror disclaimer to the very top followed by a new line:

    **NOTE: This is just a mirror, official repo is here: https://github.com/ryanoasis/vim-devicons**
    
  • Save all changes and close the zip

  • Re-open zip and verify changes saved

  • Upload latest release zip to VimScripts: http://www.vim.org/scripts/script.php?script_id=5114

  • For "script version" enter vx.x.x

  • For "version comment" enter https://github.com/ryanoasis/vim-devicons/releases/tag/vx.x.x

Code Standards

*Based on GitFlow, GitHub Flow and a few others workflows

Clone this wiki locally