
Command Line Feedback from RVM and Git - joshuacc
http://collectiveidea.com/blog/archives/2011/08/02/command-line-feedback-from-rvm-and-git/
======
SeoxyS
Here's my PS1:

    
    
        # -----------------------------------------------------------------
        # BASH PROMPT
        # -----------------------------------------------------------------
        
        parse_git_branch() {
            git_branch=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
            if [ $git_branch ]; then
                echo "•$git_branch"
            fi
        }
        
        # sexy prompt
        export PS1='[\[\033[0;35m\]\h\[\033[0;36m\] \w\[\033[00m\]\[\033[33m\]$(parse_git_branch)\[\03    3[00m\]]\$ '
    

And here's what it looks like:

[http://akhun.com/seo/skitch/Screen_Shot_2011-08-02_at_8.47.1...](http://akhun.com/seo/skitch/Screen_Shot_2011-08-02_at_8.47.12_AM-20110802-084738.png)

~~~
Groxx
I'm using something similar, but ran into a problem recently: go into a
detached head mode (`git checkout HEAD^`). ALL your branches (local and
remote) are spat out into your PS1. It's rare enough that I haven't looked
into fixing it, but have any suggestions?

~~~
telemachos
My suggestion is to use something more like this (provided by Git's bash-
completion):

    
    
        branch=$(__git_ps1 "%s")
    

That doesn't have any problem with detached head: <http://cl.ly/8yN8>

~~~
Groxx
ooh, very nice. Prior to this & your other reply, I hadn't seen anything using
the __git functions. Everyone uses sed. Thanks!

------
generalk
The best thing I ever did for my prompt was switch to zsh and start using oh-
my-zsh[1]. Zsh itself has a handful of interesting features, but oh-my-zsh's
built-in prompt theme support means I can cycle through prompts (most of which
also include git or rvm info) with impunity.

[1]: <https://github.com/robbyrussell/oh-my-zsh>

------
telemachos
I'm currently using[1] a PS1 that shows branch name, whether any files in the
repo need to be staged or committed and whether the repo is behind or ahead of
the remote. (Credit to Adam Vandenberg[2] and Brian Carper[3] for whatever
good ideas it contains.)

Here's what it looks like: <http://cl.ly/8y50>

[1] <https://github.com/telemachus/dotfiles/blob/master/bashrc>

[2] <https://github.com/adamv/dotfiles/blob/master/bashrc>

[3] <http://briancarper.net/blog/570/git-info-in-your-zsh-prompt>

------
glenjamin
My major step forward in bash prompt setup earlier this year was realising it
didn't have to be a single line.

I have one info line which tells me path, user, host, git branch etc. And then
the prompt sits nicely on the line below and is always at the same alignment.

<http://i.imgur.com/0F6qt.png>

~~~
glenjamin
Here's the bash incantation for that:

    
    
        command_exists __git_ps1 && git="$c_vcs\$(__git_ps1)"
        PS1="\n$c_path\w$git $c_id\u@$prompt_host$c_reset"
    

$c_* vars are just for colour, the command_exists switch lets me use the same
dotfile on boxes which don't have git installed.

------
drothlis
Git's own bash/zsh completion support comes with utilities for the prompt. For
details see:

[http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/comple...](http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/completion/git-
completion.bash;hb=HEAD)

------
callahad
I've always been fond of Steve Losh's "Extravagant Zsh Prompt":
<http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/>

Screenshots from the article:

[http://stevelosh.com/media/images/blog/2010/02/zsh-
prompt.pn...](http://stevelosh.com/media/images/blog/2010/02/zsh-prompt.png)

[http://stevelosh.com/media/images/blog/2010/02/zsh-prompt-
co...](http://stevelosh.com/media/images/blog/2010/02/zsh-prompt-comments.png)

------
Groxx
* ugh * does anyone actually _like_ that avatar animation, and the slow scrolling that results from it?

I find the comments here _far_ more useful, and they aren't one-line commands
with no explanation of the parts. Thanks for the submission, for the
discussion's sake, but I'm not going back to that blog any time soon.

~~~
bryckbost
Thanks for checking out the article.

Which browser and OS are you using? Scrolling isn't slow in webkit for myself,
but I'd be happy to dig in and make it smoother if it's an issue.

~~~
Groxx
Canary Chrome in OSX. It's been stuttery in _every_ browser I've used, in
multiple OSes; I've been on the site a couple times in the past for other
posts (I think most via HN). To clarify: it doesn't _crawl_ , but it's not
_smooth_.

Looking at the profiler in Chrome, I'm not seeing any unnecessary events while
scrolling between things - maybe it's a transparency somewhere instead?
Removing a handful I could find did speed things up, though I probably missed
a few. Browsers are still lame at those, unfortunately :/

~~~
bryckbost
Good to know. We'll work on getting it smoothed out a bit.

------
SingAlong
My PS1 looks like this:

1.9.2@rails31::project(branch)⚡

Shows the ruby version, rvm gemset, working directory and git branch, followed
by a thunderbolt prompt. This is how I set it
<https://gist.github.com/1120566>

------
jsjohns2
The best part is the blog's un-resizable 425px column of text, containing 150+
character shell commands.

~~~
bryckbost
We've wanted to make that better, just haven't found the time. Scrollbars
seemed good enough for the interim.

------
swah
Unfortunately that makes bash kinda slow for me.

