Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been thinking recently about how and where I keep my code - I work across multiple locations, with at least three different computers and I'm considering how I manage my code across these machines.

I've got a dropbox account, which I use. For non sensitive files this is fine, and I do keep some sensitive files in there, but in a TrueCrypt file - this won't work large scale as the entire TrueCrypt file would need to be uploaded for any change. I don't feel safe putting my, or my employers, code on DropBox because of several security issues and news that they can access everyones' files.

I have a github account where I store my code (open and closed source), but I don't want to have to always push up to GitHub, also I work a lot on the train so I can't push as I don't have a stable data connection and chances are that I'll forget to push or grab data at some point and then I'll be stuck!

So - with that in mind, I'd like a discussion about storing code in the cloud:

  1. Is keeping source code in the cloud dangerous?
    • I understand the implications of keeping employers code in the cloud, but are there alternatives, given that a good number of VPN/RDC solutions that I've used are slow to the point of unusable? (this may be a point against my/my employers network speeds rather than the actual programs - but it's a impediment)
  2. Is there a good cloud based service with good encryption, good uptime, diff, auto sync?
    • Is there one aimed solely at developers? If not, does anyone want to start one with me? (joking but at the same time, it could be a good business venture - drop me a line if interested)
  3. What do you use? Does it work? how would you change it?
share|improve this question

closed as off-topic by gnat, Robert Harvey, psr, MichaelT, Dynamic Aug 6 '13 at 13:51

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, Robert Harvey, psr, MichaelT, Dynamic
If this question can be reworded to fit the rules in the help center, please edit the question.

What do you think the difference is between storing it "in the cloud" as opposed to a repo like github? Do you mean a hosted IDE? Those exist and you don't need water vapour for it. –  Steve Evers Sep 21 '11 at 13:17
No - cloud based file storage. Ideally this will be my immediate working zone, which is auto synced across computers - I'll then commit/push to github once the code is in a fit state. I'm not interested in hosted IDE as I'm not always going to have web access. –  Martyn Sep 21 '11 at 14:27
You say you have an erratic connection which limits github or similar. How are you expecting something like Dropbox to work any better given the nature of the connection? –  Jon Hopkins Sep 21 '11 at 15:08
I'm happy for my files not to sync whilst I'm in transit, but when there is a connection I want instant auto sync. This is what happens with dropbox - I can work on the train but when I back at home and open my laptop, one the network connection is made the files sync and are on my desktop almost instantly. –  Martyn Sep 21 '11 at 15:15
add comment

6 Answers

Given your statement that "I work across multiple locations, with at least three different computers", I'm going to assume that DVCS is pretty much a requirement here as you don't say it explicitly. At least it is for me as I'm in the same boat. I know this may seem like a "duh!" statement, but I wanted to get that established first.

So to your questions:

  1. This is really going to be up to you, or at least I don't have any hard facts to persuade you to either choose or avoid a specific service. You say that you use GitHub. Although I do not use Git (I use Mercurial), I would call that a safe bet from what I read about the service. (Sorry, I know this answer may not give you much to go on.)
  2. I use BitBucket (Mercurial) and can say that it offers what you want, except for auto sync. Wouldn't auto sync be a function of your client though? Unless you write your own DVCS (at which you admittedly hint), I don't think you'll find that solution as a function of the cloud-based service you seek.
  3. As I said in #2, I use BitBucket (as well as a secondary machine at home which I also push to as a backup). It works wonderfully and, given my current needs I wouldn't change a thing.
share|improve this answer
In the question, he notes that he already uses github. –  Steve Evers Sep 21 '11 at 13:31
@SnOrfus: github is still a good answer to the question. –  Bjarke Freund-Hansen Sep 21 '11 at 13:54
I'm guessing @SnOrfus is commenting on my DVCS part. I was simply clarifying that he's basically looking for DVCS hosting. –  Chris Simmons Sep 21 '11 at 13:59
The concept that I like most about dropbox is that as soon as I save a file, I know that when I next connect to a network I know it'll be synced across all my computers. this means that I can work on the train, get home and open my laptop next to my desktop and see the files sync instantly which means that I have minimal downtime between with literally zero hassle. This noncommited-code syncing is the service I'm after, whilst also retaining security, speed, convenience etc. The use of a DVCS I'm sold on and I'm committed to. –  Martyn Sep 21 '11 at 14:34
@Martyn: You could write a small windows service that polls github for the latest revision number on the project and pushes your changesets. –  Steve Evers Sep 21 '11 at 17:57
add comment

