ajout de git_annex_initial()

ajout de pclone, pxinitial
This commit is contained in:
Jephté Clain 2014-11-19 15:24:10 +04:00
parent abd0d119ac
commit c3662082e4
3 changed files with 73 additions and 6 deletions

View File

@ -1 +1 @@
007003000
007004000

View File

@ -530,6 +530,45 @@ function git_ensure_cleancheckout() {
check_cleancheckout || die "Vous avez des modifications locales. Enregistrez ces modifications avant de continuer"
}
# fonctions pour git annex
function git_annex_initial() {
# sur le dépôt $1 fraichement cloné, vérifier s'il faut faire git annex
# init. Si oui, l'initialiser avec le nom d'hôte, et récupérer tous les
# fichiers annexés
# retourner 1 si une erreur s'est produite
local repodir="${1:-.}"
[ -d "$repodir" ] || return 1
repodir="$(abspath "$repodir")"
local GIT_DIR GIT_WORK_TREE
[ "$(cd "$repodir"; git rev-parse --is-bare-repository)" == false ] || return 0
[ -n "$(GIT_DIR="$repodir/.git" git config annex.uuid)" ] && return 0
# ici, on sait que git annex n'a pas encore été configuré
# vérifier s'il existe des fichiers annexés
local -a links
array_from_lines links "$(find "$repodir" -type l)"
local link hasannex=
for link in "${links[@]}"; do
link="$(readlink "$link")"
if [ "${link#.git/annex/}" != "$link" ]; then
hasannex=1
break
elif [[ "$link" == "*/.git/annex/*" ]]; then
hasannex=1
break
fi
done
if [ -n "$hasannex" ]; then
(cd "$repodir"
git annex init "$MYHOSTNAME" &&
git annex get &&
git annex sync
) || return 1
fi
}
################################################################################
# Subversion

View File

@ -52,6 +52,13 @@ COMMANDS
Afficher les différences depuis la révision REV.
-R Afficher les modifications effectuées depuis la dernière release.
clone git@host:path/to/repo [destdir]
Cloner un dépôt distant. 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]
Créer un dépôt distant sur gitolite, puis le cloner
annex [args]
Lancer git annex avec les arguments spécifiés.
xadd
@ -66,9 +73,10 @@ COMMANDS
xget
Comme ci-dessus, mais si la commande s'exécute sans erreur, lancer
aussi 'git annex sync'
crone git@host:path/to/repo
Créer puis cloner un dépôt distant sur gitolite
xinitial
Sur un dépôt fraichement cloné, initialiser le dépôt avec 'annex init'
s'il contient des fichiers annexés. Récupérer aussi ces fichiers avec
'annex get'
printml [-t TYPE]
Afficher le modeline pour un fichier du type spécifié
@ -94,6 +102,8 @@ SCRIPT_ALIASES=(
pxx:annex
pxa:xadd pxu:xunlock pxc:xcopy pxd:xdrop pxm:xmove
pxg:xget pxs:xsync pxw:xwhereis
pxinitial:xinitial
pclone:clone
pcrone:crone
pnew:new
pgr:grep
@ -125,7 +135,7 @@ CMD_ALIASES=(
DEFAULT_CMD=status
PY_CMDS=(new)
VCS_CMDS=(getvcs getroot getrepos geturl vcs add remove copy move mkdir commit status update push diff tag)
GITANNEX_CMDS=(annex xadd xunlock xcopy xdrop xmove xget xsync xwhereis)
GITANNEX_CMDS=(annex xadd xunlock xcopy xdrop xmove xget xsync xwhereis xinitial)
ML_CMDS=(printml addml)
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
@ -198,12 +208,29 @@ elif array_contains GITANNEX_CMDS "$CMD"; then
case "$CMD" in
annex) git annex "$@";;
xcopy|xmove|xget) git annex "${CMD#x}" "$@" && git annex sync;;
xinitial) git_annex_initial "$@";;
*) git annex "${CMD#x}" "$@";;
esac
elif [ "$CMD" == clone ]; then
repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
destdir="$2"
[ -n "$destdir" ] || setx destdir=basename -- "$destdir"
[ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant"
git clone "$repourl" "$destdir" || die
git_annex_initial "$destdir" || die
elif [ "$CMD" == crone ]; then
repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
destdir="$2"
[ -n "$destdir" ] || setx destdir=basename -- "$destdir"
[ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant"
splitfsep "$repourl" : userhost path
splituserhost "$userhost" user host
[ -n "$user" ] || user=git
@ -212,7 +239,8 @@ elif [ "$CMD" == crone ]; then
[ -n "$path" ] || die "Vous devez spécifier le chemin du dépôt git"
${GIT_SSH:-ssh} "$userhost" create "$path" || die
git clone "$userhost:$path"
git clone "$userhost:$path" "$destdir" || die
git_annex_initial "$destdir" || die
elif array_contains PY_CMDS "$CMD"; then
exec "$scriptdir/lib/pywrapper" uproject.py "$CMD" "$@"