--- bash_completion	2004-07-11 14:36:39.000000000 -0400
+++ bash_completion.svn	2004-07-26 16:15:32.936800848 -0400
@@ -1525,6 +1525,271 @@
 complete -F _cvs $default cvs
 }
 
+# svn(1) completion
+#
+have svn && {
+
+_svn()
+{
+        local cur count mode i cvsroot cvsroots pwd
+        local -a flags miss files entries changed newremoved
+
+        COMPREPLY=()
+        cur=${COMP_WORDS[COMP_CWORD]}
+
+        count=0
+        for i in ${COMP_WORDS[@]}; do
+                [ $count -eq $COMP_CWORD ] && break
+                if [ -z "$mode" ]; then
+                        case $i in
+                        add)
+                                mode=add
+                                ;;
+                        @(blame|praise|annotate|ann))
+                                mode=blame
+                                ;;
+                        cat)
+                                mode=cat
+                                ;;
+                        @(checkout|co))
+                                mode=checkout
+                                ;;
+                        cleanup)
+                                mode=cleanup
+                                ;;
+                        @(commit|ci))
+                                mode=commit
+                                ;;
+                        @(copy|cp))
+                                mode=copy
+                                ;;
+                        @(delete|del|remove|rm))
+                                mode=delete
+                                ;;
+                        @(diff|di))
+                                mode=diff
+                                ;;
+                        export)
+                                mode=export
+                                ;;
+                        @(help|?|h))
+                                mode=help
+                                ;;
+                        import)
+                                mode=import
+                                ;;
+                        info)
+                                mode=info
+                                ;;
+                        @(list|ls))
+                                mode=list
+                                ;;
+                        log)
+                                mode=log
+                                ;;
+                        merge)
+                                mode=merge
+                                ;;
+                        mkdir)
+                                mode=mkdir
+                                ;;
+                        @(move|mv|rename|ren))
+                                mode=move
+                                ;;
+                        @(propdel|pdel|pd))
+                                mode=propdel
+                                ;;
+                        @(propedit|pedit|pe))
+                                mode=propedit
+                                ;;
+                        @(propget|pget|pg))
+                                mode=propget
+                                ;;
+                        @(proplist|plist|pl))
+                                mode=proplist
+                                ;;
+                        @(propset|pset|ps))
+                                mode=propset
+                                ;;
+                        resolved)
+                                mode=resolved
+                                ;;
+                        revert)
+                                mode=revert
+                                ;;
+                        @(status|stat|st))
+                                mode=status
+                                ;;
+                        @(switch|sw))
+                                mode=switch
+                                ;;
+                        @(update|up))
+                                mode=update
+                                ;;
+                        *)
+                                ;;
+                        esac
+                elif [[ "$i" = -* ]]; then
+                        flags=( ${flags[@]:-} $i )
+                fi
+                count=$((++count))
+        done
+
+        case "$mode" in
+        add)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '--targets -N --non-recursive -q --quiet --config-dir --auto-props --no-auto-props' -- $cur ) )
+                fi
+                ;;
+        blame)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        cat)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        checkout)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision -q --quiet -N --non-recursive --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        cleanup)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '--diff3-cmd --config-dir' -- $cur ) )
+                fi
+                ;;
+        commit)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-m --message -F --file -q --quiet -N --non-recursive --targets --force-log --username --password --no-auth-cache --non-interactive --editor-cmd --encoding --config-dir' -- $cur ) )
+                fi
+                ;;
+        copy)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-m --message -F --file -r --revision -q --quiet --username --password --no-auth-cache --non-interactive --force-log --editor-cmd --encoding --config-dir' -- $cur ) )
+                fi
+                ;;
+        delete)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '--force --force-log -m --message -F --file -q --quiet --targets --username --password --no-auth-cache --non-interactive --editor-cmd --encoding --config-dir' -- $cur ) )
+                fi
+                ;;
+        diff)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision --old --new -x --extensions -N --non-recursive --diff-cmd --no-diff-deleted --notice-ancestry --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        export)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision -q --quiet --force --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        help)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '--version -q --quiet --config-dir' -- $cur ) )
+                fi
+                ;;
+        import)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-m --message -F --file -q --quiet -N --non-recursive --username --password --no-auth-cache --non-interactive --force-log --editor-cmd --encoding --config-dir --auto-props --no-auto-props' -- $cur ) )
+                fi
+                ;;
+        info)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '--targets -R --recursive --config-dir' -- $cur ) )
+                fi
+                ;;
+        list)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision -v --verbose -R --recursive --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        log)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision -q --quiet -v --verbose --targets --stop-on-copy --incremental --xml --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        merge)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision -N --non-recursive -q --quiet --force --dry-run --diff3-cmd --ignore-ancestry --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        mkdir)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-m --message -F --file -q --quiet --username --password --no-auth-cache --non-interactive --editor-cmd --encoding --force-log --config-dir' -- $cur ) )
+                fi
+                ;;
+        move)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-m --message -F --file -r --revision -q --quiet --force --username --password --no-auth-cache --non-interactive --editor-cmd --encoding --force-log --config-dir' -- $cur ) )
+                fi
+                ;;
+        propdel)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-q --quiet -R --recursive -r --revision --revprop --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        propedit)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision --revprop --username --password --no-auth-cache --non-interactive --encoding --editor-cmd --force --config-dir' -- $cur ) )
+                fi
+                ;;
+        propget)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-R --recursive -r --revision --revprop --strict --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        proplist)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-v --verbose -R --recursive -r --revision -q --quiet --revprop --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        propset)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-F --file -q --quiet -r --revision --targets -R --recursive --revprop --username --password --no-auth-cache --non-interactive --encoding --force --config-dir' -- $cur ) )
+                fi
+                ;;
+        resolved)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '--targets -R --recursive -q --quiet --config-dir' -- $cur ) )
+                fi
+                ;;
+        revert)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '--targets -R --recursive -q --quiet --config-dir' -- $cur ) )
+                fi
+                ;;
+        status)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-u --show-updates -v --verbose -N --non-recursive -q --quiet --no-ignore --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        switch)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision -N --non-recursive -q --quiet --diff3-cmd --relocate --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        update)
+                if [[ "$cur" == -* ]]; then
+                        COMPREPLY=( $( compgen -W '-r --revision -N --non-recursive -q --quiet --diff3-cmd --username --password --no-auth-cache --non-interactive --config-dir' -- $cur ) )
+                fi
+                ;;
+        "")
+                COMPREPLY=( $( compgen -W 'add blame cat checkout cleanup commit copy delete diff export help import info list log merge mkdir move propdel propedit propget proplist propset resolved revert status switch update praise annotate ann co ci cp del remove rm di ? h ls mv rename ren pdel pd pedit pe pget pg plist pl pset ps stat st sw up --help -h -?' -- $cur ) )
+                ;;
+
+        *)
+                ;;
+        esac
+
+
+        return 0
+}
+complete -F _svn $default svn
+}
+
 have rpm && {
 # helper functions for rpm completion
 #

