pgit.sh clone: Support --create-remote-user-repos

Add support for --create-user-repos to pgit.sh. It controls whether
or not personal remote repositories on janware.com are created when
cloning from another user.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2025-11-18 15:37:03 +01:00
commit aed14fd480

View file

@ -110,10 +110,29 @@ clone()
local login=$JANWARE_USER
local projects="$PGIT_CLONE_PROJECTS"
local ignore="$PGIT_IGNORE"
local create_remote_user_repos=false
[ "$login" ] || login=`whoami`
[ "$fromuser" ] || fromuser=`whoami`
[ "$fromref" ] || fromref=master
local git_srv_admin="$SSH $login@git.janware.com /opt/jw-build/bin/git-srv-admin.sh"
local opts
opts=$(getopt -o C --long create-remote-user-repo -n clone -- "$@") || fatal "Failed to parse options $@"
eval set -- "$opts"
while [ "$1" != -- ]; do
case "$1" in
-c | --create-remote-user-repos)
create_remote_user_repos=true
;;
*)
fatal "Unknown option $1"
;;
esac
shift
done
if [ -z "$projects" ]; then
projects=`$git_srv_admin -u $fromuser -j list-personal-projects`
[ "$?" != 0 ] && exit 1
@ -156,12 +175,13 @@ clone()
run_git clone ssh://$login@git.janware.com/srv/git/$fromuser/proj/$p
run_git -C $p remote rename origin $remotename || fatal failed to rename remote in $p
run_git -C $p remote set-url --push $remotename no_push
if [ $create_remote_user_repos = true ]; then
$git_srv_admin -u $login -j create-personal-project $p
run_git -C $p remote add origin $pushurl
run_git -C $p push --recurse-submodules=on-demand origin master
$git_srv_admin -u $login -j update-descriptions $p
run_git -C $p branch --set-upstream-to origin/master master
# set +x
fi
fi
fi
run_git -C $p submodule update --init --recursive || fatal git submodule update failed in $p