cg-log: needs update Index: cg-log =================================================================== --- 00b94eea5b99d5dd1d1bbe9c9ca3502d11aec581/cg-log (mode:100755) +++ uncommitted/cg-log (mode:100755) @@ -15,6 +15,9 @@ # # Takes an -f option to list which files was changed. # +# Takes -u"username" to list only commits where author or +# committer contains username. +# # Takes an -r followed with id resolving to a commit to start from # (HEAD by default), or id1:id2 representing an (id1;id2] range # of commits to show. @@ -27,29 +30,39 @@ # at least somewhere it does. Bash is broken. trap exit SIGPIPE -if [ "$1" = "-c" ]; then - shift - # See terminfo(5), "Color Handling" - colheader="$(tput setaf 2)" # Green - colauthor="$(tput setaf 6)" # Cyan - colcommitter="$(tput setaf 5)" # Magenta - colfiles="$(tput setaf 4)" # Blue - colsignoff="$(tput setaf 3)" # Yellow - coldefault="$(tput op)" # Restore default -else - colheader= - colauthor= - colcommitter= - colfiles= - colsignoff= - coldefault= -fi - +colheader= +colauthor= +colcommitter= +colfiles= +colsignoff= +coldefault= list_files= -if [ "$1" = "-f" ]; then - shift - list_files=1 -fi +user= +while [ "$1" ]; do + case "$1" in + -c) + # See terminfo(5), "Color Handling" + colheader="$(tput setaf 2)" # Green + colauthor="$(tput setaf 6)" # Cyan + colcommitter="$(tput setaf 5)" # Magenta + colfiles="$(tput setaf 4)" # Blue + colsignoff="$(tput setaf 3)" # Yellow + coldefault="$(tput op)" # Restore default + shift + ;; + -f) + list_files=1 + shift + ;; + -u*) + user="${1#-u}" + shift + ;; + *) + break + ;; + esac +done list_commit_files() { @@ -109,6 +122,9 @@ parent=$(git-cat-file commit $commit | sed -n '2s/parent //p;2Q') [ "$parent" ] && [ "$(git-diff-tree -r $commit $parent "$@")" ] || continue fi + if [ "$user" ]; then + git-cat-file commit $commit | grep -e '^author ' -e '^committer ' | grep -qi "$user" || continue + fi echo $colheader""commit ${commit%:*} $coldefault; git-cat-file commit $commit | \ while read key rest; do