Skip to content

Development Workflow

Ryan L McIntyre edited this page Jan 21, 2018 · 29 revisions

VimDevIcons

Theses details are for contributors not general VimDevIcon plugin users 😉


Table of Contents:

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

Prerequisites

Branch Conventions

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

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