One solution I can think of (especially if I was in your position) is to just set up a private server somewhere and completely edit / save / test your code there via RDP to a VM or something. This way, even if your connection is spotty, you don't risk anything happening to the code. But this might be overkill and unnecessary.

Also, not a cloud solution per se, but a somewhat viable alternative if you plan on copious amounts of off-site programming.

share|improve this answer
Agreed. I have a private server and like that flexibility. If this is an option for @Martyn, it takes care question 1 in my book. –  Chris Simmons Sep 21 '11 at 13:25
+1 This works, but IME: even with a good connection, it's slow. Note, that disconnects will kick you off RDP though, which will get annoying really fast on a spotty connection. –  Steve Evers Sep 21 '11 at 13:47
@SnOrfus: agreed, it's not a speed demon. However, given the DVCS angle and that I only need to push every so often to get the server up-to-date, it's not as big a deal as if I were using, say, a SVN server at home. Then the speed issue plays a bigger part. –  Chris Simmons Sep 21 '11 at 14:01
Unfortunately this is a untenable solution as I do a lot of my coding whilst in transit. Thank you for your answer though –  Martyn Sep 21 '11 at 14:38
add comment

The cloud is an abstracted group of shared resources, with the benefit that you can quickly and easily scale. You do not need rapid scaling just for code storage, so "cloud storage" is not the right solution for your problem. You are just looking for remotely accessible storage, which you're already using.

It would be useful to define what you actually mean by "cloud-based storage", since there are many definitions:

What is "The Cloud"? What do I say when people ask if my web service is "on the cloud"?

share|improve this answer
Sorry - I thought my explanation was sufficient. I'm looking for a solution which give me the ability to store code on a remote server and which will automatically sync between multiple computers. Ideally I'm looking for a secure service which has an active userbase making plugins (pref of a tech/developer friendly nature) - I already use Github and push code incrementally there, but I need the solution to automatically and instantly sync changed files between all my computers (much like DB does, but without the security and privacy implications that DB has) –  Martyn Sep 21 '11 at 14:42
It seems to me that the only thing you are missing is the "automatic" part, since you can already do everything you've listed manually with GitHub. Perhaps a low-tech script to poll GitHub and fetch changes would work for you? –  M. Dudley Sep 21 '11 at 15:19
add comment

My recommendation, which I am planning on doing myself, Is setting up a subversion repository on a FREE TIER at amazon or azure and working from there.

Once the free tier is over, I can just upgrade to a small instance and remember, the instance does not need to be up all the time, only when I am either checking in or checking out the code. This will keep costs down, and keep me in complete control of my repository and my security.

For work stuff I prefer doing it like this rather than using github or the likes. You can even set up a VPN to access your repository. Its actually pretty cool the choices it gives you.

share|improve this answer
add comment

I'm trying out BoxCryptor on top of DropBox, with automatic aes-256 encryption of all individual files (including their names). Haven't thought yet about using it in conjunction with a version control system, but for securely syncing files across workstations it seems to work well.

share|improve this answer
add comment

First of all, cloud computing comes at a cost and it's not that cheap as of now. There are numerous provider of cloud computing service. One that comes to my mind is Amazon.

As far as the security is concerned, they are pretty secure until the Service provider isn't the culprit. Working with them isn't that simple, you will definitely need to go through a learning curve to make better use of them

share|improve this answer
Not really interested in cloud computing - more storage and the use and implications of it. –  Martyn Sep 21 '11 at 12:41
Yeah, he's really looking for a cloud-based solution for his revision control. –  Chris Simmons Sep 21 '11 at 13:23
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.