Very large repositories with Plastic SCM - plasticscm

We are investigating Plastic SCM as possible alternative to Subversion for version control with our products. We have a very large number of binary assets (mainly art assets, but also includes some documentation, AVIs, etc.) in addition to a very large source code base. Just to put a number on it - a svn checkout of our HEAD revision of the trunk branch takes a little over an hour and has a size on disk of ~9 GB.
Does anyone have any experience with Plastic SCM in such an environment, or can refer me to some whitepapers or case studies on the matter of Plastic SCM's performance and handling of large repositories? Googling hasn't really turned much in the way of objective research - just stuff published by Codice themselves. I also realize that Perforce does extremely well in this environment - I've used it before - but we're a pretty small team, with an equally small budget, and Codice offers this system free for small teams ("Community Edition").
I'm very close to just installing it on a test server and trying it out...but wanted post the question first, so as to not waste my time if someone else has already tried it out in such an environment. Thanks in advance for your time.
UPDATE 02-FEB-2011: Just an update in case anyone else has a similar question and is viewing this...I got Plastic installed on a pretty modest Windows 2008 Server machine (2.8GHz Core 2 Duo, 4 GB RAM, repositories being stored on a SAN on the local network) running SQL Server 2008 R2 for the Plastic repositories. The import of subversion revision history took a while - just under three days - ~28000 revisions. However, it is SMOKIN' fast to do a fresh checkout of a new branch from Plastic - just shy of 4 minutes with Plastic compared to over an hour on Subversion as described above. We're very impressed so far!

We are moving ourselves from Perforce to Plastic and our repository is about 360Gb,
so quite large too. It actually worked seamlessly even using HUGE files.
Since we're in the videogame industry, large files are a must, and as
you know all the other DVCS (Hg, Git) have issues handling them.

For large repositories the best options are MySQL or SQL Server.
Firebird won't scale well to that size.

Related

How and What to convince my agency give up on Visual SourceSafe

