Dropbox is not a tool for developers
stupidiswinning.tumblr.com
stupidiswinning.tumblr.com
Versioning (using git) is about marking state at a period of time. Such that, in the future, you can go back to that important state, and that state means something.
Backup, syncing, they just solve different problems. They might have backups, but those backups rarely mean something. Other than, "well I thought it worked tuesday".
I see this is as "different by design". I want Dropbox to make the same shit show up everywhere. I want git to manage versions and streams of work, often coordinating with other people. Using the dropbox workflow with other people sucks if people make changes (I have to often ask, "hey wait, what did you do".) Using the git workflow to sync with other devices sucks because I have to remember to tell it what to do.
I talked with a group that was using Dropbox as their "VCS" before and asked how they handled conflicts. They told me they just made sure everybody was in the same room before anybody did anything.
[1] I'm not saying this because git is the magic fairy dust. Replace git with hg, darcs etc.
Edit: actually it looks like most people use a bare repo on dropbox so you still push/pull from it. I don't understand the use-case at all then.
Personally, I think it's stupid. If it's a non-secret project, host it on github and do a '[le]git sync' every few minutes (from a cronjob, if you insist).
If you don't want to expose it on github, why on earth do you trust dropbox to keep it?
Obviously I just keep my private repos on my own server. Who doesn't have their own server these days anyway?
There's no way I'd trust Dropbox to touch my git repos.
1: http://intermediaware.com/blog/how-to-use-dropbox-as-a-git-r...
Are you confusing Git with Github (service)?
But saying "why use Git with Dropbox it makes no sense?!" is actually wrong. It makes perfect sense. Git is not centralised. You cannot access your repository from a remote host.
Dropbox as well as Github and a number of alternative service allow that.
I cannot access my repository from a remote host? I am guessing that you run windows, I don't. I can ssh into any machine that I need to access.
The question was misinformation. Git within its self doesn't offer a centralised storage system.
The question implied it did. You didn't ask for a comparison, you implied there was no comparison to be made because Git already had it all.
> You have yet to answer what Dropbox+git offers that git+backup system does not.
Nothing. Same thing.
Please tell me where the "misinformation" is in the following question:
What does dropbox add that you don't get from git?[1] And/or with git and a
decent backup system(tarsnap/duplicity/rsync)? It seems like a lot of extra
overhead and data privacy concerns for little gain. What am I missing?
And while we are at it please explain how I did not ask for a comparison?As far as "git does not offer a centralized storage system" goes, Scott Chacon seems to disagree with you:
"If you have a small team or are already comfortable with a centralized workflow in your company or team, you can easily continue using that workflow with Git. Simply set up a single repository, and give everyone on your team push access[1]"
You did not mention if you are a windows user. I imagine that you are if you are not aware of the options to run your own git server. Of the many ways to set up a git server that are presented in Pro Git[2] my favorite is gitolite[3]. But there are lots of other ways, I recommend you take a look at the the options for yourself.
[1] http://git-scm.com/book/en/Distributed-Git-Distributed-Workf...
I don't use github. I have a local server running gitolite that I use all the time. There is a cron script that pushes all of the repos to an offsite machine just in case. And this is in addition to normal backup system with duplicity.
Which did happen about two weeks ago. My laptop let the magic smoke out, and my deja dup backup wouldn't restore.
For me, Dropbox is a simple way to automatically backup the stuff I'm working on, and I don't have to think twice about it.
It is a pity because I very seldom need git for the things I write (they tend to be quite lienar and versions are not that important, what I really need is syncing, not version control)...
I also want the .tex sources tracked but not the pdfs and certainly not the logs, aux, bbl, and "synctex" files and directories.
This is usually only a temporary measure for throw away projects that have potential. When something gets to the point that I am going to deploy it, then I will change the origin to github and push there.
I like the idea of storing my git bare repository on my dropbox, while pulling from it to another non-dropbox directory. For a private repository, it's a nice alternative to using bitbucket. But, I think it is only reasonable if I'm the only one syncing with the repository. As soon as I want to collaborate on my shared private git repo, time to use bitbucket.
With Logic Pro, I will record directly into Dropbox, but only if I turn off sync while recording. Then I can share the project with my mixer/editor in another state. But there again we make sure not to be in the project at the same time.
In short, my sense is that Dropbox is for sync and backup. It's not for simultaneous co-working.
I went to vacation with a group of people. Everyone had his/her own camera. We decided to make a folder in Dropbox and share it with everyone so we can share our photos and get other people photos.
After a week my photos started to disappear. Why? Because my lady friend didn't like the photo I took from her and deleted it from "her own computer". But it was actually in a shared folder.
I don't know if this "shared folder" concept thing is too complicated or Dropbox can not handle it. Anyway in my experience it did not work.
It is a shared folder. If someone deletes something, it is deleted everywhere. That isn't a bug, that is the purpose of Dropbox.
The idea is to drag-and-drop instead of using the console and the app to be smart enough to recognize that you´re doing and update, and instead of forks it just creates another folder for the same project. It also reduce the hassle of the SSL keys.
So far, so good. Even though I don´t know if under Box terms it´d be feasible as a business, I haven´t checked out the Dropbox API but I guess it´d be easy to implement, and I´m also cheking the Mega API (Kim Dotcom new cloud storage)s since it seems to be a little less restrictive about what you can or can´t do with the API.
So Dropbox becomes my 'server' with omnipresence on the 'net so that I don't need a VPS and don't have to expose a server at home to the world. Dropbox deleted a file? I've got the repo in other places.
Putting your working project directories inside Dropbox, editing and compiling in the same place? DOIN IT RONG
Having said that, DB is not a version control tool. Being how intelligent the HN community is I don't quite understand the point of the post: use the tool for what it's meant to be and save yourself the headache (and a blog post).
BitBucket is perfect for private repositories if you have more than 1 developer and want version control and it's free.
Git is free. github/bitbucket/whatever else is free. Dropbox is for random documents, music, and pictures, not your code.
I think the combination of git and dropbox works great.
I use git daily but I also use a syncing program (first Live Mesh, then Dropbox, now Google Drive) to sync my source code directories. This isn't at all for version control but rather so I can change systems nearly instantly without having to check everything in to a remote git server. This allows me to not care if I'm working on one of my two laptops or my desktop, all my code is Just There whenever I need to switch. With a pure git solution I'd have to push changes that may or may not be a fully coherent change set each time I switched machines.
Anyway, my point is that all of the OP's arguments are still valid when you are using git+dropbox, which is a perfectly reasonable thing to expect to do.
FWIW, all of the major sync systems have issues here (my biggest pet peeve with Live Mesh was that it would hold locks on files for an abnormally long time which would stop me from being able to compile while .o files were being synced, for example). But Dropbox's probably are the most annoying since you have so little control over what does and doesn't sync beyond the root sync directory.
Does Dropbox do merging? Does it track history? Can you run it on server(s) of your choice? Can you setup Dropbox for centralized or distributed operation? Can you inspect the source for security holes? Can you write third party clients, servers, plugins, etc for it?
For once, the headline is perfect: true in every respect and descriptive of the article.
My whole post was based on the premise that using Dropbox (or another similar sync program) and git (or another similar version control system) aren't mutually exclusive. Yet you continue to make it an either/or argument.
Edit: The fact that Dropbox won't merge just seems to me like going backwards, and makes it utterly useless for syncing, IMHO. Since git will merge, and it syncs, why do you need Dropbox?
Edit: sorry for being so tendentious (yes, I like big words :). I'm just really having a hard time "getting" Dropbox as it seems like a poor, closed source replacement for rsync. Git can be used as a glorified rsync that will resolve 90% of multiply edited files, plus it gives you change history, and you're not locked into one company. I understand that git doesn't run on the iPad, but that sounds like a problem with the iPad, not git ;) Git runs fine on not just my Android devices, but my Maemo devices as well.
I don't share my sync folders publicly at all, they exist only for my own convenience when it comes to switching between different systems as needed.
I keep my source in git, so I get proper versioning, commits, etc.
I keep all my stuff - data files, notes, documentation, agreements, tool installations, ebooks, tools/code made by others in dropbox, so they are the same everywhere.
But the git folders are outside of dropbox. The version control takes care of syncing the code, but there are all kinds of .gitignored files such as IDE path configuration and compiled binaries that differ (and must differ) between my computers. Heck, even most of the code files are different, because their line endings are converted to win or unix style.
What type of developers using DropBox for what?
The only thing I use DB for is for storing/sharing Keepass files and for shared books/resources.
Using it for source code seems wacky to me like a half step above FTP.
the problem is not just that dropbox has not addressed the issue, it is also that they have turned a blind eye to it. there is not indication whether they plan to work on it or not. what's the use of votebox if they do not plan to use it.
btw those are not 22k people, rather 22k votes. there are many people like me who have voted 10-100 times.
One thing that I might try is to have a very "Dropbox aware" process whereby you intentionally create empty delicate structures and then exclude them from sync. For example, do a `mkdir .git` before `git init`, exclude .git from DB, then do a quick `rmdir .git; git init` and pray to the God of data integrity. But I don't know if that will work.
Note that I've been using DB successfully as an up-to-the-minute backup since it came out - it's only in the last week I've had problems bad enough to go back to my weekly backups.
Auto replication to the cloud isn't a proper backup plan, unless you are counting on noticing any missing data within their 30 day backup retention policy (if you are only using their free tier) and restoring your missing data before it is automatically purged.
The responses I seem to get are "NOT if you set it up correctly!!" which is obviously true, while also somehow managing to miss my point entirely.
If you want to just one way copy something then use a solution that is ONLY one way (copy, xcopy, S3 backups, CrashPlan, etc). If you want to mirror/sync then keep a nice backup for when that goes wrong.
PS - Also make sure you know the "rules" a sync solution runs using. For example how does it decide when a file is deleting? Is it just looking at directory update time and lack of files? What if files haven't been synced yet but the folder gets updated?
Certainly don't use Dropbox as a working directing. Not Smart®
That opens up the field for that purpose, for developers.
But I see where it might come from.
When my startup started, my associate nagged me to death to me put my files on Google Drive, like the artist already did.
I ended doing it, just to show him that it would not end well...
In fact, the result was worse than expected, Mac OS X store folder icons inside the folder, the SDK I was using use ALL files in a folder to build a application (does not matter what those files do), the end result was the Google Drive created icons getting shipped with the apps, that just flat out crashed the testing devices... It took 1 week to figure out why all the crashing, and also to make Google Drive not conflict with some other stuff, hardlinking was required, and took more 3 days to undo the hardlinks.
Thus, lesson: DON'T, JUST DON'T.
But sometimes a person might nag you to do it, then by all means do it, it will fall on their head and they will learn (of course, if it is a intelligent person, if you have a dumb boss, then I fell sorry for you).