Partager un projet git via Dropbox peut être très pratique lorsqu’on travail simultanément sur plusieurs machines.

Malheureusement, faire un checkout directement dans un dossier géré par Dropbox n’est pas une bonne idée car ce dernier va essayer de tenir synchronisé les fichiers internes de git (dossier .git/); conduisant à des états instable et des corruptions de la copie locale du dépôt.

La solution est assez simple à mettre en oeuvre mais relativement peu documentée. Voici les deux étapes : 1) déplacer le dossier .git/ ailleurs, hors de la portée de Dropbox 2) créer un fichier .git contenant le chemin vers ce nouvel emplacement

Voici un petit script qui le fait proprement :

gitStuff=~/gitRepos/project
yourWork=~/Dropbox/work/project
repoUrl=git://path/to/project.git

git --git-dir=$gitStuff --work-tree=$yourWork clone $repoUrl $gitStuff;
echo "gitdir: $gitStuff" > $yourWork/.git;

Les dossiers parents $gitStuff et $yourWork doivent exister avant d’exécuter ce script (~/gitRepos et ~/Dropbox/work dans l’exemple).