De las cosas que todos los desarrollamos deseamos pero normalmente olvidamos o mejor dicho renegamos hacer, es llevar control sobre nuestro código fuente. Los manejadores de código no son cosa nueva, han estado en el mercado por décadas. Pero últimamente con el advenimiento del movimiento del Open Source, el compartir nuestro códido con otros desarrolladores se convierte en algo obligatorio.
Entre los manejadores mas comunes tenemos cosas propietarias como el SourceSafe de Microsoft, o otras alternativas como Subversion o CVS. El que les presento hoy se llama Git y es usado nada menos que para el desarrollo del kernel de linux, y fue creado nada menos que por el Sr. Linus Torvalds.
Para mas información sobre que es pueden ir a: Wikipedia o en la página principal de Git.
Para instalar sobre Ubuntu 8.10 Hardy Heron
$ sudo apt-get install git-core
Crear un repositorio sobre un proyecto Rails
$ rails miproyecto
$ cd miproyecto
Iniciamos el repositorio
$ git init
agregamos todos los archivos del directorio ( “.” significa “todos”) al repositorio. Esto debemos hacerlo ya sea por archivo que cambie o para todo el directorio como en este caso.
$ git add .
podemos verificar el estado de los archivos que cambiaron (en este momento “todos cambiaron”)
$ git status
realizamos un commit a nuestro repositorio, incluyendo un mensaje sobre nuestros cambios
$ git commit -a -m "Carga inicial de Datos"
y eso es todo!!! Si en este momento realizamos cualquier cambio a nuestros archivos el repositorio inicia a registrarlos. Si deseamos ver que archivos cambiaron solo ejecutamos:
$ git status
y para guardar los archivos que cambiaron al repositorio volvemos a hacer:
$ git commit -a -m "Agregue unas cosas a los archivos..."
Ignorar archivos
Debido a que hay archivos en Rails que crecen mucho y que realmente no son necesarios para compartir el fuente, existe la posibilidad de generar ciertos que permiten hacer eso.
creamos un archivo .gitignore
$ touch .gitignore
agregamos este contenido a .gitignore
.DS_Store
log/*.log
tmp/**/*
config/database.yml
db/*.sqlite3
Atención!!! Git tiene la característica de ignorar por default cualquier directorio que este vacio. Por lo cual si deseamos que el directorio vendor, log y tmp sean incluidos debemos de tener algo en ellos. Si no tenemos nada siempre podemos crear un archivo .gitignore dentro de ellos.
$touch tmp/.gitignore log/.gitignore vendor/.gitignore
Bueno eso estoy todo por ahora. Delen un vistazo a Railscasts para que vean de que les estoy hablando.