From 92ba675e4bffaca19af1d354783c33b0d9dca069 Mon Sep 17 00:00:00 2001 From: Wolfgang Müller Date: Thu, 3 Mar 2022 15:15:19 +0100 Subject: Rename git-init-shared(1) to git-init-acl(1) We have always felt that the name of this program was too close to the invocation of 'git init --shared' which does something similar. Make it clear in the name that we're working with POSIX ACLs instead of normal permission sets as 'git init --shared' does. --- git-init-acl | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 git-init-acl (limited to 'git-init-acl') diff --git a/git-init-acl b/git-init-acl new file mode 100755 index 0000000..50950b5 --- /dev/null +++ b/git-init-acl @@ -0,0 +1,36 @@ +#!/bin/sh + +set -e + +usage() { + printf "usage: git init-acl directory [user...]\n" >&2 + exit 1 +} + +acl_mask() { + # Set the ACL mask for the directory. The default mask will be inherited by + # new directories and files (where it will correctly be set to rw-) + setfacl -m "d:m:rwx,m:rwx" "$1" +} + +add_to_acl() { + # Recursively apply all necessary ACL settings as we may be reinitializing + # the git repository with additional authorised users. + # Take care *not* to recalculate the ACL mask (-n), since rwX translates to + # a mask of rwx even on non-directory files. + setfacl -Rnm "d:u:$2:rwX,u:$2:rwX" "$1" +} + +test $# -ge 1 || usage +dir=$1 +shift + +mkdir -p "$dir" + +acl_mask "$dir" + +for user in "$(id -un)" "$@"; do + add_to_acl "$dir" "$user" +done + +exec git init --bare "$dir" -- cgit v1.2.3-2-gb3c3