Git en DreamHost (y otros)
Git parece ser el nuevo juguete de cool kids de Internet. Git es simplemente otro sistema de control de versiones, similar al proposito que cumplen CVS o Subversion, pero con ciertas características que lo hacen muy interesante, y detrás de la criatura (al menos al principio del proyecto) estaba Linus Torvals, que creo que había hecho ya algo en el mundo del software…
Pero tener poco más de dos años de vida hace que no esté muy extendido o no existan todas las ayudas que siempre se agradecen. Intentaré poner mi granito de arena con esta entrada.
El problema a solucionar es como disponer de una copia de nuestro repositorio Git en un servidor externo sobre el que se puedan hacer pulls y pushes para disponer de una copia de nuestro trabajo, para publicar un repositorio de acceso público o incluso para utilizarlo como repositorio “central”. Utilizo DreamHost porque es mi servicio de hosting, pero cualquier hosting con WebDAV debería servir.
Podemos utilizar Git en cualquier directorio que tenga WebDAV activado, por lo que desde el panel de DreamHost nos dirigimos a “Goodies → Htaccess/WebDAV” y después de elegir el dominio sobre el que queremos crear el nuevo directorio con WebDAV le damos a “Set Up A New Directory”.
En esta pantalla debemos elegir el nombre del directorio, y algunas opciones. La que hay que dejar seleccionada siempre es “Enable WebDAV on this dir?”, las otras dependerán de vuestras necesidades. Una cosa a tener en cuenta es que solo los usuarios listados en el cuadro “User accounts for this area” tendrán permisos de escritura. Los permisos de lectura dependen de si se selecciona o no la opción “Password-protect this dir?” (el nombre de la opción lo deja claro ¿no?). De forma que si se quiere que el repositorio sea privado esa opción debería estar activada, y si se quiere un repositorio del que se pueda leer anonimamente desactivada. En este último caso sería recomendable activar la opción “Forbid linking to files in this dir?” y eliminar todas las extensiones del cuadro “Forbidden file extenssions” (otra opción con descripción exacta). Cuando esté la configuración como se quiere le daremos a “Configure This Directory”.
Como nos dice que tardará unos diez minutos iremos adelantando trabajo por otro lado. En el ordenador local deberemos crear un nuevo repositorio local de Git:
$ mkdir msft-killer
$ cd msft-killer
$ git init
$ touch .gitignore
$ git add .gitignore
$ git commit -m “gitignore para rellenar el repositorio”
Es importante que el repositorio contenga algo. En el ejemplo meto un archivo .gitignore, pero bien podría ser el esqueleto inicial del repositorio. Continuamos:
$ cd ..
$ git clone –bare msft-killer msft-killer-bare
$ cd msft-killer-bare
$ git –bare update-server-info
Lo que hacemos ahora es crear una copia de nuestro repositorio, pero sin “copia de trabajo”, para despues hacer que Git cree algunos archivos en él que el servidor no puede crear y provocarían un fallo.
El siguiente paso depende del sistema operativo. Necesitamos subir los contenidos de msft-killer-bare al nuevo directorio WebDAV que hemos creado en el servidor (¿no ha llegado aún el correo?). Podemos subirlo directamente al directorio creado o a un subdirectorio, eso depende de como queramos gestionar nuestros repositorios.
De vuelta en nuestro ordenador deberemos crear un archivo .netrc en nuestro $HOME con un contenido como el siguiente:
machine git.example.com
login usuario
password contraseña
Sustituyendo por los datos apropiados, claro.
Ahora con solo hacer:
$ git clone http://git.example.com/msft-killer/ my-msft-killer
Git se descagará una copia de nuestro repositorio totalmente preparada para el desarrollo “desconectado” en local y para realizar pushes y pulls al servidor (se pueden borrar los directorios msft-killer y msft-killer-bare después de este paso).


9 de Enero de 2008 a las 21:22
Joer y yo que había oido que lo que se llevaba ahora era Bazaar… es imposible estar al día con tantas novedades
9 de Enero de 2008 a las 22:15
Nunca estarás a la última en este mundo.
Bazaar tiene por detrás a Canonical (los de Ubuntu) y acaba de sacar la versión 1.0, aunque no he oido mucho hype sobre él (creo que tiene mejor soporte para Windows, que en Git es bastante malo).
Otros contendientes en la lucha son Mercurial y Darcs. Mercurial solo por el nombre de su “ejecutable”
hgse merece atención. Para mí se quedó en un digno segundo puesto. Darcs parece ser el menos mejor de todos por problemas de eficiencia (está programado en Haskell) y perdida de datos.Mi elección de Git es más de corazón y confianza en Linus que otra cosa, pero era el que más hype estaba leyendo últimamente.