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.
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.
Initialiser git annex si le dépôt contient des fichiers annexés.
Récupérer aussi ces fichiers avec 'git annex get'
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
develop
@ -290,7 +292,24 @@ elif [ "$CMD" == clone ]; then
elif [ "$CMD" == crone ]; then
repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
splitfsep "$repourl" : userhost path
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
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"
if [ -z "$destdir" ]; then
@ -303,21 +322,31 @@ elif [ "$CMD" == crone ]; then
ac_set_tmpdir tmpdestdir
fi
splituserhost "$userhost" user host
[ -n "$user" ] || user=git
[ -n "$host" ] || die "Vous devez spécifier l'hôte"
userhost="$user@$host"
[ -n "$path" ] || die "Vous devez spécifier le chemin du dépôt git"
git_annex_use_ssh_wrapper
ssh "$userhost" create "$path" || die
if [ -n "$tmpdestdir" ]; then
setxx destname=abspath "$destdir" // basename
git clone "$userhost:$path" "$tmpdestdir/$destname" || die
mv "$tmpdestdir/$destname/.git" "$destdir" || die
ac_clean "$tmpdestdir"
if [ "$mode" == http ]; then
setx result=curl -fs "$hostuser/create?$path" || die
echo "$result"
[[ "$result" == FATAL:* ]] && die
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
ssh "$userhost" create "$path" || die
if [ -n "$tmpdestdir" ]; then
setxx destname=abspath "$destdir" // basename
git clone "$userhost:$path" "$tmpdestdir/$destname" || die
mv "$tmpdestdir/$destname/.git" "$destdir" || die
ac_clean "$tmpdestdir"
else
git clone "$userhost:$path" "$destdir" || die
fi
else
git clone "$userhost:$path" "$destdir" || die
die "bug: mode non prévu"
fi
git_annex_initial "$destdir" || die