Local-first task manager/bug tracker that stores everything right in the git repository and can sync issues from/to GitHub.

Overview

git-task

Local-first task manager/bug tracker within your git repository which can import issues from GitHub.

build

Installation

Build a binary, then add it as a git command:

cargo install git-task
git config --global alias.task '!~/.cargo/bin/git-task'

Now you can switch to some git repo and run it as:

git task create "My first task"

Or import issues from GitHub (GITHUB_TOKEN or GITHUB_API_TOKEN env variable might be needed to be set up if you have a private repository):

git task pull

Concepts

git-task maintains a collection of tasks, which are essentially an integer ID and a set of properties.

Some properties are special: name, description, author, created and status. You can add custom properties for every task. It's possible to define conditional color highlighting depending on the value of the property.

Tasks can have comments that are also addressed by their ID.

Status can be anything, but it expected to be one of the several defined statuses. By default, there are three: OPEN for new tasks, IN_PROGRESS for the tasks that are in development, CLOSED for complete ones. You can freely edit this list.

However, for the sake of sync with GitHub there are two config options to map remote OPEN and CLOSED statuses with local ones.

Commands

list

Lists all tasks.

git task list

Show only open tasks:

git task list -s o
git task list --status o

Show only closed tasks:

git task list -s c

Show only tasks with a custom status:

git task list --status DEPLOYED

Show tasks that are new or in progress:

git task list -s OPEN,IN_PROGRESS
git task list -s o,i

Filter by keyword:

git task list -k linux

Filter by date:

git task list --from 2024-01-01
git task list --until 2023-12-31

Filter by author:

git task list --author jhspetersson

Show specific columns:

git task list --columns id,status,name

Sorting by one or more task properties:

git task list --sort author
git task list --sort "status, created desc"

Limit displayed task count:

git task list -l 10
git task list --limit 5

show

Shows one task with all the properties (like id, name, status, description and a bunch of custom ones, actually, you can add whatever you like).

git task show 1

create

Creates a new task.

git task create "Fix my Fizz Buzz implementation"
git task create "Task title" "Task description"
git task create "This task goes without description" --no-desc
git task create "Create a task and push it to GitHub" --push

status

Updates task status.

git task status 1 IN_PROGRESS
git task status 1 i
git task status 2..5 10 12 c

get

Prints task property.

git task get 1 description

set

Sets task property:

git task set 1 description "I figured it out all wrong. Fizz Buzz has to be rewritten in Rust!"
git task set 1..10 author me

unset

Delete a property:

git task unset 1 foo

edit

Edit task property in the default git editor.

git task edit 1 description

For Windows, we recommend anything, but notepad. Notepad++ is just fine. You can set it up this way:

git config --global core.editor "C:\\Program Files\\Notepad++\\notepad++.exe"

comment

Add, edit or remove comments:

git task comment add 1 "This is a comment to my first task"
git task comment edit 1 1
git task comment del 1 1

You can sync comments with the remote source:

git task comment edit 159 2334900009 --push

import

Import all or selected tasks from JSON file.

git task import <my_tasks.json
git task import 2 3 4 5 10 12 <my_tasks.json
git task import 2..5 10 12 <my_tasks.json

export

Export all or selected tasks, only JSON output format is currently supported.

git task export
git task export --pretty 2 3 4 5 10 12 >my_tasks.json
git task export --pretty 2..5 10 12 >my_tasks.json
git task export --status o,i
git task export --limit 50

pull

Grab issues from remote source (currently, only GitHub is supported). For private repositories you have to set up GITHUB_TOKEN or GITHUB_API_TOKEN environment variable.

git task pull
git task pull --no-comments
git task pull 2 3 4 5 10 12
git task pull 2..5 10 12
git task pull --limit 50

Pull only open issues:

git task pull -s o
git task pull --status OPEN

push

Push status of the selected tasks to the remote source. For GitHub you have to set up GITHUB_TOKEN or GITHUB_API_TOKEN environment variable.

git task push 2 3 4 5 10 12
git task push 2..5 10 12

stats

Show total task count, count by status and top 10 authors.

git task stats

delete

Deletes one or more tasks by their IDs or status.

git task delete 1
git task delete 2 3 4 5 10 12
git task delete 2..5 10 12
git task delete -s CLOSED
git task delete -s c

Also delete a corresponding GitHub issue:

git task delete 120 --push

clear

Deletes all tasks.

git task clear

config

Maintain configuration parameters.

git task config list
git task config get task.list.columns
git task config get task.list.sort
git task config get task.status.open
git task config get task.status.closed
git task config get task.ref

Customize sorting:

git task config set task.list.sort "created desc"

Customize columns:

git task config set task.list.columns id,author,status,name

By default git-task saves everything under a custom ref. You can change that to a regular branch like this:

git task config set task.ref refs/heads/tasks

Remove old ref after setting a new one:

git task config set task.ref refs/heads/tasks --move

Configure task statuses:

git task config status list
git task config status set CLOSED color Magenta
git task config status set CLOSED name FINISHED
git task config status set FINISHED shortcut f
git task config status set FINISHED style bold,italic
git task config set task.status.closed FINISHED

Colors available:

Black, DarkGray, Red, LightRed, Green, LightGreen, Yellow, LightYellow, Blue, LightBlue, Purple, LightPurple, Magenta, LightMagenta, Cyan, LightCyan, White, LightGray

