Git-repo-based Shell History
I typically have many projects that I'm working on and they are each in their own Git repo. Looking at the shell history for a project is one way to get a quick reminder of what I last was doing. I wanted a way to isolate the history within a given Git repo. In other words, if I execute a command in any directory under a Git repo, I want that command to belong to a history file for that Git repo.
This script for more general directory-based history can be modified as follows:
### Git-repo-directory-based history
function custom_cd()
{
builtin cd "$@" # do actual cd
# If this directory is in a Git repo, use the root directory for history file.
HISTORY_PATH=$(git rev-parse --show-toplevel 2> /dev/null) && export HISTFILE=$HISTORY_PATH/.bash_history || export HISTFILE="$HOME/.bash_history"
}
alias cd="custom_cd"
export HISTFILE="$HOME/.bash_history"
export HISTTIMEFORMAT="%h/%d - %H:%M:%S "
export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=1000000
export HISTFILESIZE=1000000
shopt -s histappend ## append, no clearouts
shopt -s histverify ## edit a recalled history line before executing
shopt -s histreedit ## reedit a history substitution line if it failed
## Save the history after each command finishes
## (and keep any existing PROMPT_COMMAND settings)
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Written by Parviz Palangpour
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#