cotask is a command-line task manager built in Rust that works like a simplified Git. Instead of tracking files, it tracks tasks with full version history . Every change creates a new snapshot (commit). You can branch, merge, rebase, tag releases, stash changes, and even export the entire repository state.
π Repository Structure
.
βββ Cargo.lock
βββ Cargo.toml
βββ README.md
βββ x.sh # Installation script
βββ src
β βββ bin
β β βββ cli.rs # CLI entry point
β βββ lib.rs # Library root
β βββ main.rs # Main binary entry
β βββ logic # Core business logic
β β βββ add_task.rs
β β βββ branch.rs
β β βββ checkout.rs
β β βββ diff.rs
β β βββ export.rs
β β βββ gc.rs
β β βββ import.rs
β β βββ init_repo.rs
β β βββ list_task.rs
β β βββ merge.rs
β β βββ mod.rs
β β βββ rand_hash.rs
β β βββ rebase.rs
β β βββ resolve.rs
β β βββ revert.rs
β β βββ show_help.rs
β β βββ show_log.rs
β β βββ stash.rs
β β βββ tag.rs
β βββ models # Data structures
β β βββ commit_model.rs
β β βββ export_model.rs
β β βββ mod.rs
β β βββ task_model.rs
β βββ storage # Persistence layer
β βββ commit.rs
β βββ head.rs
β βββ mod.rs
.cotask Directory Structure
.cotask/
βββ commits/ # Commit snapshots (JSON)
βββ refs/ # Branch pointers
βββ tags/ # Release tags
βββ stash/ # Temporary saved states
βββ HEAD # Current branch or detached commit
Add tasks
Mark tasks complete
Snapshot history automatically
Commit log
Checkout commit, branch, or tag
Diff between commits
πΏ Branching & Versioning
Create/delete branches
Merge branches
Rebase branches
Tags (fixed references to commits)
Detect merge conflicts
Manual resolution
Garbage collection (remove unreachable commits)
Stash system (temporary state save)
Export/import full repository state
Rust toolchain (rustc, cargo)
Unix-like system (Linux, macOS) for the installation script
git clone https://github.com/BartSimpson2911/CoTask
cd CoTask
chmod +x x.sh
./x.sh
What the script does:
Builds the project in release mode (cargo build --release)
Installs the binary globally (cargo install --path .)
Makes cotask available system-wide
Command
Description
cotask init
Initialize a new task repository
cotask export
Backup repository state to JSON
cotask import <file>
Restore repository from backup
cotask gc
Clean unused commits
Command
Description
cotask add "task"
Add a new task
cotask list
List all current tasks
cotask done <id>
Mark a task as complete
Command
Description
cotask log
Show commit history
cotask checkout <ref>
Switch branch/tag/commit
cotask diff <c1> <c2>
Compare two commits
cotask revert <commit>
Revert state
Command
Description
cotask branch <name>
Create branch
cotask merge <branch>
Merge
cotask rebase <branch>
Rebase
cotask branches
List branches
cotask branch-delete <name>
Delete branch
Command
Description
cotask tag <name>
Create tag
cotask tags
List tags
Command
Description
cotask stash
Save state
cotask stash-pop
Restore stash
cotask init
cotask add " Learn Rust"
cotask add " Build CLI"
cotask done 1
cotask log
Commits β Snapshot of task state
Branches β Pointers in .cotask/refs/
Tags β Fixed commit references
HEAD β Current position
DAG β Commit graph like Git
Rust
Serde
Standard Library
Bisect
Commit signing
Storage compression
Remote sync
Interactive rebase
Hooks
Web UI
Fork
Create branch
Make changes
Submit PR
MIT LICENSE
cotask = Learn Rust + Learn Git Internals + Build a Real System π¦
Made with β€οΈ using Rust and Serde