Subiendo directorios vacíos en Git

Blue Corvette interior

Una de las características de Git es que, por defecto, los directorios vacíos no forman parte del repositorio y, por lo tanto, son silenciosamente descartados por operaciones como commit o push.

Incluso en los casos en que un directorio que previamente formaba parte de un repositorio pierda todo su contenido, este directorio directorio es silenciosamente eliminado del repositorio y no será creado en futuras operaciones de clonación.
Continuar leyendo “Subiendo directorios vacíos en Git”

Visualización de ficheros markdown desde GitWeb

Miles Falcon Six M3C

Los usuarios de GitHub están acostumbrados a escribir un fichero README.md en la raíz del repositorio que se visualiza desde la web proporcionando información del proyecto.

La extensión .md del proyecto indica que el mismo está escrito con el lenguaje de marcación Markdown (para más detalles, consultar esta guía rápida sobre uso del lenguaje Markdown).

Dado que tengo mi propio servicio de repositorios Git, quería incorporarle mi propio procesador de ficheros markdown e integrarlo con la consulta vía GitWeb. Por suerte, encontré este hack de Stack Overflow que me dió todas las pistas para conseguirlo.
Continuar leyendo “Visualización de ficheros markdown desde GitWeb”

Visualizando los repositorios Git mediante GitWeb

HA-220 Super Saeta

GitWeb es una aplicación web que permite visualizar los repositorios Git publicados en un servidor.
En este tutorial se muestra la configuración de GitWeb compatible con las instalaciones desarrolladas en Cómo instalar un servidor Git sobre Nginx e Instalar servidor para el protocolo Git. Esto quiere decir que los usuarios que posean credenciales válidas para el servidor podrán acceder a la consulta de la totalidad de los repositorios mediante la URL https://crossforests.com/gitweb mientras que el resto de los usuarios podrá consultar únicamente los repositorios públicos mediante la URL https://crossforests.com/gitweb (nótese que en un caso se utiliza el protocolo seguro HTTPS mientras que en el otro el acceso es vía HTTP) como se muestra en el ejemplo a continuación:

Continuar leyendo “Visualizando los repositorios Git mediante GitWeb”

Cómo instalar un servidor Git sobre Nginx

North American T-6 Texan

Así es como he incluido un repositorio Git en mi servidor web sobre Nginx.
Para este tutorial se utilizará un servidor genérico configurado para el dominio example.org.

En mi caso particular utilicé de base el servidor WordPress instalado según el tutorial cómo instalar wordpress sobre nginx y gestionando los certificados como se muestra en certificados HTTPS gratuitos con let’s encrypt.

El servicio resultante permite el acceso seguro vía HTTPS restringido a usuarios autenticados. Los usuarios validados poseerán permisos de lectura y escritura sobre todos los repositorios del servidor.

Adicionalmente, se define un área /pub donde los repositorios alojados dentro de esa área son también publicados con el protocolo HTTP para usuarios anónimos aunque, los usuarios que acceden vía HTTP, sólo poseerán permisos de lectura sobre los repositorios así publicados.
Continuar leyendo “Cómo instalar un servidor Git sobre Nginx”

Migrando de Mercurial a Git

Falkirk wheel

Una vez decidido a utilizar Git para mis repositorios surgió la necesidad de convertir los repositorios que ya tenía en Mercurial  a este sistema.

Si bien podía simplemente iniciar un repositorio en Git con el estado actual de cada proyecto, quería ser capaz de mantener la historia del repositorio con sus fechas, así como la diferentes ramas en las que hubiera estado trabajando.

Por suerte, he dado con el script de migración de fast-export que incluyo a continuación y que cumplió a la perfección con este cometido.

Mercurial sobre Nginx

lava lamp

Desde que empecé a utilizar Mercurial me ha parecido una herramienta excelente para el control de versiones.

Además de ser open source, la encuentro ágil, sencilla y multiplataforma y con una documentación (Mercurial Red Book) que ya le gustaría tener a otros. Basta con sólo leer este único manual para comprender el concepto detrás del control de versiones distribuído, los comandos de uso, la administración de los repositorios y la arquitectura interna del producto.

Pero, la Ley de Metcalfe (que otros quieren rebautizar como Teoría del bar lleno) ha hecho que los usuarios de DVCS utilicen en forma masiva Git, quizás impulsados más por el éxito de GitHub que por el sistema de control de versiones sobre el que se basa.

El procedimiento que se describe a continuación es con el cual monté el repositorio web de Cross Forests basado en Mercurial hasta que, siguiendo la corriente, lo terminé migrando finalmente a Git.
Esta instalación funcionó correctamente durante varios años (desde el 2014 hasta finales de 2017) y, si bien puede servir de referencia para futuras instalaciones, debe tenerse en cuenta que los sistemas y productos en los que se basa puedan haber sufrido cambios que requieran actualizar el procedimiento aquí descripto.

Continuar leyendo “Mercurial sobre Nginx”