From: Nicolas Boisselier Date: Wed, 3 May 2023 21:51:01 +0000 (+0200) Subject: gitf_publish X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=c54c958ef8d0ce61419ecefff745c4510f273e91;p=nb.git gitf_publish --- diff --git a/etc/profile.d/git.sh b/etc/profile.d/git.sh index f00b5cf3..d2d62e1e 100644 --- a/etc/profile.d/git.sh +++ b/etc/profile.d/git.sh @@ -8,10 +8,19 @@ alias git_grep="git grep --color=auto" alias git_ls_tree="git ls-tree --full-tree -r HEAD" alias git_ls_files="git ls-files --full-name" -git_commit_push_merge_file_user() { +gitf() { + case "$@" in + --help|-h) + cat <&2 @@ -19,24 +28,52 @@ git_commit_push_merge_file_user() { fi declare owner=$(ls -dl "$file" | awk '{print $3}') - [ -n "$owner" ] || return + [ -z "$owner" ] && echo "Can't find owner for file '$file'" 1>&2 && return 1 - declare cmd="" - if [ "$owner" != "$(id --user --name)" ]; then - true + [ "$#" == "0" ] && echo "Args CMD missing" 2>&1 && return 1 + + declare cmd="cd "$(dirname "$file")" && $*" + cmd="whoami && pwd && $cmd" + if [ "$owner" != "$(id -un)" ]; then + su - "$owner" -c "$cmd" + else + eval "$cmd" fi +} - declare branch="$( cd "$(dirname "$file")" && git branch | awk '/^\*/{print $2}')" - cat<