Skip to content

Latest commit

 

History

History
152 lines (130 loc) · 5.35 KB

CONTRIBUTING.md

File metadata and controls

152 lines (130 loc) · 5.35 KB

CONTRIBUTING

Taskwarrior install for contributors

If you wish to contribute to Taskwarrior, you should:

  1. create a fork on GitHub
  2. clone your fork to your machine
  • For ssh:
    git clone [email protected]:<YOUR GITHUB USERNAME>/taskwarrior.git
  • For https:
    git clone https://github.com/<YOUR GITHUB USERNAME>/taskwarrior.git
  1. add a new remote repo to track
    • this means you can push/pull as normal to your own repo, but also easily track & update from the Taskwarrior repo
    • for ssh:
      git remote add upstream [email protected]:helmecke/taskwarrior.git
    • for https:
      git remote add upstream https://github.com/helmecke/taskwarrior.git
  2. any time you create a branch to do some work, use
    $ git fetch upstream && git checkout -b dev-myFEAT upstream/main
  3. only use the --rebase flag to update your dev branch
    • this means that there are no Merge taskwarrior/main into devBranch commits, which are to be avoided
    $ git pull upstream --rebase

Things to know before contributing

  • When making a PR (pull request), please be very descriptive about what you've done!

  • PR titles should be formatted with 'fix', 'chore' or 'feat'. ex: feat: add undo command

  • PRs should follow the pull request formats where applicable

  • We are open to all PRs, but may decline some for a myriad of reasons. Though don't be discouraged! We'll still be open to discussions.

How to remove or edit commits from your PR

You may have been directed here to remove a commit such as a merge commit: Merge taskwarrior/main into devBranch from your PR

As these commands edit your git history, you may need to force push with git push origin --force

  1. Run the following:
$ git rebase -i HEAD~<NUMBER OF COMMITS TO GO BACK>
Example

$ git rebase -i HEAD~4
pick 28b2dcb statusline add lsp status
pick dad9a39 feat: Added lsp radial progress
pick 68f72f1 add clickable btn for exiting nvim
pick b281b53 avoid using q! for quitting vim

# Rebase 52b655b..b281b53 onto 52b655b (4 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

  1. Change the pick commands to whatever you wish, you may wish to d drop or e edit a commit. Then save & quit this git file to run it.
Example

pick 28b2dcb statusline add lsp status
pick dad9a39 feat: Added lsp radial progress
edit 68f72f1 add clickable btn for exiting nvim
d b281b53 avoid using q! for quitting vim

# Rebase 52b655b..b281b53 onto 52b655b (4 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

  1. If you picked drop you are done, if you picked edit then edit your files, then run:
$ git add <files>
  1. Once you have edited & added your files, run:
$ git rebase --continue
  1. You will likely need to push using:
$ git push origin --force