Simple git/hg tui client focused on keyboard shortcuts

Related tags

Utilities git rust tui hg
Overview

Rust

verco

A simple Git/Hg tui client focused on keyboard shortcuts

Screenshots

log screen

verco workflow

Platforms

This project uses Cargo and pure Rust stable and works on latest versions of Windows, Mac and Linux.

It depends on:

Install

You can either install it via cargo or download the binaries from github releases.

If you go the cargo route, you can install it using rustup. In a terminal, run this command to install verco:

cargo install verco

You'll be able to open verco from whichever directory you in.

Packaging status

Fedora (COPR)

sudo dnf copr enable atim/verco -y
sudo dnf install verco

Usage

In a terminal in a repository folder, run the verco command. It will launch verco's tui and you'll be able to interface with git/hg.

Actions

Key Sequence Action
h help
q quit
s status
l log
LC log count
dd current diff all
ds current diff selected
DC revision changes
DD revision diff all
DS revision diff selected
cc commit all
cs commit selected
m merge
RA revert all
rs revert selected
rr list unresolved conflicts
ro resolve taking other
rl resolve taking local
f fetch
p pull
P push
tn new tag
bb list branches
bn new branch
bd delete branch
x custom action

Other Keybindings

Key Sequence Action
ctrl+c, esc cancel input/filter/select or quit
ctrl+j, ctrl+n, arrow down move down one line
ctrl+k, ctrl+p, arrow up move up one line
space select entry when selecting
enter accept selection
ctrl+f, / enter filter mode when viewing action result
ctrl+w clear filter
ctrl+h, backspace pop one char from filter

Custom Actions

You can create simple custom actions to run in your repository folder by placing them in the file .verco/custom_actions.txt in your repository root.

Each line in this file is treated as a different custom action. Until the first whitespace, the characters are treated as the keybind for the action, the next word is the command to be executed itself, and the rest are its parameters.

Example:

gv git --version

With verco open, you can type in xgv (x is the custom action prefix) and it will print your git version without leaving verco. Use it to create build tasks for example.

