Vamos supor que você tenha um arquivo de versão. Como tal, pode ser qualquer arquivo em seu repositório git. Você só precisa chamar esta função abaixo com o nome da pasta e o arquivo. Ao fornecer um nome de pasta, ele mostrará os logs apenas relacionados a essa pasta. O arquivo é usado como referência. Basicamente, verifica quando o arquivo foi alterado pela última vez e obtém seu ID de revisão para obter os logs desde aquele ID de revisão.
function whatchanged() { #what chnaged will give us the log of the specified folder since the given file was last changed.$1=folder $2=file
for i in `git rev-list --all $2`
do
git log $1 "$i.." 2>/dev/null
# For one line messages.
# git log "$i.." --format="%ad %an %s" 2>/dev/null
RET=$?
if [ $RET -ne 0 ]
then
echo "Nothing"
fi
break;
done
}
Desta forma, toda vez que você mudar de versão o arquivo mudará e assim utilizando a função abaixo você poderá obter os logs desde a última mudança de versão.
Alguns exemplos:
whatchanged "" version.txt
A chamada acima me dará o log do git em todo o repo desde a última vez que o arquivo version.txt foi alterado.
whatchanged "client/" version.txt
A chamada acima me dará o log do git apenas o cliente / pasta desde a última vez que o arquivo version.txt foi alterado.
Por favor, comente se você quiser que eu explique algumas partes com mais detalhes. Também me diga se você tiver quaisquer outros problemas ou idéias com o git.