CREDITS-GENon commit git-gui: Display all authors of git-gui. (871f4c9)
   1#!/bin/sh
   2
   3CF=CREDITS-FILE
   4tip=
   5
   6tree_search ()
   7{
   8        head=$1
   9        tree=$2
  10        for p in $(git rev-list --parents --max-count=1 $head 2>/dev/null)
  11        do
  12                test $tree = $(git rev-parse $p^{tree} 2>/dev/null) &&
  13                vn=$(git describe --abbrev=4 $p 2>/dev/null) &&
  14                case "$vn" in
  15                gitgui-[0-9]*) echo $p; break;;
  16                esac
  17        done
  18}
  19
  20generate_credits ()
  21{
  22        tip=$1 &&
  23        rm -f $CF &&
  24        git shortlog -n -s $tip | sed 's/: .*$//' >$CF || exit
  25}
  26
  27# Always use the tarball credits file if found, just
  28# in case we are somehow contained in a larger git
  29# repository that doesn't actually track our state.
  30# (At least one package manager is doing this.)
  31#
  32# We may be a subproject, so try looking for the merge
  33# commit that supplied this directory content if we are
  34# not at the toplevel.  We probably will always be the
  35# second parent in the commit, but we shouldn't rely on
  36# that fact.
  37#
  38
  39if test -f credits
  40then
  41        rm -f $CF &&
  42        cp credits $CF || exit
  43elif prefix="$(git rev-parse --show-prefix 2>/dev/null)" &&
  44   test -n "$prefix" &&
  45   head=$(git rev-list --max-count=1 HEAD -- . 2>/dev/null) &&
  46   tree=$(git rev-parse --verify "HEAD:$prefix" 2>/dev/null) &&
  47   tip=$(tree_search $head $tree) &&
  48   test -n "$tip"
  49then
  50        generate_credits $tip || exit
  51elif tip="$(git rev-parse --verify HEAD 2>/dev/null)" &&
  52   test -n "$tip"
  53then
  54        generate_credits $tip || exit
  55else
  56        echo "error: Cannot locate authorship information." >&2
  57        exit 1
  58fi