How can one setup a version control system on a lo

2019-05-07 11:48发布

问题:

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.

回答1:

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.



回答2:

The best free CVS/SVN tool is SVN.

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



回答3:

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



回答4:

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 =)



回答5:

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.



回答6:

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.



回答7:

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.



回答8:

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.