• Stars
    star
    1,661
  • Rank 28,132 (Top 0.6 %)
  • Language
    Haskell
  • License
    MIT License
  • Created over 14 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Informative git prompt for zsh

Informative git prompt for zsh

Build Status

A zsh prompt that displays information about the current git repository. In particular the branch name, difference with remote branch, number of files staged, changed, etc.

(an original idea from this blog post).

Examples

The prompt may look like the following:

  • (master↑3|✚1): on branch master, ahead of remote by 3 commits, 1 file changed but not staged
  • (status|●2): on branch status, 2 files staged
  • (master|✚7…): on branch master, 7 files changed, some files untracked
  • (master|✖2✚3): on branch master, 2 conflicts, 3 files changed
  • (experimental↓2↑3|✔): on branch experimental; your branch has diverged by 3 commits, remote by 2 commits; the repository is otherwise clean
  • (:70c2952|✔): not on any branch; parent commit has hash 70c2952; the repository is otherwise clean

Here is how it could look like when you are ahead by 4 commits, behind by 5 commits, and have 1 staged files, 1 changed but unstaged file, and some untracked files, on branch dev:

Prompt Structure

By default, the general appearance of the prompt is:

(<branch><branch tracking>|<local status>)

The symbols are as follows:

Local Status Symbols

Symbol Meaning
repository clean
●n there are n staged files
n there are n unmerged files
✚n there are n changed but unstaged files
there are some untracked files

Branch Tracking Symbols

Symbol Meaning
↑n ahead of remote by n commits
↓n behind remote by n commits
↓m↑n branches diverged, other by m commits, yours by n commits

Branch Symbol

When the branch name starts with a colon :, it means it’s actually a hash, not a branch (although it should be pretty clear, unless you name your branches like hashes :-)

Install

  1. Clone this repository somewhere on your hard drive.

  2. Source the file zshrc.sh from your ~/.zshrc config file, and configure your prompt. So, somewhere in ~/.zshrc, you should have:

    source path/to/zshrc.sh
    # an example prompt
    PROMPT='%B%m%~%b$(git_super_status) %# '
  3. Go in a git repository and test it!

Haskell (optional)

There is now a Haskell implementation as well, which can be four to six times faster than the Python one. The reason is not that Haskell is faster in itself (although it is), but that this implementation calls git only once. To install, do the following:

  1. Make sure Haskell's stack is installed on your system
  2. cd to this folder
  3. Run stack setup to install the Haskell compiler, if it is not already there
  4. Run stack build && stack install (don't worry, the executable is only “installed” in this folder, not on your system)
  5. Define the variable GIT_PROMPT_EXECUTABLE="haskell" somewhere in your .zshrc

Customisation

  • You may redefine the function git_super_status (after the source statement) to adapt it to your needs (to change the order in which the information is displayed).
  • Define the variable ZSH_THEME_GIT_PROMPT_CACHE in order to enable caching.
  • You may also change a number of variables (which name start with ZSH_THEME_GIT_PROMPT_) to change the appearance of the prompt. Take a look in the file zshrc.sh to see how the function git_super_status is defined, and what variables are available.

Enjoy!

More Repositories

1

python-latex-highlighting

LaTeX style for Python highlighting
TeX
418
star
2

dispatch

Simple dispatch package for python, extracted from django.dispatch.
Python
37
star
3

spacemacs-coq

A very simple coq layer for spacemacs
Emacs Lisp
36
star
4

pydflatex

Python wrapper around pdflatex
Python
26
star
5

odelab

Numerical simulation of ODEs in python.
Python
20
star
6

pygfplots

Python interface to pgfplots
Python
15
star
7

Unixode

LaTeX Style file to use for typesetting maths in unicode with XeLaTeX
TeX
14
star
8

bsplinelab

Implementation of B-Splines in Python for various geometries
Python
13
star
9

downhill-simplex

Implementation of the downhill simplex method (aka Nelder–Mead method)
Python
12
star
10

GeometricAlgebra

Work based on http://www-sop.inria.fr/marelle/GeometricAlgebra/
Coq
10
star
11

python-progressbar

Clone of python-progressbar
Python
10
star
12

diffeopt

Optimisation on Diffeomorphisms
Python
8
star
13

python-sundials

Clone of the python-sundials project
Python
5
star
14

SpecTraVVave

Python project to compute bifurcation diagrams of travelling waves
Python
4
star
15

polynomial

Simple Polynomial class in Python
Python
4
star
16

allergy

Style file to write drafts (and final documents) in LaTeX
TeX
3
star
17

odlpet

Bindings for positron emission tomography
Python
3
star
18

homogint

Integrators on homogeneous spaces
Jupyter Notebook
2
star
19

vimrc

my old vim configuration files
Vim Script
2
star
20

hothello

Othello in Haskell
Haskell
2
star
21

spinsys

Symplectic midpoint solver for spin systems on a product of spheres.
Python
2
star
22

femshape

Library for computing shape invariants of planar curves using finite element method
Jupyter Notebook
2
star
23

sphinx-scons

Clone
Python
1
star
24

mathpython

Python for Mathematics
1
star