Introduction
Not so long ago, one of the projects in which I participate was transferred from SVN to TFS. This project (tens of thousands of files, including binary files) has lived and developed for SVN for many years. After working a few months after the transition, there was some experience that I want to share.
It is important to understand that this is a person’s experience after SVN. I used
TortoiseSVN (a plug-in for Windows Explorer) and
AnkhSvn for Studio.
my impressions under the cut
Version Control System
TFS (version control system) is not exactly a version control system — it's part of VS. After SVN it is somewhat annoying. If I have 3 studios, then in order to understand what TFS I have is up and running, additional efforts are required.
')
Read-only.
I got used to that no project files are “read-only”, therefore (if it costs at least VS2012) you try to include “local mode”. So keep in mind that although this mode does not set “read-only”, it also works as it will. Starting with a certain number of files / folders (50,000) in the workspace, this mode is not recommended (read does not work). Details
here .
Apparently the number of 50,000 depends on the computer.
VS2010 Studio (or TFS2010?) Does not have “local mode” at all and it means that all files on the disk will be “read-only” (welcome to the old world of SourceSafe (VSS)).
Windows Explorer Plugin
TFS has some plagin, for example,
Microsoft Visual Studio Team Foundation Server 2012 Power Tools , but I know a few nuances. There are several studio versions on the computer, and only one Power Tools (I wonder what version?). Power Tools is not friends with the studio: when I close the studio and at this time I run “Get Selected Item (s)” I get the error “TF400324: Team Foundation services are not available from server ...”. Power Tools cannot bring a new brunch from the server to the computer, for this you still have to start the studio.
Mark the revision as if it were detained.
Simple situation: there is version 1 in production, version 2 was created from it for development. The bugs that are being repaired in version 1 are merged into version 2. Quite often, some revisions do not need to be merged from version 1 to version 2. In SVN, this is done by selecting one check box “Only record the merge”. After that, SVN shows these revisions as locked up. So I did not find such an option in the TFS UI (Power Tools or VS), only by the command line indicating all important parameters and revision numbers. Such a path automatically requires a special neat person. An interesting point is that if you specify only the number of one revision, TFS actually mark all revisions starting with the specified.
Many revizin merzh (I do not know how it is correct in Russian).
If in version 1 the repair of a bug required several revisions (but not in a row, for example, there are others between these revisions), then a method was not found (even through the command line) to hold all these revisions into one revision of version 2. This also applies to revision revisions and “flag as if they were imprisoned. ” I remember I had to urgently roll back two revisions (not in a row), just to check a certain feature (without commits). I did not find a way!
Switch.
I used to create brunches for any things that would take some time or checks on a test machine. Since the brunch is heavy, from the point of view of bringing it to the local disk, I created one brunch on the disk and every time I made the Switch to the brunch I needed. In my conditions, it takes a maxim a few minutes. TFS does not have a switch via UI. The command line has something similar, but at most it can be used in some permanent scripts, but not by humans.
Search / Filter by history
TortioseSVN has a simple and clear search (and filter) for the history of brunch, which allows you to quickly find the necessary revisions. You can build complex conditions (author revisions, number, comment, etc.). There is nothing the same built into TFS. It's hard to search. Very hard to look for: (.
Intermediate conclusion.
In my conditions, the transition was painful: many things take significantly more time.
I admit that maybe TFS have some other ideology and some things are done differently (for example, shelve), but the general impression is that TFS is not yet ready for SVN as far as possible.
If it is interesting, you can add a little more and it is interesting to discuss the transition to other parts of TFS (testing, building builds).