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" 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 # Subversion

View File

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