As stated in the title, my agency (also whole software department of my company) still use Visual SourceSafe 2005 as Version Control System.
My company is a hardware manufacturer for over 5 decades, and software development have started for nearly 2 decades. Just only my agency there are 30 developers, and the head office have even more devs. My agency VSS database is around 133 GB and the head office is more than 200 GB.
I've also skimmed through Google:
How do I convince my team to drop sourcesafe and move to SVN?
How to convince a company to switch their Source Control
Visual SourceSafe: Microsoft's Source Destruction System
Source Control: Anything But SourceSafe
etc.
I also know that extended support of VSS will end at July 11 2017. I also verified many things listed in the articles (lack of atomic checkins, poor branching/merging, binary files trouble, slow history, etc.). For example, I just status search through whole agency database (I can't check HQ since permissions):
55 "File names.dat maybe corrupt. Ask your SourceSafe administrator to run Analyse utility on this database."
5 "Error reading files."
1 "VSS/data/terqeaaa.b not found."
Is the situation of database bad? If it's right, then, how can I convince them to switch to other VCS? I need some reliable recently information and some evidence. The guide how to show/proof them is better.
I asked the admin to run Analyze but he ignored my words since I just started to work for a few months. People can see VSS basic weakness. They also complain "who check out this file?" and resolve conflicts by barehands. They have to use WinMerge to diff and compare, Get latest version instead of branching and checking out, never comment orsee history log, create entire new folder for new code, etc. However, they do not give up on SourceSafe. (They are using Visual Studio 2012 to develop and didn't notice Team Foundation Server).
I think you already summed up many of the reasons:
VSS is already in extended support and is only kept secure, but barely functioning. It's on life support in the palliative care ward. Extended support, in the real world means unsupported. Unless you have a very strong credit limit, Microsoft will not help you if it turns out you need the support.
VSS officially supports only the following operating systems, none of which are currently supported anymore:
Windows XP, Windows 2000, Windows NT 4.0 with SP6 or later, Windows Server 2003.
It hasn't has any improvements, fixes since 2008.
The Visual Studio and TFS documentation have been advocating the migration to TFS since 2008. There has been a full migration tool since 2012.
It has known issues with stability, internal consistency and corruption. A conscience administrator will need to spend regular time to ensure internal stability and consistency.
It doesn't support modern development workflows (transactional commits, distributed version control, modern branch/merge, cherry picking, optimistic locking etc).
It has a very limited security capacity, users with access to the share can simply grab the whole file share and force access.
It's not useful for remote access. Or at least requires VPN and a stable, very fast network connection. Even then it'll likely increase the chance for corruption.
The user experience in Visual Studio and other tools that directly support TFVC or Git is much, much better.
Cross platform support is non-existent. In the current market this is becoming more and more important.
The standard backup (archive) tool built-into the product has a limit of 2GB repositories.
Microsoft recommends at least weekly analysis of the sourcesafe database and recommends the logs and backups of the repo to be kept so corruptions can be manually be put back together by copying files from the backup back to the active share.
There is a supported migration path from VSS to TFS.
A migration to TFS brings more, ability for Continuous Integration, Release Management, Work Management (Agile tooling, backlogs), Test Management on top of a much more stable, performant and secure backend that makes use of the qualities of SQL Server for robustness, integrity and security.

What are the scalability and performance limitations relating to many branches in TFS 2010?

My team is considering doing branch-per-task development in TFS 2010. We are thinking of using shelvesets for small tasks (1-3 days) and creating new branches for anything larger (4 days to 2 months). Once development is complete on the branch it will be merged to main and deleted (not destroyed). Typically it will be only one developer working on a particular branch.
Does anyone have experience working on a project using TFS 2010 with many branches. How did it work? Were there any server performance issues as the number of branches grew? Does it affect the performance of the VS IDE at all?
There are already many answers out there relating to questions such as "TFS sucks at merging and is crushing my soul, what can I do?" and "Why would anyone ever use TFS when x, y, and z are available?" Please try to keep your answers relating to server performance and usability of the system in the presence of a large number of branches.
Here is some background with my history of branching. The project I worked on previously used a branch-per-task strategy with ClearCase and it worked very well. Branch creation was tied to both the defect tracking and build system. Developers completed units of work each in their own branch. The lifetime of each branch varied from a day up to a couple of months. At the end of each task the code was merged into the main integration branch. This was a large project and after approximately 10 years of development the system has over 10,000 branches. ClearCase is able to handle this volume of branching quite well (except when viewing popular files in the Version Tree Browser, load time could be slow).
Basically the model you describe is a Branch by Feature, this is the model that the Dev Div of Microsoft uses to develop the Visual Studio product family, so you can tell it scales pretty well with TFS.
I recommend you to read this blog post and you can read the Branching Guide V2 to get more information.
As for the merging, the topic was pretty well covered here and on the web, in my opinion it doesn't suck when you use it correctly (and without the default merge tool).

What do people think of jira studio?

What are peoples opinions on jira studio? i.e. using the hosted product for a large company. Especially with hosted source control and reliability of the service?
Is this product up to large scale implementations yet?
I've been using JIRA Studio (hosted) extensively over the last few weeks with a Java project. So far my experience has been resoundingly positive, with the following caveats:
Setting up Elastic Bamboo requires filing a support ticket. While admittedly the process is fully automated and very easy, it can still take a day or two before you can begin setting up your builds;
In my opinion, SVN hosting is limiting. I've been very much looking forward to working with git or Mercurial, but I'm not aware of any plans to add support for those. You can certainly find a separate host for your sources, but you'd be losing on ease of use, out-of-the-box integration with issue tracking and the JIRA dashboard (which I've grown to absolutely love) and will have to sign with a second provider.
I would rate the primary advantages as:
Very low integration cost (compared to e.g. setting up your own Bugzilla+Mediawiki+Hudson setup);
Relatively low TCO, particularly if you have a small staff and no Linux hackers to get you started up;
Very smooth administration and usage experience. I've very rarely had to look in the documentation, and then it was usually clean and informative.

TFS vs FogBugz Kiln [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What are the issues we may face if we move from TFS to Fogbugz Kiln?
currently we are using TFS for source control, we are looking at the option to move to Kiln.
we are completely Microsoft development tools based company since we use Visual Studio .net, SQL server, TFS, Windows servers etc..
the reason for move it seems are:
better code review tools in kiln
better branch merge management.
has anyone already done this? does anyone know issues when we use visual studio with Kiln?
I cannot answer your question completely, as I don't use (and have never used) TFS. However, my employer uses StarTeam which is pretty typical as far as source code control.
For me moving from a traditional SCC method of check out/check in, to a distributed model was the first mental hurdle. To get over that hurdle I found that the tutorial at http://hginit.com/ was helpful.
As far as using Kiln for with VS, I use both the Kiln client (essentially TortoiseHg) and a plugin for VS 2010. I can commit, pull, push, etc. from both the Windows Explorer and from Visual Studio. I have had no issues, other than learning mercurial and how distributed version control works.
As far as other issues, the only ones I can think of are updating any build server or continuous integration servers to pull from the appropriate repositories.
Codereview exist in TFS (just download a free extension), merge is very good in TFS, reports are better in TFS, methodologies, integration, and even price.
In my modest point of view. But both are great products, if you work or need distributed sc or mixed teams (linux, etc) also TFS has a solution, but is not so cheap
Branches are better in Mercurial, but this has a price: you're going to have much more branches, and it will be much easier for a developer to make a mistake and do something in a wrong branch. Flexibility may cause confusion.
But the most important thing is your transition plan. If you have a long commit record in TFS, you'd probably want to keep it. Unfortunately, there seemed to be no direct conversion tool to help converting TFS to Hg when I needed one. I tried using tfs2svn with hg convert, but tfs2svn got stuck with complex renames, and I was forced to write a dumb direct conversion utility instead.
We switched from Sourcegear's Vault (w/ Bugzilla) to Kiln (w/ FogBugz) last Fall. All of our developers love the tight integration of commits to code reviews to cases (bugs/tickets) to specs/requirements.
It took some trial and error to master the organization of the central repositories. Kiln (and Mercurial by proxy) is so flexible that you can easily construct an organizational structure that is either too simple or too complex. This is significantly mitigated by the ease with which you can branch and merge. Our goal was to construct a system which allowed only reviewed code into a staging repository which could then be deployed for release to QA. It took about 6 weeks (mostly to trial and error) to finalize our repository organization to streamline this process.
While in Vault (comparable to Subversion from a philosophical standpoint), you could easily commit a change which could cost hours of time reversing, in Kiln it is trivial to make changes and throw them away. While I can't speak for TFS, compiling for release in Vault was a nightmare. Take 90 minutes of productivity and trash it. In Kiln, it's trivial to write a few Perl scripts to automate build/release, which would now be almost instantaneous if not for a few minutes of manual review.
The biggest challenge (as Helgi suggests) is managing branches. Some developers find this extremely easy, others struggle with it.
There was no conversion path from Vault to Kiln either, so we maintain the Vault server instance for archive purposes and started fresh with Kiln.
6 months in, and it has changed our lives (for the better).

What advantages does TFS 2010 have over Axosoft OnTime?

I am currently creating a business case for rolling out TFS 2010 as our source control and bug/release management tool.
We currently use OnTime for our bug tracking software and subversion for our SCM.
I was wondering what advantages TFS 2010 has over OnTime?
I have done some thinking so far and would love to hear responses:
TFS 2010 allows linking changesets->work items->builds
TFS 2010 provides greater customisation of workflow than OnTime
TFS 2010 is integrated into the Visual Studio IDE - This requires less apps to be open and less window flicking
Thanks in advance.
TFS is one of the least intuitive Version Control systems I have ever had the misfortune to have to use. It may have numerous "bullet point" advantages over OnTime (and other comparable systems), in terms of raw feature-lists and capabilities, but the key factor is whether it can fit in with your working processes.
My experience with TFS is that you will be required to adapt to the TFS way of working, because adapting TFS to your way of working will be impossible or too difficult to justify.
We recently reviewed a number of possible alternatives to replace a system comprising SVN and a manual bug-tracking system (Excel spreadsheets). On-Time was evaluated but deemed too expensive and complex.
In the end we opted to continue using SVN, but drastically revised (simplified) our repository structures and chose to combine SVN with the FogBugz issue tracking system. The integration between these two systems was fairly rudimentary "out-of-the-box", but required only a little effort on our part to achieve the much closer level of integration we desired. Certainly far LESS effort than my previous experience of a TFS roll-out involved.
Our SVN/FogBugz system is also now integrated with a FinalBuilder build automation suite.
The result is a system that not only fits our working practices perfectly (since we devised the means by which the systems would integrate to achieve that) but which is also infinitely adaptable as our working practices evolve.
I think that it really depends on the size of your team(s), and what you want out of source control.
I used bugzilla in combination with Perforce for a couple of years and found that both were really very good at their own individual things while working in a very small team (2-3 people), but the suffered from a lack of integration between them and from some little idiosyncrasies that took time to get used to.
I recently moved to a new job where TFS is used extensively. There are 4 main teams in this company with 10-12 developers in each, split into further project teams below that level, and it is in this kind of environment that TFS really shines imo. It's biggest advantages in my view are:
1) The integration with Visual Studio - it's not just a case of having less windows open, but it really does speed things up and make your life easier. Things like VS automatically checking out files for you as you work (no issues with accidental checkouts due to lockless editing), being able to synronise local + TFs builds, being able to quickly compare the local version against previous ones..yes you can get 3rd party plugins to integrate but none to this level and with the same stability.
2) The communication features - simple things like integraton with Live Messenger (provided you configure TFS correctly) are great for large teams. We use WLM to communicate accross the office and for collaboration as its just quicker than walking over to someone else every time you need to ask a quick question.
3) Linking builds/changelists to tasks - Yes other SCMs do this but again it's just done in a very nice, integrated fashion..I guess it's nothing special to TFS but personally I like how it tracks this.
4) Ease of merging/lockless editing. I've had experience with some other merge tools and the TFS one works nicely enough, making merging after concurrent editing pretty simple. It's very similar to perforce in this respect, but also with a usually pretty effective auto-merge tool which I use for tiny edits that I know cannot cause any potential issues with edits other developers are working on.
5) Auto building/build management. Working with a couple of large solutions containing 20-30 projects that depend on each other, this is a godsend. We have it set to queue up a build every 20 minutes IF something has changed, and when one has happened its listed in the history log..so easy to see when you need to update your local libraries.
I don't have any experience with configuring it other than build management, but I have heard that this is the worst part of TFS..that its a bit of a pain to get everything running correctly.
So, translating that to a business case..I'd say that if you are a Microsoft software house with large/multiple teams, then the time savings and productivity improvements that you will see as a result of the above features are worth the investment in setting it up. Its free to use in most cases as you will probably have a MSDN subscription (maybe some CAL issues but i'm not sure) so your biggest cost will be in user training and configuration.
Firstly, I would suggest to consider what is your primary concern, what is the problem that you are tying to solve by rolling out TFS.
In terms of version control I would recommend the blog post from Martin Fowler on Version Control Tools and a follow up results of a version control systems survey. Admittedly this might be and is a subjective view of the subject but one that seems to be pretty popular. TFS clearly looses in comparison to other Version Control Systems.
I currently work with TFS2008 and we have migrated from SourceSafe and IBM ClearCase/ClearQuest and there is no doubt that TFS is far better then any of the previous tool, still it has its serious shortcomings and the new version will only partially address those.
Addressing the individual point you have raised:
TFS allows to link builds with changesets and work items, but so many other systems
I have not used OnTime but the workflow customisation can be both an advantage and a hindrance. Potentially, there might be a lot of work involved in creating a custom process template and you would still need a sensible UI on top of it (Team Explorer or Web Access might not be sufficient)
Integration with Visual Studio is an advantage but there are add-ons to Visual Studio that allow integration with other source control providers
On the advantages of TFS I would probably mention
Distributed builds and separate build agents - if you do many builds
Full integration with Visual Studio via the Team Explorer
Extensive reporting infrastructure (though you can only take full advantage of it when using MSTest for all the testing)
SharePoint collaboration site for each project
Given the substantial cost of rolling out full TFS installation I would really consider what real business benefit would this solution give you that others don't.
Not shure about TFS, but the UI of OnTime is kind of non intuitive.
Also I dont like that you have different fields for Bugs and Tasks. Of course you can always add your own fields, but the default layout should be ready to use.
We endet up using only "Bugs" even if it is a task.
I dont say its a bad product, but if TFS has a better UI for bugtracking now (which it hadnt 4years ago when I had to use it and hated it ), then this would be an argument for TFS.
Sorry to hear that you want to get rid of SVN. Thats a hard decision.
I'm not sure about the licensing for the Axios OnTime but if you have an MSDN subscription then it's no additional cost. See the blog post here
I've been using TFS 2008 only for version control and while it's a nice upgrade from VSS some things that we're tyring to do aren't exactly in line with what is expected. That said, I've written a quick little web app that fills in those gaps. It was pretty easy to develop against using the API and there's lots of addons to help with specific tasks.
Probably not the answer you want to hear, but I'd be doing my damnedest to make a business case against TFS.
In any event, my general advice would be to try it out yourself (or in a small team) on some very small, but real project - maybe some tool you need on a once-off basis, code that can be thrown away or easily migrated to another system because it's small. There's nothing like actually using the system!
I have used OnTime and Subversion. I have not used TFS as bug tracker, but I've used it for source control. The source control part of it is basically still the bad old Visual SourceSafe. If you are currently using Subversion you will be swearing your head off any time you need to rename a file or, heaven forbid, delete a file and then create one with the same name - never mind any branching or merging. It's hard to convey in a post just how primitive and fragile it is as a source control system - that's why you really have to use it. You'll see what I mean when you find yourself stuck with a file you can neither check in nor delete and some meaningless error. Not that Subversion is perfect - but it's a decade ahead of VSS!
The workflow part of TFS, which I've only briefly played with, seems very "heavy" to me. That is, it really restricts the user to that workflow and requires a lot of steps that are often unnecessary. This stuff can help, but it can also just as easily get in the way. A good system provides the workflow when it's needed, but allows you to bypass it when it would just get in the way. When we used OnTime, we found that even its relatively unobtrusive workflow was often just more trouble than it was worth. Of course, this all depends on the specifics of your situation. How are you using OnTime workflows now and what do you want out of TFS that OnTime doesn't provide?
Linking changesets to bugs can be done with Subversion as well. It supports some extensibility mechanism - I don't remember the details, but FogBugz uses it (we switched to it after OnTime). Linking the to builds can be done by adding a simple svn tag command to your build script. Visual Studio integration can be done with VisualSVN.
The cost is also a huge downside of TFS. It is very expensive for what it does, especially when you take into account how well it does it. Yes, it's "free" if you have to have an MSDN subscription for every developer anyway - but do you have to, without TFS? Subversion is free, full stop. OnTime and FogBugz are far more reasonably priced.
I would strongly recommend against TFS. I once tried to restore the source code from a crashed instance, but I gave up after a few days, so source code was lost (= it failed to do the one thing a VCS should do). Of course, I might have done something wrong, but it's not easy to get everything right when the restore guide is two miles long, and it really is something that should happen so rarely that nobody is experienced with it.
Now I use Subversion/Trac, which gets the job done (and customizing the workflow in Trac is so easy it's not fun, compared to TFS).
For the time being, avoid TFS!
I would stick with SVN + FinalBuilder and then choose between FogBugz or CounterSoft Gemini.

Resources