Dropbox como repositorio central de Git

por Marcos Chavarría Teijeiro

Para levar a cabo proxectos entre varias persoas case sempre é importantísimo empregar sistemas de control de versións que nos axuden a poder traballar en paralelo e ter un maior control dos cambios que facemos no proxecto. Se falamos de sistemas de control de versións, Git destaca por ser un dos mellores e máis usados. Trátese dun sistema de control de versións distribuído polo que podemos traballar e facer commits de forma local sen ter que dispor dunha conexión a internet.

Non obstante se queremos sincronizar os repositorios locais de cada compañeiro necesitamos un repositorio central no que poder xuntar o traballo de cada un. Para facer isto podemos empregar solucións comerciais como GitHub ou Bitbucket pero tamén podemos empregar unha carpeta compartida de Dropbox. Aquí podedes ver como ser fai.

gitdropbox

O problema é que Dropbox dista bastante de ser unha ferramenta estable e os problemas de sincronización (polo menos en Linux) son unha constante. Isto causa que sexa posible subir cambios o “repositorio central” sin que este este sincronizado o cal pode causar que non se suban os cambios que fixeches o servidor ou que haxa conflictos que no se solucionan ca aparición de arquivos co sufixo “Copia de conflicto de Fulanito De Tal”. Aínda que a solución a isto máis habitual é avisar cando se vai facer un commit, eu empreguei unha alternativa que emprega unha das características avanzadas de Git, os hooks.

Para solucionar isto escribin un hook para o repositorio de Git. Un hook é un pequeno script que se executa en determinados momentos cando traballas con Git e ten a capacidade de modificar ou incluso evitar accións. No noso caso interesa que se execute cando facemos un push e que no caso de non estar sincronizado que non permita facer o push. O código é o seguinte:

O script comproba dúas cousas, que haxa conexión a internet e que o estado de Dropbox sexa Idle. Se se dan estas dúas circunstancias permitese facer o push en caso contrario denégase. Para poder instalalo temos que copiar o arquivo no directorio .git/hook, renomealo como update e darlle permisos de execución.

Aínda que o mellor pode ser algo incomodo xa que en moitas ocasións nos denegara o push aínda que non vaia a haber conflictos, permite que teñamos unha maior seguridade a hora de subir os cambios e poidamos evitar a perda do traballo feito. Espero que vos sexa de utilidade. 😉