[linux/util] Control de Versiones en Vim
El otro día leí un artículo interesante en [Sushi Knights](http://sushiknights.cl) sobre el uso de [Control de Versiones](http://sushiknights.cl/?q=node/636). El artículo se centra en [CVS](http://http://es.wikipedia.org/wiki/CVS), un sistema muy popular si uno quiere colaborar con muchos otros autores en un proyecto común.
Mis documentos los escribo con [LaTex](http://es.wikipedia.org/wiki/LaTeX), utilizando [vim-latex](http://vim-latex.sourceforge.net/) (instalación en Debian: apt-get install vim-suite) y [Vim](http://vim.org), el mejor y más poderoso editor de todos los tiempos :), y la combinación de los dos es (casi) perfecta, porque tengo todo los comandos de Vim y una serie de herramientas para escribir y compilar mis documentos a PDF. Lo que me faltaba para tener un sistema perfecto era el control de versiones que mencionaban los Knights. Y así se hace con Vim:
0.) Instala [RCS](http://www.cs.purdue.edu/homes/trinkle/RCS/). Es software libre, y llegar y llevar en cualquier SO. Viene preinstalado en casi cualquier Linux/OSX. (En Debian, trivial como siempre: apt-get install rcs)
1.) Baja [rcs-menu.vim](http://www.vim.org/scripts/script.php?script_id=41)(*), un pequeña extensión para vim, y asegurate que esté en el directorio apropiado (en Linux, ~/.vim/plugin).
Eso es todo! El uso es muy simple. Digamos que tengo un documento llamado **tesis.tex**, y quiero hacer modificaciones y mantener una historia (o log) de los cambios. Si el documento esta abierto en vim, haz (esto se puede hacer como describo abajo o usando el menu llamado ‘RCS’ que se crea si estas usando una version GUI, como gVim):
\init
Vim te pregunta que describas que contiene el archivo:
enter description, terminated with single ‘.’ or end of file:
NOTE: This is NOT the log message!
>>
cuando termines, escribe un solo punto y después retorno:
enter description, terminated with single ‘.’ or end of file:
NOTE: This is NOT the log message!
>> Esta es mi tesis
>> .
Y listo. En el mismo directorio, se ha creado un nuevo archivo, llamado **tesis.tex,v**, un archivo en formato RCS que va a contener el texto original más todos los cambios que le haré en el futuro. Ese archivo es solo-lectura. Para poder obtener la ultima versión del archivo y hacer modificaciones, haz (con tesis.tex abierto):
\lock
Esto crea una copia del archivo que se puede modificar. Cuando quieras guardar los cambios (‘commit’, en la jerga de estos programas), simplemente haz:
\ci
y Vim te preguntará por una descripción de los cambios que has hecho. Haciendo **\lock** puedes seguir trabajando después de un commit.
Y eso es todo!! RCS es muy simple, y no es tan elegante ni tiene tantos pitos y flautas como CVS u otros programas (por ejemplo, no es recomendable si varias personas quieren trabajar con los archivos al mismo tiempo), pero para proyectos personales o si no quieres aprender un sistema más complicado, esto puede ser útil.
(*) Otra alternativa es [rcsvers.vim](http://www.vim.org/scripts/script.php?script_id=563), una extensión que crea una nueva versión cada vez que salvas el documento.
[tags] vim, rcs, revision control, software libre, util [/tags]