diff --git a/uproject b/uproject index 61f5a53..bb046a8 100755 --- a/uproject +++ b/uproject @@ -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