Normalmente, tenho muitos projetos nos quais estou trabalhando e cada um deles está em seu próprio repositório Git. Olhar para o histórico do shell de um projeto é uma maneira de obter um lembrete rápido do que eu estava fazendo pela última vez. Eu queria uma maneira de isolar o histórico em um determinado repositório Git. Em outras palavras, se eu executar um comando em qualquer diretório em um repositório Git, quero que esse comando pertença a um arquivo de histórico desse repositório Git.
Este script para um histórico mais geral baseado em diretório pode ser modificado da seguinte maneira:
### 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"