#! /bin/sh # See https://stackoverflow.com/a/69193032/7976758 set -e share=group while getopts agh opt; do case $opt in a) share=all ;; g) share=group ;; h) ;; esac done shift `expr $OPTIND - 1` if [ $# -gt 1 -o "$1" = -h ]; then echo "Usage: $0 [-a|-g] [group]" if [ $# -gt 1 ]; then exit 1 fi fi git config core.sharedRepository $share # Fix group if [ -n "$1" ]; then chgrp -R $1 . # Use desired group name # Make FS to inherit group on creating subdirectories or files find . -type d -exec chmod g+s '{}' \+ fi # Fix file/directory permissions throughout the entire tree if [ $share = all ]; then chmod -R ug=rwX,o=rX . # Please note **uppercase** X # Git object DB files are read-only find .git/objects -type f -exec chmod a=r '{}' \+ else # share = group chmod -R ug=rwX,o= . find .git/objects -type f -exec chmod ug=r '{}' \+ fi