diff --git a/scripts/pgit.sh b/scripts/pgit.sh index 4a8152fa..9f82c5e1 100644 --- a/scripts/pgit.sh +++ b/scripts/pgit.sh @@ -65,27 +65,36 @@ clone() fi set -e 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 pushurl=ssh://$login@git.jannet.de/srv/git/$login/proj/$p + marker "pulling $p from user $fromuser" if [ "$fromuser" = "$login" ]; then - 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` + if [ -d $p ]; then + git -C $p pull + 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 - 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 + if [ -d $p ]; then + git -C $p remote | grep -q "^$fromuser$" || { + git -C $p remote add $fromuser + git -C $p remote set-url --fetch $fromuser $pullurl + git -C $p remote set-url --push $fromuser no_push + } + git -C $p pull $fromuser + else + 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 done )}