Mercurial > hg > mercurial-crew-with-dirclash
view contrib/bash_completion @ 1076:01db658cc78a
tarball support v0.3
Hello,
I'm slowly improving support for tarballs in Mercurial. Attached patch
is made against current tip in Matt's repository - f859e9cba1b9, and
contains everything done so far.
Changes:
- gzip and bzip2 tarballs are sent immediately without writing to
temporary files (I was wrong Matt, it can be done very easy)
- hgrc customization, you can choose which type (if any) you will support
There's no easy way to support compression levels, since TarFile open()
assume that it is 9. I tried to use gzopen(), and bz2open() methods
instead, but it seems that headers of generated archives, are missing or
wrong. We could eventually try to rewrite tarfile.py and include our own
version into Mercurial, but I don't know if it's good idea...
Wojtek
author | Wojciech Milkowski <wmilkowski@interia.pl> |
---|---|
date | Fri, 26 Aug 2005 20:51:34 -0700 |
parents | bb3f23fe59f0 |
children | 89f54e72581d |
line wrap: on
line source
_hg_commands() { local commands="$(hg -v help | sed -e '1,/^list of commands:/d' \ -e '/^global options:/,$d' \ -e '/^ [^ ]/!d; s/[,:]//g;')" # hide debug commands from users, but complete them if # specifically asked for if [[ "$cur" == de* ]]; then commands="$commands debugcheckstate debugstate debugindex" commands="$commands debugindexdot debugwalk" fi COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$commands" -- "$cur") ) } _hg_paths() { local paths="$(hg paths | sed -e 's/ = .*$//')" COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$paths" -- "$cur" )) } _hg_status() { local files="$( hg status -$1 | cut -b 3- )" COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$files" -- "$cur" )) } _hg_tags() { local tags="$(hg tags | sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//')" COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$tags" -- "$cur") ) } # this is "kind of" ugly... _hg_count_non_option() { local i count=0 local filters="$1" for (( i=1; $i<=$COMP_CWORD; i++ )); do if [[ "${COMP_WORDS[i]}" != -* ]]; then for f in $filters; do if [[ ${COMP_WORDS[i-1]} == $f ]]; then continue 2 fi done count=$(($count + 1)) fi done echo $(($count - 1)) } _hg() { local cur prev cmd opts i COMPREPLY=() cur="$2" prev="$3" # searching for the command # (first non-option argument that doesn't follow -R/--repository) for (( i=1; $i<=$COMP_CWORD; i++ )); do if [[ ${COMP_WORDS[i]} != -* ]] \ && [ "${COMP_WORDS[i-1]}" != -R ] \ && [ "${COMP_WORDS[i-1]}" != --repository ]; then cmd="${COMP_WORDS[i]}" break fi done if [[ "$cur" == -* ]]; then opts="$(hg -v help | sed -e '1,/^global options/d; /^ -/!d')" if [ -n "$cmd" ]; then opts="$opts $(hg help "$cmd" | sed -e '/^ -/!d; s/ [^-][^ ]*//')" fi COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$opts" -- "$cur") ) return fi if [ "$prev" = -R ] || [ "$prev" = --repository ]; then COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" )) return fi if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then _hg_commands return fi if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" = --rev ]; then _hg_tags return fi case "$cmd" in help) _hg_commands ;; export|manifest|update|checkout|up|co) _hg_tags ;; pull|push|outgoing|incoming|out|in) _hg_paths COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" )) ;; paths) _hg_paths ;; add) _hg_status "u" ;; commit|ci) _hg_status "mra" ;; remove) _hg_status "r" ;; forget) _hg_status "a" ;; diff) _hg_status "mra" ;; revert) _hg_status "mra" ;; clone) local count=$(_hg_count_non_option) if [ $count = 1 ]; then _hg_paths fi COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" )) ;; cat) local count=$(_hg_count_non_option -o --output) if [ $count = 2 ]; then _hg_tags else COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -- "$cur" )) fi ;; *) COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -- "$cur" )) ;; esac } complete -o default -F _hg hg