4

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.
Joel Coehoorn
  • 399,467
  • 113
  • 570
  • 794
Andrew
  • 3,524
  • 5
  • 35
  • 50
  • SVN technically doesn't need a "dedicated" server iirc. I have used it in the past without needing a persistent process (using filesystem or svn+ssh). However a solution like Git is much, much better at this. – Matt Dec 03 '09 at 22:27

8 Answers8

3

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
  • 24,862
  • 16
  • 85
  • 145
1

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
  • 219,715
  • 46
  • 258
  • 445
  • 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 Dec 03 '09 at 22:26
1

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
  • 21
  • 1
  • 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 Dec 03 '09 at 22:31
1

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
  • 5,855
  • 33
  • 44
  • "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 Dec 03 '09 at 22:36
  • "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 Dec 03 '09 at 22:49
  • 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 Dec 03 '09 at 22:50
  • 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 Dec 03 '09 at 22:54
  • Ah, so why not just do not turn off one machine and blow out your headache? – Restuta Dec 03 '09 at 23:09
1

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
  • 7,216
  • 5
  • 33
  • 57
  • Thank you from that helpful insight :), I think that if no knows an alternative to Git, I will be forced down this path. – Andrew Dec 03 '09 at 22:38
  • You can setup an SVN repository on the file system without a server. Tortoise even has a menu entry for this. – sbi Dec 03 '09 at 22:39
  • @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 Dec 03 '09 at 22:52
  • 1
    @sbi: but can it be used with multiple developers? – Agent_9191 Dec 03 '09 at 22:54
  • @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 Dec 10 '09 at 09:52
0

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.

CaffGeek
  • 21,856
  • 17
  • 100
  • 184
0

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
  • 10,724
  • 2
  • 33
  • 50
0

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.
  • 6,664
  • 1
  • 33
  • 48