Which version control suits best this list of requirements - windows

Our dev team is small (3 developers) and windows based.
I'm looking for a source control that can do the following:
Check out files for editing and warn others that file is used
Check in files and merge if they have changed
Split baselines for release versions and merge baselines if needed
Visual Studio integration
Can work over WAN
Thanks.
SW

Team Foundation Server fits all of those.

SVN would be great, as long as you use locking (normally the server has no idea what clients are doing by default)
Perforce might be a nice one to look at which does this more by default.
Both have VS integration, SVN especially.

SVN, provided that you explicitly lock the files. This is not by default, but you can easily lock the file via SVN commands or via TortoiseSVN.
VisualSVN provides the Visual Studio integration.

If you want good Visual Studio Integration, then check out Microsoft Team System. You didn't specify if you wanted free or commercial or how critical Visual Studio intergration was.

git will do almost all of it. Not sure about integrating it with Visual Studio though. there might be a plugin for that.
Reasons:
No central server needed. If you want one, you can have one, but it's not necessary
You can push/pull changes to the others at will.
Each of you can have your own local branches, and push only the ones you need to
each other. Branching/merging is easy enough to do branch-per-task. Then push just that task to a co-worker if needed.
Unlike SVN, only one directory is needed for git, in the top level of the directory structure.
git stash rocks for when you have changes in your current branch, and need to switch to another for a while. This is one of those things you don't miss until you don't have.
Merges are awesome.

Related

Syncing Visual Studio project

I have a Visual Studio project that I want to work on in two computers.
I'm looking for how to sync the project between the computers.
I have a few options, and I'm open to other suggestions:
Dropbox
OneDrive, which is integrated nicely in Windows 10.
Github, although I'm not sure if it is used for this purpose, and don't want my code to be public.
What has worked for you?
Thanks!
If you use Visual Studio, then Visual Studio Team Services is good for you.
For source control you can use TFVC or Git and it's free (for team up to 5 people) and repositories are private.
GitHub is a nice choice, not only to share between machines, but mainly as version control.
Also, if your version of Visual Studio supports it, you could use TFS - the versioning integrated to it.
OneDrive or Dropbox doesn't have version control - once your project grows, you will notice it is really needed.
For source control I would prefer tortoise svn (over git and bitbucket) - because it's easier to use.
For data replication / sync - google drive. Its similar to microsoft one drive, but bit faster.
Oh common - downvoters ! :-) I know you're absolutely love git, but unfortunately it's too over abstract, lacks of proper error handling, to difficult to use.
We can skype if you think otherwise, and I can prove it to you.

Migrating an SVN repository to some distributed VCS (Git or Mercurial)

From my previous question I understood that I have to change my SVN repository to a distributed VCS.
So, currently, I:
have an existing SVN repository,
use Visual Studio 2010,
use VisualSVN for both client and server.
I want to:
convert both client and server sides to a distributed VCS,
keep the history,
still have a handy Visual Studio plugin for the new VCS.
My questions:
What VCS is better to use?
How to convert the repository from SVN to another VCS?
On client side, I should likely just "recheckout" using new VCS plugin?
I have a positive experience of transitioning from a centralized VCS (Team Foundation Server) to Mercurial, via SVN. So I guess this is applicable to your case.
hg convert can convert your SVN repository into a Mercurial one, keeping history and branches (provided you were sticking to the usual branch/tag layout in SVN).
TortoiseHg provides excellent integration of Mercurial features into Windows Explorer, along with the visual tools like DAG renderer, source tree browsing, and annotate/blame tools. And the same time, TortoiseHg keeps the command-line hg program, so you're free to mix the GUI and the CLI.
VisualHG, being based on TortoiseHg, integrates Mercurial repository support into Visual Studio 2008/2010, adding, removing and renaming your solution files as you make changes in the Solution Explorer.
This set of tools provides quite good support for most medium-to-large projects. However, if your project is very large, or it contains a lot of big (tens on megabytes) binary files (say, media), or you plan to regularly put built binaries under source control, this might render Mercurial hard to use.
In this case, you might want to use additional tools, like Mercurial subrepositories and largefiles extensions, or consider another VCS (Git).

Setting up BitBucket and Mercurial for Use In a Group Environment

My company is currently implementing a versioning system using Mercurial and BitBucket. We currently have respositories set up on bitbucket and are able to use them, but our work processes for doing so are a bit clunky. We use Visual Studio for web programming in .Net. Currently, we have set up a cloned repository locally and work from there. We can do this using Visual Studio with VisualHg.
In order to edit files we open them in Visual Studio from the local repository and make our edits. We then commit our changes to Hg, which updates the repository as it should. Then we need to FTP the files from our local system to the DEV server for testing and then FTP again to the Production server once QA is completed and approved.
It would help streamline things if we could have the BitBucket repository synced with our DEV server so that all that was required is to commit changes for testing in DEV, bypassing the otherwise necessary step of locating and FTP'ing all relevant files.
Does anyone know if this is possible? If so, can you point me to any documentation that would show me how to set this up? Our developers would be eternally grateful. Thanks for your time.
In my opinion, using Mercurial is not the correct solution for this problem.
The main reason for it not being the correct solution is that the files that are in Mercurial are not the files that you want on the production server and so aren't the files that you want to use on your development server (because you want the QA environment to be as close to the production environment as possible). There are no assembly files stored in Mercurial (or there shouldn't be) and those are the files that the server should be using to run the application.
There are deployment tools built into Visual Studio that you can use for this task. They can be configured to upload all the necessary files with one button click.
Scott Hanselman has a post on his blog about this.
Troy Hunt takes it one step further by introducing a build server with this excellent set of posts. It uses Subversion as the repository but it can be done using Mercurial too.
I prefer the build server method as, once you have it set up correctly, it makes it 100% reliable. It will do the same thing every time you ask it to do the deployment. If you use Visual Studio to do it the developer doing the publish could choose different options and get it wrong.

