All Projects β†’ mroth β†’ Scmpuff

mroth / Scmpuff

Licence: mit
πŸ”’ Numeric file shortcuts for common git commands

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to Scmpuff

Crudini
A utility for manipulating ini files
Stars: ✭ 292 (-2.34%)
Mutual labels:  cli
Aws Gate
Better AWS SSM Session manager CLI client
Stars: ✭ 294 (-1.67%)
Mutual labels:  cli
Chepy
Chepy is a python lib/cli equivalent of the awesome CyberChef tool.
Stars: ✭ 295 (-1.34%)
Mutual labels:  cli
Cli
✨ A powerful CLI for the Create Go App project. Create a new production-ready project with backend, frontend and deploy automation by running one CLI command!
Stars: ✭ 292 (-2.34%)
Mutual labels:  cli
Sentences
A multilingual command line sentence tokenizer in Golang
Stars: ✭ 293 (-2.01%)
Mutual labels:  cli
Argparse
Argparse for golang. Just because `flag` sucks
Stars: ✭ 294 (-1.67%)
Mutual labels:  cli
Mutateful
Add-on for Ableton Live that enables live coding functionality fully integrated into Live's session view.
Stars: ✭ 290 (-3.01%)
Mutual labels:  cli
Gkill
Interactice process killer for Linux and macOS
Stars: ✭ 297 (-0.67%)
Mutual labels:  cli
Lev
The complete REPL & CLI for managing LevelDB instances.
Stars: ✭ 295 (-1.34%)
Mutual labels:  cli
Ghb0t
A GitHub Bot to automatically delete your fork's branches after a pull request has been merged.
Stars: ✭ 295 (-1.34%)
Mutual labels:  cli
Sync
syncs your local folder with remote folder using scp
Stars: ✭ 293 (-2.01%)
Mutual labels:  cli
Travis Watch
Stream live travis test results of the current commit to your terminal!
Stars: ✭ 294 (-1.67%)
Mutual labels:  cli
Mech
Easy command line virtual machines for VMWare
Stars: ✭ 294 (-1.67%)
Mutual labels:  cli
Git Delete Merged Branches
Command-line tool to delete merged Git branches
Stars: ✭ 293 (-2.01%)
Mutual labels:  cli
Circleci Cli
Use CircleCI from the command line
Stars: ✭ 297 (-0.67%)
Mutual labels:  cli
Docopt.php
Command line argument parser
Stars: ✭ 291 (-2.68%)
Mutual labels:  cli
Smsbomb
ηŸ­δΏ‘πŸ’£η‚ΈπŸ”
Stars: ✭ 294 (-1.67%)
Mutual labels:  cli
Torrentflix
Nodejs cli app to search torrent sites and stream using peerflix
Stars: ✭ 298 (-0.33%)
Mutual labels:  cli
Define
A command-line dictionary (thesaurus) app, with access to multiple sources, written in Go.
Stars: ✭ 298 (-0.33%)
Mutual labels:  cli
Trubka
A CLI tool for Kafka
Stars: ✭ 296 (-1%)
Mutual labels:  cli

scmpuff πŸ’¨

Makes working with git from the command line quicker by substituting numeric shortcuts for files.

Build Status Go Report Card Chat on Gitter

scmpuff is a minimalistic reinterpretation of the core functionality of SCM Breeze, without many of the extras.

It is focused on simplicity, speed, robustness, and cross-platform support. The majority of the functionality is contained within a compiled binary, and the shell integration is under 100 lines of shell script.

scmpuff currently functions in bash and zsh in any *nix-like operating system. It's written with cross-platform support in mind, so hopefully we'll have it functioning on Windows soon as well.

scmpuff is fully compatible with the most-excellent Hub.

Installation

Download the binary for your platform, and copy it to /usr/local/bin or somewhere else in your default $PATH.

Alternately, if you use homebrew, you can just: brew install scmpuff. 🍺

Setup

Currently scmpuff supports bash and zsh for all functionality.

To initialize shell functions, add the following to your ~/.bash_profile or ~/.zshrc file:

eval "$(scmpuff init -s)"

This will define the scmpuff shell functions as well as some handy shortcuts.

Usage

Once things are loaded, the most important function you will want to know about is scmpuff_status, which is aliased to gs for short.

This is a replacement for git status that is pretty and shows you numbers next to each filename, for example:

$ gs
# On branch: master  |  +1  |  [*] => $e*
#
➀ Changes not staged for commit
#
#       modified:  [1] main.go
#
➀ Untracked files
#
#      untracked:  [2] HELLO.txt
#      untracked:  [3] features/shell_aliases.feature
#      untracked:  [4] mkramdisk.sh
#

You can now use these numbers in place of filenames when calling normal git commands, e.g. git add 2 3 or git checkout 1.

You can also use numeric ranges, e.g. git reset 2-4. Ranges can even be mixed with normal numeric operands.

Behind the scenes, scmpuff is assigning filenames to sequential environment variables, e.g. $e1, $e2, so you can refer to those with other commands too if needed.

By default, scmpuff will also define a few handy shortcuts to save your fingers, e.g. ga, gd, gco. Check your aliases to see what they are.

FAQ

How do you pronounce it?

πŸ’ I like to say "scum puff." But I'm weird.

How does it compare with SCM Breeze?

The short version: it does less, but is faster and should be significantly more stable and reliable, especially across different platforms.

The long, detailed version: https://github.com/mroth/scmpuff/wiki/scmpuff-vs-SCM-Breeze

Can I disable or change the default git shortcut aliases?

You can disable them via passing --aliases=false to the scmpuff init call in your shell initialization. Then, if you wish to remap them, simple modify your default aliases wherever you normally do, but add aliases mapped to the scmpuff shell functions, e.g. alias gs='scmpuff_status'.

Development

While the build process itself does not require it, development uses Ruby for integration testing because of the excellent Cucumber/Aruba package for testing CLI tools.

Thus, to bootstrap, you will need to have Ruby and bundler installed on your system. Do bundle install to get the dev environment going.

Since we already have Ruby then for tests, we use a Rakefile instead of Makefile since it offers some niceties. Do rake -T to see available tasks.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].