Hvordan bruger jeg [Git](https://en.wikipedia.org/wiki/Git_%28software%29) og [Dropbox](https://en.wikipedia.org/wiki/Dropbox_%28service%29) effektivt sammen?


Bruger du Git og Dropbox effektivt sammen?
==========================================


Jeg synes, at Git på Dropbox er fantastisk. Jeg bruger det hele tiden. Jeg har flere computere (to derhjemme og en på arbejdet), som jeg bruger Dropbox som et centralt nøgent repository. Da jeg ikke ønsker at hoste det på en offentlig tjeneste, og jeg ikke har adgang til en server, som jeg altid kan ssh'e til, tager Dropbox sig af dette ved at synkronisere (meget hurtigt) i baggrunden.


Opsætning er noget i stil med dette:



```
~/project $ git init
~/project $ git add .
~/project $ git commit -m "first commit"
~/project $ cd ~/Dropbox/git

~/Dropbox/git $ git init --bare project.git
~/Dropbox/git $ cd ~/project

~/project $ git remote add origin ~/Dropbox/git/project.git
~/project $ git push -u origin master
```

Derfra kan du bare klone `~/Dropbox/git/project.git`, som du har tilknyttet din Dropbox-konto (eller har delt denne mappe med andre), du kan udføre alle de normale Git-operationer, og de vil automatisk blive synkroniseret til alle dine andre maskiner.


Jeg har skrevet et blogindlæg, *[On Version Control](http://corrupt.net/2009/08/01/On-Version-Control/)*, ([gammelt link](https://random-rails.blogspot.com/2009/08/on-version-control.html#links) dead) om mine overvejelser og hvordan jeg har sat mit miljø op, det er baseret på min [Ruby on Rails](https://en.wikipedia.org/wiki/Ruby_on_Rails)-udviklingserfaring, men det kan egentlig anvendes på alt muligt.


Jeg tror ikke, at Git og Dropbox er den rigtige måde at bruge Git og Dropbox på... Tænk bare på funktionerne i begge:


Git:


* Giver dig mulighed for at have et centralt repository
* Giver dig mulighed for at have dit eget repository med dine egne ændringer
* Giver dig mulighed for at sende og modtage ændringer fra det centrale repository
* Tillader flere personer at ændre de samme filer og de sammenføjer dem eller beder dig om at sammenføje dem, hvis den ikke kan gøre det
* Har web- og desktopklienter til at give adgang til det centrale repository


Dropbox:


* Opbevarer alt i et centralt arkiv
* Giver dig mulighed for at have dine egne versioner af filerne på serveren
* Tvinger dig til at sende og modtage ændringer fra det centrale arkiv
* Hvis flere personer ændrer de samme filer, erstattes den første fil, der er blevet committet, af senere commits, og der sker ingen sammenlægning, hvilket er besværligt (og absolut den største ulempe)
* Har web- og desktopklienter for at give adgang til det centrale repository.


Og hvis du'er bekymret for at dele nogle af dine filer, hvorfor så ikke kryptere dem? Og så kunne du få den største fordel ved Dropbox til Git, nemlig at have offentlige og private filer ...


Vi bruger denne metode (oprettelse af et nøgent arkiv i Dropbox) på en **delingsmappe**.


En lille gruppe udviklere kan trække fra det nøgne, synkroniserede arkiv og oprette en lokal klon. Når enheden af arbejdet er færdig, skubber vi tilbage til origin.


En ting jeg mangler er en god måde at få sendt en e-mail med information om ændringssættet, når der sker et push til origin. Vi bruger Google Wave til manuelt at holde styr på ændringer.

