#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 source "$(dirname "$0")/lib/ulib/ulib" || exit 1 urequire DEFAULTS ptools # XXX ajouter la possibilité de faire des pré-releases, --alpha, --beta, --rc # les pré-releases restent dans la branche de release, et vivent leur vie, # jusqu'à la release finale qui est mergée dans master. Il faudrait aussi une # option pour merger les modifications de la branche de release dans develop function display_help() { uecho "$scriptname: basculer sur une branche de release USAGE $scriptname [options] [SOURCE] - Vérifier s'il n'y a pas de modifications locales. Sinon, proposer de faire un commit ou un stash. - Si aucune branche de release n'existe, assumer -u -z pour préparer une release mineure. Sinon, basculer simplement sur la branche de release. OPTIONS -C, --projdir PROJDIR Spécifier le répertoire de base du projet qui est dans git. Par défaut, on travaille dans le répertoire courant et on laisse git trouver le répertoire de base du projet. Avec cette option, le répertoire courant est modifié avant de lancer les commandes git. -O, --origin ORIGIN Spécifier le nom de l'origine. Par défaut, utiliser 'origin' -u, --update Préparer une release. Utiliser une des options -x, -z ou -p pour spécifier le type de release à préparer. S'il faut créer une nouvelle branche, la baser sur la branche SOURCE, qui vaut par défaut develop -x, --major -z, --minor -p, --patchlevel Utilisé avec l'option -u, préparer respectivement une release majeure, mineure (par défaut), et pour correction de bug. -m, --merge Si la branche actuelle est une branche de release, ou s'il existe une branche de release, la merger dans master, puis dans develop, puis la supprimer. Puis basculer sur la branche master. Si la branche actuelle est une branche de topic et qu'il n'existe aucune branche de release, assumer les options -u -z -m -l, --log Afficher les modifications actuellement effectuée dans la branche de release par rapport à develop. -d, --diff Afficher les modifications actuellement effectuée dans la branche de release par rapport à develop, sous forme de diff." } projdir= origin=origin parse_opts "${PRETTYOPTS[@]}" \ --help '$exit_with display_help' \ -C:,--projdir: projdir= \ -O:,--origin: origin= \ @ args -- "$@" && set -- "${args[@]}" || die "$args" if [ -n "$projdir" ]; then cd "$projdir" || die fi git_ensure_gitvcs