Comments
  • Core dumped

    Core dumped

    Getting following error when trying to run verco inside a git repo

    memory allocation of 18446744073709551609 bytes failedAborted (core dumped)

    additional info:

    $uname -a

    Linux hostname 5.6.10-300.fc32.x86_64 #1 SMP Mon May 4 14:29:45 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

    bug 
    opened by kaushalyap 15
  • quit

    quit

    Ctrl-c didn't seem to quit? I tried 'q' as well.

    Is this Hotel California? :-)

    I find tig really good for staging / unstaging files, but tig doesn't have multiple select. Maybe spacebar to select/unselect a file?

    The project seems promising - I like tig but it could be snappier.

    opened by gilescope 7
  • UI should be async

    UI should be async

    Hi, I realize that this issue is asking for a significant change in the codebase, but the sooner it's done, the easier the switch will be.

    This would add the ability to keep the UI responsive while loading slower commands, and do background loading more easily.

    Have you already thought about this?

    enhancement investigate 
    opened by Alphare 6
  • More robust log manipulation for shortcuts

    More robust log manipulation for shortcuts

    The current log replacement for shortcuts does not work well when hashes are referred to inside revision descriptions.

    This change does 2 things: - Uses a more robust template string that does not exhibit the above bug - Drops one of the two VCS calls necessary to dramatically improve performance in big repositories

    This requires the addition of a dependency on regex, which is one of the best crates in the ecosystem and will most likely be used in other future patches.

    opened by Alphare 5
  • Investigate better hash shortcut system

    Investigate better hash shortcut system

    The current hash shortcut system has some limitations such as:

    • only the first 26 visible or something hashes have shortcuts
    • you can only use them if you first run the log action
    • it makes the log action call to git/hg log twice to get the hashes (although this is fixed by #18)

    Some suggestions:

    • auto completion (maybe a background job that fetches some hashes for completion)
    • a log view that lets us select a commit (and parsing it's hash into a verco register or clipboard, or something) and maybe do something with it
    • an action just for copying (or saving to a register) a commit hash. we could have then actions that operate on the clipboard (or saved register)
    enhancement investigate needs design 
    opened by vamolessa 2
  • Please include Cargo.lock

    Please include Cargo.lock

    Attempting to build from the 5.0.0 release tarball with cargo build --release --locked results in an error:

    error: the lock file /home/wmoore/Projects/aur/verco/src/verco-5.0.0/Cargo.lock needs to be updated but --locked was passed to prevent this
    If you want to try to generate the lock file without accessing the network, use the --offline flag.
    

    I use --locked when building an AUR package to ensure that the build is reproducible. It appears that you have not committed the Cargo.lock file. This is recommended for binary packages to ensure others building from source use the same version of dependencies that you used.

    opened by wezm 2
  • Use rustfmt on the project

    Use rustfmt on the project

    This is to reduce diff size and keep everything clean.

    I vote for using 80 characters per line because it fits nicely in all the UIs I use, but that's your call.

    enhancement 
    opened by Alphare 2
  • "go back" command?

    Would be nice to have a command to back to previous view, unless I'm missing it. For example, going to details view for a commit and then to diff view for a file, there's no way to go back to previous details view?

    opened by kkga 1
  • Investigate using JSON output from VCS

    Investigate using JSON output from VCS

    Mercurial has had a JSON template output since version 3.1. Using that then generating the graph in Rust could allow for a more robust and flexible log for example. (I know that there are ways of doing so with Git too)

    This could be used to facilitate a selection interface, merging caches, customizing the output, etc..

    enhancement investigate 
    opened by Alphare 1
  • Allow lazy loading of log during scroll

    Allow lazy loading of log during scroll

    This issue is twofold:

    • Like THG and many other VCS UIs, Verco should fill the log pane with as much as needed from the VCS and not just an arbitrary default number (50). Maybe the lc command should remain, as people might find that useful?
    • The log view should be scrollable, with the VCS being queried lazily in the background (maybe some margin already preloaded to reduce waiting time) to update the newly visible entries.

    This ties into #8, as I don't believe this would be a lot easier to achieve in an async context by leveraging the built-in pager.

    enhancement investigate 
    opened by Alphare 1
  • Command to list branches and switch to one of them

    Command to list branches and switch to one of them

    Maybe bs could show an interface similar to commit selected and let you both move a cursor and fuzzy filter branches before selecting one to switch to.

    enhancement 
    opened by vamolessa 1
  • Support for branch merge?

    Support for branch merge?

    Currently, we're making excessive use of mercurial and tortoisehg mainly because the system is pretty good and supporting various merge workflows. Would it be possible to add that to verco too?

    opened by kr428 0
  • No Errors when Git is Unconfigured

    No Errors when Git is Unconfigured

    I pulled a repository to a new PC, and made some changes and tried to push the changes to a remote. Verco failed to push changes, but there were no errors. I tried plain Git, and I forgot to update user.name and user.email in the new environment.

    Would be nice to have an error.

    opened by zQueal 0
  • Add support for the stack command

    Add support for the stack command

    I am note certain what the git equivalent is, so I left it unimplemented (and hidden) for now.

    Related: I think the keyboard shortcuts should be part of the config file, although we would have to warn about conflicts and unreachable chords.

    opened by Alphare 4
  • Add a read-only mode

    Add a read-only mode

    I don't want to accidentally do anything with a shortcut, I think a read-only mode (command line argument/config?) to remove all write actions would be super useful.

    enhancement investigate 
    opened by Alphare 2
Releases(v6.12.0)
Owner
Matheus Lessa Rodrigues
Hi! I'm Matheus. I make gaems @bitcake. Code bender. Audio acolyte. Have u ever went fast
Matheus Lessa Rodrigues
Cherry RGB Keyboard Library

Cherry RGB Keyboard Library Tested with Cherry Keyboard G80-3000N RGB (046a:00dd) Features Done Set LED animation Set single-/multi-color (rainbow) Se

null 10 Dec 20, 2022
Keyboard firmware implemented in Rust

flutterby-rs Keyboard firmware implemented in Rust. It doesn't do anything useful yet! Building for atmega32u4 devices (ergodox-ez, feather32u4) First

Wez Furlong 26 Dec 31, 2022
Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. After all it's just a cat.

Bongo Copy Cat Introduction Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. Afte

Abhijeet Singh 4 Jan 23, 2023
A rust-based mechanical keyboard firmware

rumcake A rust-based mechanical keyboard firmware that aims to be decentralized, featureful, and easy to configure. ⚠ rumcake is still a work in progr

null 15 Oct 6, 2023
A security-focused telemetry agent written in Rust using eBPF.

Vesper A security-focused telemetry agent written in Rust using eBPF. Important: While public, this project is an educational endeavor and is not mean

Brian Celenza 2 Oct 23, 2022
Simple and fast git helper functions

Simple and fast git helper functions

LongYinan 126 Dec 11, 2022
Verbump - A simple utility written in rust to bump and manage git semantic version tags.

Verbump - A simple utility written in rust to bump and manage git semantic version tags.

Sarat Chandra 6 May 6, 2022
Parse hex colors to tui rgb colors

Parse hex colors to tui rgb colors

Uttarayan Mondal 1 Nov 8, 2021
🌌⭐ Git tooling of the future.

❯ Glitter Git tooling of the future. ❯ ?? Features Config files Fast Easy to use Friendly errors ❯ ?? Documentation For proper docs, see here ❯ ✋ What

Milo 229 Dec 22, 2022
Estimate the amount of time spent working on a Git repository

jikyuu (時給) A tool to estimate the amount of time spent working on a Git repository. It is a direct port of git-hours, written in Node.js, because the

null 18 Nov 16, 2022
A small tool to clone git repositories to a standard location, organised by domain name and path.

A small tool to clone git repositories to a standard location, organised by domain name and path. Runs on BSD, Linux, macOS, Windows, and more.

Wesley Moore 68 Dec 19, 2022
Stacked branch management for Git

git-stack Stacked branch management for Git Dual-licensed under MIT or Apache 2.0 Documentation About Installation Getting Started Reference FAQ Compa

Ed Page 1 Jul 18, 2022
Lintje is an opinionated linter for Git.

Lintje Lintje is an opinionated linter for Git. It lints commit messages based on a preconfigured set of rules focussed on promoting communication bet

Tom de Bruijn 26 Dec 18, 2022
Replay git history with some tweaks

Git-replay Overview Git-replay is a simple tool that replays the history of a Git repository but with some tweaks (i.e., it can change the author name

Tak-gun Na 3 Mar 22, 2022
GRM — Git Repository Manager

GRM helps you manage git repositories in a declarative way. Configure your repositories in a TOML file, GRM does the rest.

Hannes Körber 32 Dec 30, 2022
A git hook to manage derivative files automatically.

git-derivative A git hook to manage derivative files automatically. For example if you checked out to a branch with different yarn.lock, git-derivativ

Sung Jeon 3 Oct 30, 2022
A git prepare-commit-msg hook for authoring commit messages with GPT-3.

gptcommit A git prepare-commit-msg hook for authoring commit messages with GPT-3. With this tool, you can easily generate clear, comprehensive and des

Roger Zurawicki 3 Jan 19, 2023
Original Version Management System based on Git

nss (noshishi) Original Version Management System based on Git. Learning git and rust for good developer. Usage Install cargo install nssi how to nss

nopeNoshishi 4 Feb 13, 2023
Easily add emojis to your git commit messages 😎

gimoji A CLI tool that makes it easy to add emojis to your git commit messages. It's very similar to (and is based on) gitmoji-cli but written in Rust

Zeeshan Ali Khan 12 May 29, 2023