pcrone: support des dépôt en http

This commit is contained in:
Jephté Clain 2017-02-12 11:17:17 +04:00
parent 67f29ddea4
commit 286d1fe959
1 changed files with 44 additions and 15 deletions

View File

@ -57,11 +57,13 @@ COMMANDS
-R Afficher les modifications effectuées depuis la dernière release. -R Afficher les modifications effectuées depuis la dernière release.
clone git@host:path/to/repo [destdir] clone git@host:path/to/repo [destdir]
clone http://host/gituser/path/to/repo [destdir]
Cloner un dépôt distant. Basculer sur la branche develop si elle existe. Cloner un dépôt distant. Basculer sur la branche develop si elle existe.
Initialiser git annex si le dépôt contient des fichiers annexés. Initialiser git annex si le dépôt contient des fichiers annexés.
Récupérer aussi ces fichiers avec 'git annex get' Récupérer aussi ces fichiers avec 'git annex get'
crone git@host:path/to/repo [destdir] crone git@host:path/to/repo [destdir]
crone http://host/gituser/path/to/repo [destdir]
Créer un dépôt distant sur gitolite, puis le cloner Créer un dépôt distant sur gitolite, puis le cloner
develop develop
@ -290,7 +292,24 @@ elif [ "$CMD" == clone ]; then
elif [ "$CMD" == crone ]; then elif [ "$CMD" == crone ]; then
repourl="${1%.git}" repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git" [ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
if [ "${repourl#http://}" != "$repourl" -o "${repourl#https://}" != "$repourl" ]; then
# accès par http
mode=http
splitfsep "$repourl" :// scheme hostuserpath
splitfsep "$hostuserpath" / host userpath
splitfsep "$userpath" / user path
[ -n "$host" -a -n "$user" ] || die "Vous devez spécifier l'hôte e.g http://host/git/repo"
hostuser="$scheme://$host/$user"
else
# accès par ssh
mode=ssh
splitfsep "$repourl" : userhost path splitfsep "$repourl" : userhost path
splituserhost "$userhost" user host
[ -n "$user" ] || user=git
[ -n "$host" ] || die "Vous devez spécifier l'hôte"
userhost="$user@$host"
fi
[ -n "$path" ] || die "Vous devez spécifier le chemin du dépôt git"
destdir="$2" destdir="$2"
if [ -z "$destdir" ]; then if [ -z "$destdir" ]; then
@ -303,12 +322,19 @@ elif [ "$CMD" == crone ]; then
ac_set_tmpdir tmpdestdir ac_set_tmpdir tmpdestdir
fi fi
splituserhost "$userhost" user host if [ "$mode" == http ]; then
[ -n "$user" ] || user=git setx result=curl -fs "$hostuser/create?$path" || die
[ -n "$host" ] || die "Vous devez spécifier l'hôte" echo "$result"
userhost="$user@$host" [[ "$result" == FATAL:* ]] && die
[ -n "$path" ] || die "Vous devez spécifier le chemin du dépôt git" if [ -n "$tmpdestdir" ]; then
setxx destname=abspath "$destdir" // basename
git clone "$hostuser/$path" "$tmpdestdir/$destname" || die
mv "$tmpdestdir/$destname/.git" "$destdir" || die
ac_clean "$tmpdestdir"
else
git clone "$hostuser/$path" "$destdir" || die
fi
elif [ "$mode" == ssh ]; then
git_annex_use_ssh_wrapper git_annex_use_ssh_wrapper
ssh "$userhost" create "$path" || die ssh "$userhost" create "$path" || die
if [ -n "$tmpdestdir" ]; then if [ -n "$tmpdestdir" ]; then
@ -319,6 +345,9 @@ elif [ "$CMD" == crone ]; then
else else
git clone "$userhost:$path" "$destdir" || die git clone "$userhost:$path" "$destdir" || die
fi fi
else
die "bug: mode non prévu"
fi
git_annex_initial "$destdir" || die git_annex_initial "$destdir" || die
elif [ "$CMD" == xconfig-export ]; then elif [ "$CMD" == xconfig-export ]; then