23 de Noviembre, 2011

Diffs y Vim

Cuando estoy desarrollando, ya sea en casa o en el trabajo, mi ciclo de desarrollo suele ser siempre el mismo: programo una funcionalidad, recojo los cambios que pueden haber introducido mis compañeros en el repositorio (arreglo conflictos, algo que pasa con svn), reviso mis cambios y los subo al repositorio.

Bueno, en casa en realidad funciona de otra manera, porque el commit lo hago local (trabajo con git), y si todo va bien ya haré un pull --rebase seguido de un push al repositorio remoto, pero ese paso no quita que revise mis cambios antes de meter nada en el repositorio.

Mi forma de trabajar es:

Una funcionalidad, un commit.

Es decir, siempre registro un conjunto de cambios atómico que se pueda revertir si es necesario.

Normalmente suelo ejecutar algo como:

$ svn diff | gview -

Podemos hacer lo mismo con git e imagino que con cualquier otro SCM (y podríamos usar igual vimdiff en consola).

Así tenemos el diff para leer perfectamente coloreado con todos los cambios que hemos hecho.

Hasta ahora es lo que venía haciendo, y me funcionaba muy bien. Un café, y a leer el diff para asegurarnos de que todo es correcto :).

Ahora viene una macro de vim que lo cambia todo (fuente):

map <F9> :new<CR>:read !svn diff<CR>:set syntax=diff buftype=nofile<CR>gg

Esa sería la macro para svn y la pondríamos en nuestro ~/.vimrc. Es muy simple: pulsar F9 crea un nuevo buffer no asociado a un fichero (no lo vamos a guardar), con sintaxis de color de diff, y lo inicializa con la salida del comando svn diff.

Es en realidad muy sencillo, pero nunca se me había ocurrido :P. Me aporta la ventaja de que puedo ejecutarlo en una sesión existente de gvim y tener todos mis buffers abiertos fácilmente accesibles de forma que puedo ir y venir por el código si quiero cambiar algo.

La única pega que le veo (hasta ahora) es que es dependiente del directorio en el que nos encontramos, aunque en mi caso no es muy traumático porque suelo posicionarme en la raíz del árbol de directorios del proyecto (:cd ~/loquesea), y abro los ficheros relativos a esa posición (:ed loquesea o :ed . para abrir un explorador en el directorio actual).

Una macro más, directa a mis dot files ;).

Anotación por Juan J. Martínez, clasificada en: vim, programming.

Hay 2 comentarios

Gravatar

Conste que lo he buscado antes por si metía la zarpa – http://blackshell.usebox.net/search?query=vim – no sería la primera vez, pero tu blog te está pidiendo a gritos una anotación más explícita sobre tu .vimrc. Challenge submited ;).

por r0sk, en 2011-12-02 01:04:01

Gravatar

OK, challenge accepted!

No es nada del otro mundo, básicamente he ido recopilando ideas de varios sitios ;)

por Juanjo, en 2011-12-02 08:19:30

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: