views:

251

answers:

8

Edit: Ok so I learned that I guess I need an distributed source control, however are there any UI based ones, and do they allow you to merge with other users on the network?

This is kind of a two part question, so here it goes. I want to start developing a web application at home (with multiple developers). However, I don't have a dedicated server nor want to pay for on.

So first, I don't know which version control system to use for this case, as at work we mostly have TFS setup, so I am not to familiar with whats out there. What are the best free CVS/SVN tools out there?

Second, is it possible to somehow setup the CVS/SVN where there is no dedicated server and both clients store up to one week of the source code from the last check-in?

Also, it would be helpful if it could integrate with visual studio, again this isn't that important at all.

Problem:

There are Five users, one is a Server.

Server Connected: All Ok

Server Disconnected: No one can share.

What I am looking for:

No Server:

  1. Users still have versioning based on version id of last check-in.
  2. Users must check all version on network to make sure they aren't outdated based on their last version id.
  3. If not check-in, otherwise merge/get latest.
  4. If they are update checkin, and set current version id +1.
+3  A: 

If your looking for a source control that DOESN'T have a central repo, you are looking for a distributed source control system such as Git or Mercurial.

Neil N
Would either of these work across multiple computers, and have a small learning curve?
Andrew
Git - A nightmare to learnMercurial - works just as you would expect(just my two cents)
Erik A. Brandstadmoen
or Bazaar. (I would not recommend using less known DVCS like Darc or Monotone unless you have specific requirements that make it better to use them)
Jakub Narębski
@Erik: not true. See e.g. http://stackoverflow.com/questions/1598759/git-and-mercurial-compare-and-contrast/1599930#1599930
Jakub Narębski
I have been going through the Git tutorial @ tekpub.com and it seems this is the closest thing to what I am looking for, thanks Neil.
Andrew
+1  A: 

The best free CVS/SVN tool is SVN.

Plus it's easy to setup an SVN server on any machine. Read the fine manual.

sbi
I want to avoid having a central repository, to avoid having to lose at least (1 weeks) of work like I mentioned. And setting up a server constantly if one computer goes down, since they are home machines.
Andrew
A: 

TeamCity for continuos integration by JetBrains is nice, easy to configure, and you don't need a "server", just a machine that's on. It integrates well with subversion as well. Which is a snap to setup with VisualSVN server. And the VisualSVN plugin for Visual Studio.

Chad
But, this doesn't meet your "no dedicated server" requirement, which I somehow missed reading
Chad
+1  A: 

I assuming that at some point your developers will connect to each (perhaps on your LAN) to merge all your code. If this is the case I would highly recommend using a DVCS (Distributed Version Control System). The popular kid on the block is Git, but there are others like Mercurial. If you primarily develop on windows Mercurial seems to have better support. The main benefit of a DVCS is that they are designed for teams that are disconnected.

Hope that helps.

Rom

rvelasquez
Hi Rom, yes after reading what Neil N said, I went and started read up on this. It seems like its just what I want (http://en.wikipedia.org/wiki/Distributed_revision_control). It seems like both of these have a steep learning curve, and I will be working on this with beginner programmers, is there any ui version. Two, can you merge changes when connecting to the internet with another user?
Andrew
+1  A: 

You should probably be interested in VisualSVN server. Its has free edition witch will be sufficient for all your needs. By the way, toroise SVN supports even repositories on any folder or a flash drive, so you have no need in a separate server. As for inrtegration with VS, Visual SVN can help you, but it is not free. Enjoy =)

Restuta
"By the way, toroise SVN supports even repositories on any folder or a flash drive." Does this mean it doesn't require a server though?
Andrew
@Andrew: Yes, it does.
sbi
"You can setup an SVN repository on the file system without a server. Tortoise even has a menu entry for this" Do you think you can point me to a tutorial or something that shows me how to do this?
Andrew
It does, but you will never think about, it will create a virtual server on you machine, but several users can use it only by sharing this folder via intranet and pointing in Tortoise setting path to this folder to use it as repository.
Restuta
But the problem with that is if there are 3 users working and the 4th which is the "virtual server" is offline, then those 3 users can't check-in to each other and get the results. I guess that's what I am trying to solve :).
Andrew
Ah, so why not just do not turn off one machine and blow out your headache?
Restuta
+1  A: 

For a low learning curve, it's easiest to make use of SVN since it's closes to the TFS model. But that also means a dedicated server. I would suggest VisualSVN server as it's dead simple to set up. Then you would need to expose the port it's running on externally to the other developer(s) outside of your home network. And for integrating with Visual Studio, look at AnkhSVN. Or stick with conventional clients like TortoiseSVN.

That would mean that any remote developers would be slowed down when interacting with the repository. That's where options like Git come in, but there is definitely a bit of a learning curve with it when you're used to a centralized repository. There are tools to bridge Git to SVN to get the best of both worlds. I have not tried to use them in a Windows environment, so I won't speak on how easy they are to use. I'm only just getting started in using Git for projects, mainly for situations where I cannot set up a repository elsewhere.

Agent_9191
Thank you from that helpful insight :), I think that if no knows an alternative to Git, I will be forced down this path.
Andrew
You can setup an SVN repository on the file system without a server. Tortoise even has a menu entry for this.
sbi
@Andrew: the only alternatives to Git that I've heard about are Mercurial and Fossil(http://www.fossil-scm.org/index.html/doc/tip/www/index.wiki).
Agent_9191
@sbi: but can it be used with multiple developers?
Agent_9191
@Agent_9191: If they share access to the file system this has been setup, then I believe SVN has been designed robust enough so that multiple clients can directly operate on the same repository. I would, however, strongly advice against doing so.
sbi
A: 

Have you considered using an online hosted solution? That way you don't have to worry about setting up a server, managing backups etc. There are services that offer this for free - one that I have tried myself is Beanstalk, which uses Subversion and has a free plan for up to three users with 100 MB of space. Useful for smaller projects.

Anders Fjeldstad
A: 

As some of the replies indicated, distributed version control like Git or Mercurial is what you need. Maybe if you can explain how is your distributed team is working, another possible solution can be suggested.

For example, you mention about setting up work from home and have team at work which used to using TFS. Maybe if your work set up is consisting of most of your team at work and you alone working from home, then you can do something like:

  1. Have SVN at work where all your team mates work with, addressing issue of complexity and learning curve
  2. You can use git-svn at home, where you have local repository of the svn server at work and you still be able to work locally and make all kind of changes and branches..and merge only the changes you want to the work SVN repository.
DJ