92 lines
2.3 KiB
Bash
Executable File
92 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $Id$
|
|
# $HeadURL$
|
|
#
|
|
# alias git git_with_commiter
|
|
#
|
|
|
|
function setupAuthorCommiter() {
|
|
# predefined users
|
|
declare -a users=( \
|
|
'Christian Ehrlicher' \
|
|
'Hanna Rathje' \
|
|
'Hannes Bäuerle' \
|
|
'Hans-Jürgen Lampe' \
|
|
'Iuliana Ojog' \
|
|
'Malte Diers' \
|
|
'Mike Wille' \
|
|
'Norbert Thoden' \
|
|
'Patrick Galler' \
|
|
'Patric Karwat' \
|
|
)
|
|
|
|
# the users in the last 1000 commits
|
|
committers=`git log --pretty=format:%aN -n 1000 | sort -u `
|
|
|
|
# join arrays committers and users
|
|
while read -r line; do
|
|
users=("${users[@]}" "$line")
|
|
done <<< "$committers"
|
|
|
|
# make users unique
|
|
IFS=$'\n' committers=($(sort -u <<<"${users[*]}"))
|
|
|
|
# the last committer
|
|
last_committer=`git log --pretty=format:%aN -n 1`
|
|
|
|
# show possible users
|
|
echo -e "\e[31mAvailable committers:\e[0m"
|
|
defaultId=0
|
|
for ((i=0; i < ${#committers[@]};i++)) {
|
|
idx=$((i + 1))
|
|
if [ "${committers[$i]}" = "$last_committer" ] ; then
|
|
defaultId=$idx
|
|
echo -e "\e[32m $idx - ${committers[$i]}\e[0m (default)"
|
|
else
|
|
echo " $idx - ${committers[$i]}"
|
|
fi
|
|
}
|
|
echo " 0 - new committer"
|
|
echo "enter a number for the committer to use or nothing for the last committer"
|
|
|
|
# now ask for the committer to use
|
|
while [ true ]; do
|
|
echo -n "Please enter number [default=${defaultId}]: "
|
|
read line < /dev/stdin
|
|
# empty -> default
|
|
if [ -z $line ] ; then
|
|
line=$defaultId
|
|
fi
|
|
# its a digit and between the valid range
|
|
if [ -z "${line##[0-9]*}" ] && [ "$line" -ge 0 ] && [ "$line" -le "${#committers[@]}" ]; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ $line -eq 0 ] ; then
|
|
echo -n "Please enter full committer name:"
|
|
read git_name < /dev/stdin
|
|
else
|
|
git_name=${committers[$((line - 1))]}
|
|
fi
|
|
|
|
git_email="${git_name// /.}@lifemaps.com"
|
|
echo "Using '$git_name ($git_email)' as author and committer"
|
|
|
|
export GIT_AUTHOR_NAME="$git_name"
|
|
export GIT_AUTHOR_EMAIL="$git_email"
|
|
export GIT_COMMITTER_NAME="$git_name"
|
|
export GIT_COMMITTER_EMAIL="$git_email"
|
|
}
|
|
|
|
if [ $# -ge 1 ] ; then
|
|
gitopt="$1"
|
|
case $gitopt in
|
|
commit) setupAuthorCommiter ;;
|
|
*);;
|
|
esac
|
|
fi
|
|
|
|
exec git "$@"
|