top | item 3713623

Using Git with Dropbox

80 points| mmisu | 14 years ago |solarianprogrammer.com | reply

59 comments

order
[+] weaksauce|14 years ago|reply
If you are already trusting a cloud service with your data why not go one step further and use bitbucket for free private repos?

You don't have the possibility of corrupting your repo with an unsynced commit from a differennt machine.

[+] kombine|14 years ago|reply
I also wonder why so many people forget about bitbucket. To me really it's the matter of taste, and there is certainly less differences between github and bitbucket than there is between git and mercurial.
[+] dalore|14 years ago|reply
AFAIK thanks to the hashing used with git there is very little chance of corruption. The filenames are 32bit hashes so the probability of collision between the hashes of two given files is 1 / 2^32. The probability of collisions between any of N given files is (N - 1) / 2^32.
[+] calculus|14 years ago|reply
Am I wrong, or does pushing to the dropboxed git repo at the same time from two different computers will corrupt the repo ?
[+] eli|14 years ago|reply
I managed to screw up a git repo in Dropbox. I believe it was by making a commit on a non-connected computer than making another commit before the first one had synced to dropbox.

It was not the end of the world, but I would not recommend storing git repo in dropbox. If it's really something so small and insignificant that it doesn't need a git repo, then just put it in dropbox. If you want to use git, take the time to set up a proper repository.

[+] mmisu|14 years ago|reply
If you have multiple users use different branches, I think this page was written from the perspective of a single coder that needs to keep track of his own code in a safe way.
[+] mmisu|14 years ago|reply
Hope to not be wrong, but if you push different commits you should be safe.
[+] mikeash|14 years ago|reply
It can, yes. It's relatively rare though. The nice thing about git is that, when it happens, you can just nuke the Dropbox repository and rebuild it without losing anything. Git's checksums guarantee that the corruption results in an error and not bad data.
[+] amalag|14 years ago|reply
Why bother with dropox? Install jgit and push it on your S3 account for $0.01 per month. Or use Bitbucket's free private git repos.
[+] driverdan|14 years ago|reply
What does jgit have to do with S3? From the description on the project page it's just a Java implementation of git.
[+] zrail|14 years ago|reply
This is kind of an amazing tip. Thanks. I had no idea jgit even existed, let alone could do this.
[+] lysol|14 years ago|reply
Honestly, I just keep my checked out copy in Dropbox. If it's something I feel like keeping private, I just don't push it anywhere. Even less effort involved.
[+] pcl|14 years ago|reply
If you have a working directory checked out in ~/Dropbox, beware of multi-machine madness. I've run into issues with a git repo in ~/Dropbox + IntelliJ + multiple computers -- if you leave IJ running on a machine you're not using, it'll notice file changes and re-index things in git. This can, in turn, cause Dropbox to create conflicts, effectively corrupting your git repo. As a result, I tend to keep only non-Java (i.e., non-IJ) projects in ~/Dropbox.

Run "find .git -name 'conflict'" in your working directory to see if this has happened to you.

[+] ajross|14 years ago|reply
I'm sure the point was that it was a shared repository among a private group, not a personal thing.
[+] mhartl|14 years ago|reply
I used to do this, but I learned the hard way that it fails terribly when you're working on different branches on different machines.
[+] wei2012|14 years ago|reply
Wasting your talent and time, just use bitbucket.

Life is short.

[+] newman314|14 years ago|reply
Warning: If you use git+Dropbox on a Mac (or have one joined anywhere), keep in mind that most Macs have case-insensitive filesystems.

What this means is checking out a git repo like the Linux kernel will not work. This drove me a little nuts until I figured out what happened (I'm an old school Unix guy so did not realize that HFS+ is case insensitive).

[+] TazeTSchnitzel|14 years ago|reply
IIRC you can reformat as case-sensitive.
[+] webjprgm|14 years ago|reply
Old news, been doing this for years. (I hadn't heard of bitbucket back then.)

Also, my use case is extremely simple. I'm just sharing my own personal projects between my desktop and my laptop. I only ever use one of the two at a time, and am not using any tool that automatically checks or updates git repos.

[+] ImprovedSilence|14 years ago|reply
I really just do all my work in Dropbox folders anyway. Instant code everywhere. Life's good.
[+] udp|14 years ago|reply
Until you compile your code, end up with 300 MB of object files and have no way to exclude them by file extension.
[+] alpb|14 years ago|reply
It is not managable to have too many binaries changed in each commit that are under control git synced with Dropbox. (I know Git is not the best suitable vcs for binaries!) I'd always prefer Bitbucket for that reason. It's an Atlassian product and it is reliable, has no difference than github for private repos. Your files will be on the cloud, is your Dropbox more secure and permanent than Bitbucket? Hell no.
[+] yonran|14 years ago|reply
Would storing a git bundle on dropbox be better to avoid concurrent modifications to your refs? (A git bundle is just a git pack file of commits along with new ref pointers in a single file).

Could you push to one bundle per computer and then git fetch all the bundles from your peers? Once all your peers have your changes, you can start making bundles from a later revision so that the incremental bundles aren't too big.

[+] darrikmazey|14 years ago|reply
I'm sure I'm not the target audience, but I'm surprised that in this day and age there isn't always a shared resource lying around (a linode, a slice, an ec2 instance). Or just allow ssh between developers with accounts limited to git access. The dropbox part seems unnecessary.
[+] rhardih|14 years ago|reply
Except you don't own the stuff in your dropbox any more than you own you pictures on Facebook.
[+] mariusmg|14 years ago|reply
If you want to keep it private what the heck would you push it to Dropbox ?!
[+] w33ble|14 years ago|reply
Also of note, if you're going to push your private repo to the cloud anyway, Bitbucket has free private Git repos. It's not as featureful as Github, but it has more than just the simple file storage you'd get through Dropbox.
[+] Kiro|14 years ago|reply
So how do I do this in the GUI?