views:

2974

answers:

14

I'm a lone developer at the moment; please share you experiences on what is a good VC setup for a lone developer.

My constraints are;

  • I work on multiple machines and need to keep them synced up
  • Sometimes I work offline

I'm currently using Subversion(just the client to a remote server), and that is working ok. I'm interested in mecurial and git DVCS, but none of their use-cases make sense to my situation.

EDIT: I've migrated my active development to Fossil http://www.fossil-scm.org/ after trialing it with a client. I really like the features to autosync my repositories(reducing accidental forks), the documentation support(both wiki and embedded/versioned) that supports my need to document the code and the project in different spaces, the easy to configure issue tracker, nice access control, skinnable web interface and helpful community.

+7  A: 

Subversion works great (especially with TortoiseSVN). I don't think any distributed VC would have an advantage in a single developer scenario.

Edit: I hadn't noticed the "sometimes I work Offline" part when I originally replied. In that case, I suppose you must weight the added complexity of a DVCS with the fact that it gives you offline history / revisions.

Pat
I'm interested in how *you* *use* svn.
Stephen
git is fantastically easy to set up for one person, you only need one directory and one set of tools. There's no server required.
Wesley Tarle
Even without working offline, DVCS do have strong advantages on centralized ones. Creating a repo is far more easy as well as working in parallel on multiple branches.
Nowhere man
I use TSVN alone, hosted on the same computer as the one accessing it..
krebstar
+1  A: 

SourceGear Vault is free for one developer and is very good.

Galwegian
Why is it good for a lone developer?
Stephen
Great. Would you really choose a VCS that you can't use anymore when someone is ready to help you?! Seems insane to me.
Nowhere man
+2  A: 

This kind of similar question has been posted in this forum by someone else over here

Codeslayer
+25  A: 

Working offline absolutely makes sense for Git. You can browse your entire history, make commits, do merges, create branches, essentially do everything related to your repository offline. Furthermore, you can set up a central repository which is the "master", that is you will push all your changes to that central repository. That way you always know where the latest code is, but you also get the benefit of being able to send changes from one machine to another if you ever need to.

I recently converted all my 80+ Subversion repositories to Git, and I haven't looked back.

Greg Hewgill
likewise, recently migrated all my private cvs repos to git. perfect to use for any local directory you may decide to version, or push your repos up to github.com or assembla.com for use across many machines.
tardate
seconding on git, fantastic and powerful.
Valentin Vasiliev
Agreed... I keep a central copy of my source on GitHub and push a backup copy of my repo to a USB key
Jeff Fritz
but SVN can run locally too.
Seun Osewa
+3  A: 

I always recommend darcs for this situation (here's my answer to a similar question) as its command line user interface is a joy to use and joy is what I want from my own development :)

Git comes bundled with some workable GUIs, but I've found it too unwieldy in comparison to darcs when I hit the command line to use for personal projects.

Either will satisfy your need to work offline and they're both easy to synchronise changes with.

insin
+1  A: 

i recommend assembla.com - they provide free svn , wiki and trac. Cant get any better than that!

Chii
they also support git
tardate
+2  A: 

Subversion requires access to a centralized repository. If you are working offline and from multiple machines, that means you cannot make revisions while offline.

A bare bones Unix solution would be to keep a history inside the working dir with RCS, and synchronize the working dir (including history) between different machines using Unison. The main caveat would be that, if you switch machines, you would first need to sync them before you start committing new revisions. If that is a problem, you best look into a real DVCS.

Bruno De Fraine
cool tip! I didn't know about unison.
Stephen
+13  A: 

Bazaar: See the solo use case and Bazaar in 5 minutes.

Especially for offline usage, a distributed version control system is the way to go.

blueyed
Ditto for Bazaar, also it seems to work over DropBox so you can sync on multiple machines for free.
johnstok
+1  A: 

If you're comfortabel with subversion, i suggest you have a look at SVK

Conrad
+37  A: 

Each person will probably tell you that their favorite DVCS is the best for you. I would tell you Mercurial is the best! ;-)