Using Subversion and Visual SourceSafe in parallel?

In my company, we use SourceSafe and Visual studio. Starting up a minor project, I am eager to try a more modern source control, I am aiming at Subversion. But I need to work with the previous projects in SourceSafe, at least for now.
Q: Will it work well to use both SourceSafe and Subversion in the visual studio IDE? Using what? And are there things in Subversion I may feel painful if I am used to SourceSafe?
Regarding your first question, I don't know of anything that would stop the two working side by side. You can try Ankh for a free SVN VS add-in, or VisualSVN is a commercial option.
Regarding your second question, SVN has a different model than SourceSafe. SourceSafe requires checkout (pessimistic) whereas SVN you just change your files and commit when ready (optimistic). Any conflicts will need to be merged. Other things differ as well, and you should definitely read basic SVN documentation before you start using it. TortoiseSVN provides both excellent Windows shell integration and good doco too.
PS. Once you try SVN in earnest, you will never look back to SourceSafe.
There shouldn't be a problem using Visual Source Safe and Subversion side by side. Visual Source Safe keys off .scc files within the folders. I also believe the source control is stored in the project files. In any event, Visual Studio automagically handles Visual Source Safe integration.
Subversion (TortiseSVN really) stores all it's metadata in .svn folders. When you install Ankh or VisualSVN, these programs target the .svn folders. If you load a project that has .svn folder anywhere in it's folder structure, Ankh or VisualSVN will kick in.
I agree with other posts, once you turn to Subversion you won't want to go back. It takes a little getting use to. Spend sometime, if don't know already, learning merging and branching. It will serve you will moving forward.
After you get subversion up and going, you might want to look into continuous integration. Cruise Control.Net would be a good tool to start.
Best of luck!
Using SVN technically, won't be an issue - especially with Tortoise +VisualSVN (latter not free but cheap).
The headspace change in going from the usual VSS way of working - pessimistic locking - to the SVN/rest of the world style - optimistic locking will be the harder hurdle.
To explain a little less concisely - if you are used to locking a file when you 'check it out' so noone else can change it, or at least everybody else knowing you are working on it before they try to make any modifications it is quite a leap to go over to not knowing until you try to commit - at which point you have to do merges.
Merging is the tricky bit sometimes, purely conceptually, but especially merges for Winforms with the designer auto-code and the resx files...
Think very carefully about your branching strategy. Best to start just working directly off of trunk to get used to the software before deciding to go for merging. You will find a lot of things quite repetitive and manual compared to VSS - we have a coupla guys here who admin the SVN servers and thay have been invaluable in writing scripts and add-ons for Tortoise to take some of the pain away...
In Visual Studio Tools | Options you can select the source control provider from in there. We used to swap between VSS and another provider some years back and all we had to do was change this when we loaded to project.
If you're using SVN, I would highly recommend looking at VisualSVN for integration in Visual Studio. (Although read comments below...)
I've used TortoiseSVN and SourceSafe in parallel with VC6/VB6 projects in order to keep a parallel log of changes with Subversion (for various reasons, but mainly for keeping proper track of revisions) until we were able/prepared to switch fully to Subversion. I had no problems, I only had to keep an eye for new files coming from the SourceSafe repository.
Working with Visual Studio .NET is a different ballgame if you install AkhSVN, which I did. I worked with it for a few months and ran into problems when AnkhSVN automatically kicked-in when opening SourceSafe-controlled projects. Just avoid mixed SVN/SourceSafe projects with VS.NET, or don't install AnkhSVN.

Free distributed source control with visual studio integration?

I'm looking to move to distributed source control since I use multiple computers and often work offline. What if any distributed source control systems integrate with visual studio and how good is the integration?
Have you considered using Git? You can host open source projects on github for free.
For integration please refer to Using Git with Visual Studio which indicates it is possible.
I'm not sure about integration with VS but I have used the excellent Tortoise Windows Explorer plugins. We use Tortoise-CVS and SVN all the time and they are fast and reliable.
They do a Tortoise-Hg plugin for Mercurial as well.
It may sound funny, but I rarely use my VS integration even though I have one.
Tortoises and command line work great, and Bzr and Hg have workable tortoises.
AnkhSVN does the job nicely for me and my team.
Jared,
If you need distributed and VStudio integration, then you're talking about Plastic SCM
The whole GUI is integrated with VStudio 2005 and higher, and SCC integration is available starting with VStudio 6.
It directly supports renaming and moving files from VStudio too.
Plastic SCM is free for students, for open source projects and most likely you can get some free licenses for personal projects too.
There is VisualHG too, with TortoiseHG it is a Visual Studio Plaugin.
I use subversion and tortoisesvn. For integration with VS, I use VisualSVN which does cost money but it pretty cheap and works flawlessly. There are free subversion source control provider packages for Visual Studio and I tried a few but VisualSVN worked so much better so I went with it.
I like using KilnHG (which is an online wrapper around Mercurial) - it's free for small numbers of developers from what I can recall.

Resources