#!/bin/sh
#
######################################################################
#
# gitroot
#
# Translate $1 or $PWD into the top-level workspace directory
# containing .git
#
######################################################################

if test $# -gt 0; then
  dir=$(realpath $1)
else
  dir=$(pwd)
fi
while test $dir != /; do
  if test -d $dir/.git; then
    echo $dir
    break
  fi
  if test -f $dir/.git; then
    ndir=$(sed -n -e 's/^gitdir: \(.*\)/\1/p' $dir/.git)
    if test "$ndir"; then
      ndir=$(cd $dir && cd $ndir && pwd)
      ndir=${ndir%/.git/*}
      if test -d "$ndir"; then
        dir=$ndir
        continue
      fi
    fi
  fi
  dir=${dir%/*}
done
if test "$dir" = "/"; then
  echo "*** cannot find git root" 1>&2
  exit 1
fi