Or one-byte value like:

239

Styles available:

bold, dimmed, italic, normal, strikethrough, underline

Add and delete statuses:

git task config status add ARCHIVE a Magenta true
git task config status delete ARCHIVE
git task config status delete a

You can export status config, edit it manually and import it back:

git task config status export --pretty >statuses.json
git task config status import <statuses.json

If everything went wrong:

git task config status reset

Configure known task properties (you can add any other if you wish to any task):

git task config props add client_name string Cyan
git task config props set client_name color Blue
git task config props delete client_name

You can also set up their own colors for specific values of the properties (assuming you've already added priority property):

git task config prop enum add priority HIGH Red
git task config prop enum get priority HIGH color
git task config prop enum set priority HIGH Magenta bold
git task config prop enum list priority    
git task config prop enum del priority HIGH

You can also export, manually edit and import back task properties configuration.

git task config props export
git task config props import
git task config props reset

help

Show available commands or their arguments.

git task help
git task help create

License

MIT


Supported by JetBrains IDEA open source license

You might also like...
Local-first high performance codebase index engine designed for AI

CodeIndex CodeIndex is a local-first high performance codebase index engine designed for AI. It helps your LLM understand the structure and semantics

A git command to quickly save your local changes in case of earthquake !

git-eq (aka git earthquake) Earthquakes are part of the daily life in many countries like in Taiwan. git-eq is a simple git command to quickly save yo

An over-simplified version control system written in Rust, similar to Git, for local files (Incomplete)

Vault Vault will be a command line tool (if successful) similar to git which would have multiple features like brances etc etc. __ __ _ _

fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd
fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd

fas fas stands for Find all stuff and it's a rust app that simplify the find command and allow you to easily search everything you need. Note: current

garbage-collecting on-disk object store, supporting higher level KV stores and databases.

marble Garbage-collecting disk-based object-store. See examples/kv.rs for a minimal key-value store built on top of this. Supports 4 methods: read: de

A crate providing a MemoryCell struct, which stores a current and previous value.

memcell What is a MemoryCell? A MemoryCell is a struct containing both a current and optional previous value. Definition #[derive(Debug, Clone)] pub s

A Rust CLI tool that helps you enforce Git policies through Git hooks both server and client side

GitPolicyEnforcer This is a command line utility written in Rust, that helps you utilize Git hooks, to enforce various policies. It currently supports

Git Explorer: cross-platform git workflow improvement tool inspired by Magit
Git Explorer: cross-platform git workflow improvement tool inspired by Magit

Gex Git workflow improvement CLI tool inspired by Magit. This project is still under initial development, but I am actively dogfooding it and features

a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries
a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries

gprepo /dʒiːpiːˈɹi:pi:oʊ/ a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries. Features Excludes LICENSE an

Releases(0.1.0)
Owner
null
TimeKnight is a neat little TUI-based timer app I use in conjunction with a task tracker

TimeKnight is a neat little TUI-based timer app I use in conjunction with a task tracker. It's kind of a secret sauce for productivity (particularly if you have ADHD or have a ridiculously overactive brain).

Monomadic 1 Feb 8, 2022
Run the right version of python, in the right environment, for your project

rpy Do you deal with lots of virtual python environments? rpy is for you! Before rpy: ~/dev/prj$ env PYTHONPATH=src/py path/to/my/interpreter src/py/m

Aquatic Capital Management 2 Dec 8, 2022
A command-line tool aiming to upload the local image used in your markdown file to the GitHub repo and replace the local file path with the returned URL.

Pup A command line tool aiming to upload the local image used in your markdown file to the GitHub repo and replace the local file path with the return

SteveLau 11 Aug 17, 2022
Copy files from Git repository to local.

gitcp Copy files from Git repository to local. Install We are planning to add some installers support in the future. e.g. homebrew winget debian packa

Ryo Nakamura 3 Aug 9, 2022
A git sub-command to view your git repository in the web browser

git-view A git sub-command to view your git repository in the web browser! About Are you also frustrated from moving your hands away from the keyboard

Hamothy 5 Sep 26, 2022
git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers.⛰️

git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers. The changelog template can be customized with a configuration file to match the desired format.

Orhun Parmaksız 5k Jan 9, 2023
Incredible.dev is an AI Coding Co-worker which can code, fix, document, deploy, test your APIs. One agent to rule everything API.

Incredible.dev Early Github preview, documentation and instruction to run coming soon in a week! Here are some highlights: AI agents that can code, fi

Incredible 27 Jun 27, 2024
Get your github contributions right in your terminal, blazingly fast!

GitColorScripts Get your github contributions right in your terminal! Installation Install via yay yay -S gitcolorscripts Install manually Download t

VoidCupboard 56 Jul 12, 2023
Utility for barcoderdev/unitypackage_godot, submit issues there.

unitypackage_util Requires barcoderdev/FBX2glTF to extract FBX in GLTF(glb) format. Place the binary in the same folder, or in PATH. Usage: unitypacka

Barcoder 4 May 25, 2023
Bolik Timeline is local-first software for keeping notes and files.

Bolik monorepo Bolik Timeline is local-first software for keeping notes and files. This repo contains alpha-quality software. This means that we are e

Bolik Oy 18 Apr 11, 2023