Bash completion con Subversion
Si algo no me pueden negar los usuarios de Windows es que la línea de ordenes de cualquier Unix es mucho más avanzada (bueno, quizá los usuarios de PowerShell puedan sentirse ofendidos). Y una de sus grandes comodidades es la posibilidad de “autocompletado” en nombres de archivos y directorios. Pero desde hace unas cuantas versiones, Bash (el shell por excelencia en muchos Unixes) proporciona al usuario la capacidad de “programar” el sistema de autocompletado.
Nadie me puede negar que escribir ssh ❬TAB❭❬TAB❭ y obtener la lista de servidores a los que te conectas normalmente no es un placer. Pero para mí ese placer se convierte en pesadilla utilizando Subversion.
El autocompletado por defecto de Bash para Subversion (mi versión es la 20060301, que parece ser la última) funciona… de una manera un poco peculiar: para escribir una orden como:
svn commit src/directorio/archivo.c
hay que hacer:
svn com❬TAB❭ s❬TAB❭❬←❭/d❬TAB❭❬←❭/a❬TAB❭
Es decir, despues de pulsar la tecla ❬TAB❭ siempre se incluye un espacio, que hay que eliminar, y después incluir la barra de separación de directorios, lo que cuando estás escribiendo una ruta larga es como hacer el retorno de carro en una máquina de escribir antigua: un trabajo tedioso.
La solución es de lo más sencilla: hay que localizar el archivo bash_completion (en mi caso está en /opt/local/etc/bash_completion, instalado utilizando MacPorts, pero intuyo que en Linux estará en /etc/bash_completion) y buscar la linea que dice:
complete -F _svn $default svn
por otra que diga:
complete -F _svn $filenames svn
Con ese pequeño cambio, la orden anterior se convierte en:
svn com❬TAB❭ s❬TAB❭d❬TAB❭a❬TAB❭
Que es increiblemente más rápido de escribir.