But that's crap. You definitevely need a DVCS, but try them all, or at least the mostly used ones, and make your choice by yourself. Choosing the DVCS that you know a guru for is also a sensible choice, BTW. I'd recommend trying (or reading the documentation of) at least Mercurial, Git and Bazaar. SVK may have the desirable feature that it's designed to interact with SVN, but last time I checked they had nasty performance issues. Git also has some SVN interaction plugin, AFAIK.

Nowhere man
I know it doesn't have the most votes. But I like it.
Stephen
Hg also has an unofficial package called "hgsvn" to interact with a svn server. It isn't as mature as git's though, for instance it wasn't able to clone our repo - switched to git and never looked back.
Greg Rogers
@Greg: try hgsubversion instead of hgsvn: http://bitbucket.org/durin42/hgsubversion/ It's a two-way bridge between Mercurial and Subversion.
Martin Geisler
+1  A: 

You may find the answers to the question I asked helpful: alternative to VSS for a one man show (army of one?):

http://stackoverflow.com/questions/31627/alternative-to-vss-for-a-one-man-show-army-of-one

Booji Boy
+2  A: 

You have to try a DVCS (or what i call a peer2peer VCS). I'm agree with nowhereman. Don't waste time with svn and all the soft made arround it to make it sort of useful. A DVCS it's more intuitve that the old and deprecated client-server style. SVN doesn't know what is a tag, or a branch. For Svn all are just copies.

For example: it's so dificult to implement a tag as a synonymous of a revision number.

In mercurial a tag is just that. You can't keep tracking versions of a tag as you can in svn.

Read here dvcs guide to start. Then you can use svk, mercurial aka hg or git. But please don't go back in time

damian
+13  A: 

Might I suggest a rather new version control called fossil.

This is not a me too project, it is written by Dr. Richard Hipp, same guy who did SQLite. The whole repository is a SQLite file, so it is very solid. You have a wiki and a ticket system built in. You can have many users with varying rights, so you can for example give your users right to issue tickets but not view source code.

This is pretty simple, straight forward and it works as a distributed system, meaning you can clone and checkout locally and remotely.

More info can be seen on http://www.fossil-scm.org/ and if you look closely you see that the whole site is actually fossil.

One thing that really impressed me with fossil is that it is just one file, thats it. The whole fossil program is rather small, but considering who the author is, that is not really a surprise.

And since your repository is a sqlite file, you simply copy it and you have a backup.

Trausti Thor Johannsson
You may be interested in [Monotone](http://www.monotone.ca) which is another DVCS which uses SQLite as the backend storage. From my own experience I must concur that it is really nice to so easily be able to backup or copy an entire repository.
Jack Lloyd
Fossil is awesome!!! I have never seen an app like that before, such simplicity and flexibility!!!
zengr
+1  A: 

I'm a big fan of distributed version control. I've played around with git, mercurial, and bzr, and I now use git for all my projects. All three of these are great for personal use because it's so simple to create a new repository on your computer. You don't have to run any servers.

Here are a couple of ideas for sharing your repository across multiple computers. 1) Use some hosted service like github. Usually these are free for open source projects and low fee for commercial projects. We're using github at work. 2) Use dropbox to create a shared internet-backed up disk that all your computers can access. It's free for less than 2 GB. (If you're on Ubuntu, Ubuntu One is another alternative.) Put your master git repository on dropbox and then put local repositories on each of your computers. (So, dropbox plays the same role as github.) It's completely free, allows you to work offline easily, allows you to share the repository with other developers later if you need to, and it's backed up automatically.

Also, if you really want to use SVN, look at a hosted solution like cvsdude (despite the name, they do run SVN) rather than running your own server. You'll be able to access your code from anywhere, and it will only cost you ~$5-10/month.

Clint Miller