Advertisement
rgman

Archive files with Mercurial

Sep 3rd, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.47 KB | None | 0 0
  1. #!/bin/bash
  2. usage="Programa para archivar (archive) los archivos modificados en una revisión con Git.
  3.  
  4. Uso: $(basename "$0") [-h] [-o | --output] [--repo] [-r | --rev] [-f | --format]
  5.    -h    or    --help        Muestra este texto de ayuda
  6.    -o    or    --out         Directorio o archivo de salida
  7.    --repo                    Directorio del repositorio a archivar
  8.    -r    or    --rev         Revisión a archivar (Por defecto: HEAD)
  9.    -f    or    --format      Formato del archivo de salida: 'zip', 'tar', 'files' o 'tgz'
  10. "
  11.  
  12. CURRENTDIR=$(pwd)
  13. REPO="."
  14. OUT="archive.zip"
  15. REV="HEAD"
  16. HELP=0
  17. FORMAT="zip"
  18. args="$#"
  19.  
  20. if [[ $# > 1 ]]; then
  21.     while [[ $# > 1 ]]
  22.         do
  23.         key="$1"
  24.  
  25.         case $key in
  26.             -o|--out)
  27.             OUT="$2"
  28.             shift
  29.             ;;
  30.             --repo)
  31.             REPO="$2"
  32.             shift
  33.             ;;
  34.             -r|--rev)
  35.             REVS=$(echo "$2" | tr ":" "\n")
  36.             shift
  37.             ;;
  38.             -f|--format)
  39.             FORMAT="$2"
  40.             shift
  41.             ;;
  42.             -h|--help)
  43.             echo 89
  44.             HELP=1
  45.             shift
  46.             ;;
  47.             *)
  48.             # unknown option
  49.             ;;
  50.         esac
  51.         shift
  52.     done
  53. else
  54.     if [[ $1 = "-h" || $1 = "--help" ]]; then
  55.         HELP=1
  56.     fi
  57. fi
  58.  
  59. if [ $HELP = 1 ]; then
  60.     echo $usage
  61. else
  62.     echo "Archiving..."
  63.     cd $REPO
  64.     REV1='';
  65.     REV2='';
  66.     for x in $REVS
  67.     do
  68.         if [[ $REV1 = "" ]]; then
  69.             REV1="$x";
  70.         fi
  71.         REV2="$x"
  72.     done
  73.     hg archive --type $FORMAT --rev $REV2 $(hg log --rev $REV1:$REV2 --template "{files % ' -I {file}'}") ${CURRENTDIR}/${OUT}
  74.     cd $CURRENTDIR
  75.     echo "Done."
  76. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement