pmt 0.1.0

██▓███ ███▄ ▄███▓▄▄▄█████▓ ▓██░ ██▒▓██▒▀█▀ ██▒▓ ██▒ ▓▒ ▓██░ ██▓▒▓██ ▓██░▒ ▓██░ ▒░ ▒██▄█▓▒ ▒▒██ ▒██ ░ ▓██▓ ░ ▒██▒ ░ ░▒██▒ ░██▒ ▒██▒ ░ ▒█▒░ ░ ░░ ▒░ ░ ░ ▒ ░░ ░▓ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ The ultimate thirst quencher and git workflow tool
     __/\\\\\\\\\\\\\____/\\\\____________/\\\\__/\\\\\\\\\\\\\\\_
      _\/\\\/////////\\\_\/\\\\\\________/\\\\\\_\///////\\\/////__
       _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_______\/\\\_______
        _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\_______\/\\\_______
         _\/\\\/////////____\/\\\__\///\\\/___\/\\\_______\/\\\_______
          _\/\\\_____________\/\\\____\///_____\/\\\_______\/\\\_______
           _\/\\\_____________\/\\\_____________\/\\\_______\/\\\_______
            _\/\\\_____________\/\\\_____________\/\\\_______\/\\\_______
             _\///______________\///______________\///________\///________

# Docs
 The ultimate thirst quencher and git workflow management tool

## Commands

### story <ticket_id> [descriptor]

Creates a `story` with a given `identifier` and `descriptor` and likewise creates the `story` on `origin`.

Behind the scenes, `create` creates a branch named after the unique identifier. An identifier could be a ticket id or a short unique identifier. The branch is likewise created on `origin` and sets upstream locally to the origin branch.

### task | sub | subtask <subtask_descriptor>

Creates a `subtask` with a given descriptor and an assigns a numberical incremental id to the `subtask`.

Behind the scenes, this creates an empty commit with the descriptor as the message. Commits are chained in the chronological order in which their associated tasks are created. Changes to a `subtask` change the associated commit. This effectively decouples commits and time / order, and allows us to have more meaningful commits w/ meaningful commit messages in your commit logs.

### checkout [task_descriptor_regex]

`Checkout` will list all open `stories` on your machine, as well as `master`. If a regex is provided, `checkout` will only display `stories` that match the regex. `Checkout` will then ask you to select one of the listed `stories` to check into, or automatically check you in if a regex is given and filters down to a singular `story`. Checking out will stash all unsaved changes and immediately check you into the selected `story`.

Behind the scenes, `checkout` works via Git branching. Each `story` is a Git branch, and checking out into a `story` simply checks into that `story`'s branch. Before checkout takes place, all unstaged changes are stashed, and all saved changes are pushed to origin.

A user should be able to switch between `stories` without having to worry about saving progress or losing mental flow.

### diff [task_id] [-a --all]

Lists all the changes made in a given `task`. If no `task_id` is provided, then diff lists all the tasks which can be selected to display individual `task` diffs. If a -a parameter is appended, `diff` lists all changes on the current `task`.

Behind the scenes, diff shows all the changes made on the given commit associated with the `task_id`.

### add ...files

A literal alias to `git add`.

Note by the author: Staging is a critical concept for effective context switching. Abstracting away staging would not be productive for feature workflow.

### commit [task_id] ...files [-n <task_descriptor>]

If a `task_id` is provided, then staged changes made are added to the given `task`. If a `-n` optional is provided, then a new `task` is created with the given "task_descriptor" and changes are added to the new `task`. Otherwise, a list of `tasks` are provided that the user can pick to add the staged changes to.

### mpr

Makes a pull request for the given feature.

Note by the author: this should either be configured to run a user provided script, or work directly with various Version Control vendors such as Git or BitBucket.

### log

Logs commit history on the current branch.

##More to come in the near future!