pgit.sh: Add support for pulling other user's projects as branch into existing

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2016-11-26 11:49:31 +00:00
commit 521c7752bb

View file

@ -65,27 +65,36 @@ clone()
fi fi
set -e set -e
for p in $projects; do for p in $projects; do
[ -d $p ] && {
marker "skipping existing $p"
continue
}
marker "cloning $p"
local pullurl=ssh://$login@git.jannet.de/srv/git/$fromuser/proj/$p local pullurl=ssh://$login@git.jannet.de/srv/git/$fromuser/proj/$p
local pushurl=ssh://$login@git.jannet.de/srv/git/$login/proj/$p local pushurl=ssh://$login@git.jannet.de/srv/git/$login/proj/$p
marker "pulling $p from user $fromuser"
if [ "$fromuser" = "$login" ]; then if [ "$fromuser" = "$login" ]; then
git clone ssh://$login@git.jannet.de/srv/git/$fromuser/proj/$p if [ -d $p ]; then
git -C $p submodule init || fatal git submodule init failed in `pwd` git -C $p pull
git -C $p submodule update || fatal git submodule update failed in `pwd` else
git clone ssh://$login@git.jannet.de/srv/git/$fromuser/proj/$p
git -C $p submodule init || fatal git submodule init failed in `pwd`
git -C $p submodule update || fatal git submodule update failed in `pwd`
fi
else else
set -x if [ -d $p ]; then
$git_srv_admin -u $login -j create-personal-project $p git -C $p remote | grep -q "^$fromuser$" || {
git clone ssh://$login@git.jannet.de/srv/git/$fromuser/proj/$p git -C $p remote add $fromuser
git -C $p remote rename origin $fromuser || fatal failed to rename remote in `pwd` git -C $p remote set-url --fetch $fromuser $pullurl
git -C $p remote set-url --push $fromuser no_push git -C $p remote set-url --push $fromuser no_push
git -C $p remote add origin $pushurl }
git -C $p submodule init || fatal git submodule init failed in `pwd` git -C $p pull $fromuser
git -C $p submodule update || fatal git submodule update failed in `pwd` else
set +x set -x
$git_srv_admin -u $login -j create-personal-project $p
git clone ssh://$login@git.jannet.de/srv/git/$fromuser/proj/$p
git -C $p remote rename origin $fromuser || fatal failed to rename remote in `pwd`
git -C $p remote set-url --push $fromuser no_push
git -C $p remote add origin $pushurl
git -C $p submodule init || fatal git submodule init failed in `pwd`
git -C $p submodule update || fatal git submodule update failed in `pwd`
set +x
fi
fi fi
done done
)} )}