set 5 2011
Git + dropbox = Una solució pràctica per tenir un repositori de versions privat
Fa temps que buscava algun servidor per desenvolupar projectes amb els amics, fins ara havia usat el dropbox però es complicat sincronitzar les programacions.
Al final se’m va acudir l’idea de montar un repositori git en una carpeta dins del dropbox. I després de varies setmanes usant-lo amb un company, puc afirmar queva molt bé i ha sigut una gran millora per el treball en grup (i per els que no son en grup). I per tots els que us pugui interessar vaig a fer un petit resum de com montar-lo i utilitzar-lo a continuació.

1- Creació del repositori
Necessitem crear un directori que serà el nostre repositori, jo sempre he usat repositoris amb el que la carpeta té l’extenció “.git”, aquesta ha d’estar a dins del dropbox.
Un cop tinguem la carpeta creada, hi accedirem usant el terminal, i un cop en ella, executarem la següent comanda:
git init –bare
Així veurem que en la carpeta en que estem, ens ha montat la infrastructura de carpetes del git. Amb això tenim el repositori creat.
2- Primera importació
En el cas que estigueu creant un projecte nou, o que esteu en una altre màquina (o per els companys amb qui esteu treballant) i volguin crear-se una copia del contingut del repositori.
git clone -o nomRepositori ~/Dropbox/git/repositori.git
Aquesta comanda us deixarà una carpeta de treball de git, amb una copia del contingut del repositori dins d’ella. El parametre -o serveix per especificar el nom del repositori per identificar-lo, si no el fiqueu usarà el per defecte que es origin. I l’ultim es el cami de carpetes cap al repositori que heu creat, podeu utilitzar l’acces ~/ per indicar la vostra carpeta home.
3- Afegir git a un projecte existent
Com ha sigut el meu cas, us podeu trobar que ja tingueu projectes creats i voleu fer que aquest comenci a funcionar sobre un repositori git. En aquest cas, l’únic que heu de fer es executar aquesta comanda a la carpeta arrel del projecte:
git init
Com podeu veure es la mateixa comanda del principi del article, sols que sense parametres, això es degut a que el git es descentralitzat, per tant tots els nodes son a la vegada repositori, i al principi li hem hagut d’especificar que aquell repositori era sols repositori. Ara sols necessitem associar a aquest que el repositori remot (encara que sigui local) es un altre que serà el meu pròxim pas.
4- Associar un repositori local
Si teniu una carpeta que ja té el git com a repositori, el que necessiteu fer es indicar-li a aquest repositori que s’ha de sincronitzar amb el que hem creat al dropbox. Així executarem la comanda següent dins la carpeta del projecte.
git remote add origin ~/Dropbox/git/repositori.git
Aquí estem fent el comentat, li estem afegint un repositori remot, el “origin” es el nom que li assignes a aquest repositori remot, de cara a referir-se a ell, si ho necessites. Utilitzo origin, ja que es el que utilitza el git clone per defecte.
5- Us del git
Per estrenar el nou repositori, haurem d’afegir fitxers, això ho podem fer amb la comanda:
git add files
On files serà els fitxers o carpetes que voldrem afegir al repositori.
També podem fer que el git ens ignori fitxers de la carpeta de treball, per exemple, els fitxers .o (objecte) o caches que utilitzin les eines amb les que programem, això ho podem fer creant un arxiu .gitignore en alguna de les carpetes, indicant que volem que ens ignori, o modificant el fitxer .git/info/exclude que es un simple fitxer de text, i indicara fitxers carpetes o patrons a ignorar en tot el repositori.
Si voleu borrar algun fitxer del repositori, ho podeu fer amb la comanda git rm fitxers però cuidado que acostuma a borrar els fitxers o carpetes que teniu al ordinador.
Pujar les modificacions al repositori no serà amb una sola comanda, com a la majoria d’eines de subversió, ja que com he explicat al punt 3, el git treballa sempre amb repositoris complets locals, amb el que necessitarem usar dos comandes per pujar els canvis.
git commit fitxers/-a
Si voleu pujar alguna de les modificacions, podeu fer el git commit indicant els fitxers a pujar, si no, podeu usar el -a que hauria de pujar tots els fitxers modificats o afegits. Llavors us obrirà un editor per linía de comandes* per a que fiqueu la descripció de les modificacions, guardeu i sortiu del editor i us guardarà el commit.
Un cop fet el commit procedirem a fer un push al repositori remot, si es el primer cop que es puja algo al repositori remot (acabeu de crear-lo i associar-lo) useu la comanda següent:
git push origin master
Això crearà la branca master al repositori i la pujarà de la teva carpeta de treball. Si la branca master ja estava creada i contenia fitxers, quedaria així la comanda:
git push
Amb això ja sols ens queda, descarregar modificacions, que es fa amb la comanda següent:
git pull
En cas de conflictes tan en el push com en el pull, ens avisarà i haurem de tenir totes les modificacions amb el commit fet. Si els fitxers modificats del repositori remot no estan modificats en el local, el pull ens farà una uniò ràpida i no passarà res, però si no pot, ens avisarà dels fitxers que han estat modificats, i ens farà un seguit de modificacions als fitxers, per indicar les diferencies, de forma que sigui fàcilment reconeixible que es que, i de forma manual poguem deixar els fitxers operatius, un cop fet amb tots, haurem de fer un git commit -a (al haver hagut conflictes es obligatori el -a) i ja ens tornarà el repositori en estat normal.
7-dropbox
Per compartir una carpeta en dropbox, ho heu de fer per la pagina web, accedint al vostre usuari, anant a la carpeta que conte el repositori i donant-li a la opció invite to folder. Així podreu compartir la carpeta, aquesta carpeta es crea a l’arrel del dropbox de la persona amb qui l’heu compartit, ell podrà cambiar la carpeta de lloc sempre i quant ho faci amb el Finder (en mac), Nautilus, dolphin o… (en linux) o en l’explorador de windows (en Windows), ja que si ho feu per terminal, us detectara com carpeta borrada i creada de nou. (a mi em va passar això fa temps)
També vull avisar que no podeu fer mai un git push, a un repositori que tingueu al dropbox, si el dropbox no està sincronitzat i amb les carpetes actualitzades, ja que d’una altre manera, podeu tenir problemes amb el git. I si mai teniu problemes amb la carpeta del git, per error d’algun dels companys, sempre podeu intentar recuperar una versio anterior de la carpeta ja sigui amb el time machine, o amb el dropbox, (pero el dropbox, no deix recuperar una versio anterior d’una carpeta)
Altres eines
Tot lo explicant en el punt 6 es pot fer utilitzant altres eines, com plugins per l’eclipse, el komodo o l’Xcode que ja el porta integrat, tot i que no t’ho deix fer tot com m’agradaria. Però us pot anar bé per el dia a dia.
També he d’afegir que el git, en mac (i en linux) té una eina que es diu gitk, que et permet també fer lo del punt 6, i moure’t per les branques amb relativa facilitat, jo només l’utilitzo en contades ocacions i sempre l’arrenco per linea de comandes en la carpeta del repositori.
Espero que us serveixi aquest article, si teniu algun dubte pregunteu. O també podeu fer recomanacions.
Dracks.
Notes:
- En linux m’obria el nano, en osX lion, m’obre el vim, però això es configurable mitjançant la variable d’entorn (del terminal) GIT_EDITOR, per tant si preferiu nano, editeu en mac el fitxer .bash_profile de la vostra carpeta home, i fiqueu aquesta linia:
export GIT_EDITOR=/usr/bin/nano
Amb això quant obriu un terminal nou, ja us obrira el nano. He intentat indicar que m’obris el TextEdit, però, no ha trobat el fitxer.







set 05, 2011 @ 10:58:45
Gran idea! Ho provaré!
set 05, 2011 @ 11:05:24
I utilitzar directament github? No és més còmode i t’estalvies complicacions amb els push i els pull?
set 05, 2011 @ 11:21:54
Hola Albert,
Depen una mica de la situació,
N’havia vist algun altre de repositori git gratuit per internet, però o tenen limit d’espai a ocupar o limit de col·laboradors, i sempre tenen limit de projectes.
Per altre banda, complicacions, jo, ara per ara no n’he tingut cap (excepte que la primera prova que va fer el meu company va borrar tot el contingut del repositori git, (no se molt bé que coi va fotre)), i vaig restaurar de backups (que dropbox t’en fa) i listo.
Dracks.