From f9f8a3ac08f0255e10af6d3a91f5db63c3bb47fc Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Tue, 20 Sep 2011 23:35:13 +0200 Subject: [PATCH 1/1] Initial commit --- gl-addperm | 1 + gl-getperms | 1 + gl-perm | 41 +++++++++++++++++++++++++++++++++++++++++ gl-rmperm | 1 + gl-setperms | 1 + 5 files changed, 45 insertions(+) create mode 120000 gl-addperm create mode 120000 gl-getperms create mode 100755 gl-perm create mode 120000 gl-rmperm create mode 120000 gl-setperms diff --git a/gl-addperm b/gl-addperm new file mode 120000 index 0000000..d92ca59 --- /dev/null +++ b/gl-addperm @@ -0,0 +1 @@ +gl-getperms \ No newline at end of file diff --git a/gl-getperms b/gl-getperms new file mode 120000 index 0000000..a73817c --- /dev/null +++ b/gl-getperms @@ -0,0 +1 @@ +gl-perm \ No newline at end of file diff --git a/gl-perm b/gl-perm new file mode 100755 index 0000000..4c90add --- /dev/null +++ b/gl-perm @@ -0,0 +1,41 @@ +#!/bin/sh + +# Gitolite permission manipulation helper script +# Copyright 2011, Michal Sojka +# License: GNU GPLv2+ + +curr_branch=$(git symbolic-ref -q HEAD) +curr_branch_short="${curr_branch#refs/heads/}" +remote=$(git config --get branch.$curr_branch_short.remote) +url=$(git config --get remote.$remote.url) || url=$remote + +url_sans_ssh=${url#ssh://} +if test x$url_sans_ssh != x$url; then + userhost=${url_sans_ssh%%/*} + repo=${url_sans_ssh#*/} +else + # scp-like syntax + userhost=${url%%:*} + repo=${url#*:} +fi + +bn=$(basename $0) +if test x$bn = xgl-perm; then + cmd=$1; shift +else + cmd=$bn +fi + +case $cmd in + gl-getperms|get) + ssh $userhost getperms $repo;; + gl-setperms|set) + ssh $userhost setperms $repo;; + gl-addperm|add) + perms=$(ssh $userhost getperms $repo) + ( test "$perms" && echo "$perms"; echo $* ) | ssh $userhost setperms $repo;; + gl-rmperm|rm) + user=$1 + perms=$(ssh $userhost getperms $repo) # setperms does not work when executed in the same pipe with getperms + echo "$perms" | sed -e "s/[[:space:]]*\\b$user\\b//g" -e "/^[[:alnum:]]\+[[:space:]]*$/d" | ssh $userhost setperms $repo;; +esac diff --git a/gl-rmperm b/gl-rmperm new file mode 120000 index 0000000..d92ca59 --- /dev/null +++ b/gl-rmperm @@ -0,0 +1 @@ +gl-getperms \ No newline at end of file diff --git a/gl-setperms b/gl-setperms new file mode 120000 index 0000000..d92ca59 --- /dev/null +++ b/gl-setperms @@ -0,0 +1 @@ +gl-getperms \ No newline at end of file -- 2.39.2