what in general does the SCC API do? - version-control

I can't seem to find general documentation on the Microsoft SCC API. I don't want to wade through detailed documentation on the specific interfaces/methods/etc, I just would like to know what in general it allows and what concepts it uses. (edit: without having to download the whole SDK or applying for a license requiring an NDA.)
edit: what's the abstraction layer that it sees in common between different systems? e.g. there's files and changesets? or just files? and each file has a name?

As I understood it, you had at one time to be a Microsoft Partner to get at the SCC API SDK which would've included the documentation however, I later found that they had relaxed that requirement. AFAIK this API describes the interface between Visual Studio and an SCC provider. So it would allow you to write a provider to allow Visual Studio to interact with a version control system. Microsoft examples would be the SourceSafe provider and probably the Team System provider. A non-Microsoft example would be the Visual SVN plugin for Subversion.

Related

TFS configurations to support distributed teams

We are investigating using TFS for a small development group. All the developers are remote to the office. VPN is an option but not preferred, as we have to change vpn connections several times daily to support other functions in the business.
So I'm trying to figure out the different options that TFS can be configured with to support that model. I've read about setting up Proxy Servers but that was using an older version of TFS so I'm not sure that still is/was the best option.
I haven't been able to locate good current documentation about the best/different ways to configure TFS to support this model.
I don't need comments about using Mercuial, GIT or something else. I'm aware of them and including them in my overall evaluation but right now I'm trying to see what solutions TFS does or does not offer. All developers have MSDN licenses and so TFS is free to the group.
You have 2 options (without VPN)
1) Like Martin suggested, look at VSO (Visual Studio Online, http://www.visualstudio.com) this is the cloud based version of TFS it's free for up to 5 developers.
2) Setup TFS internally inside your organization and make that instance available on the internet through your firewall. You can secure it with certificates so only you team can connect in. There is a lot of information on MSDN on how to secure it using SSL and certificate.
Cheers,
ET

Version control architecture for a large project with many dev groups

We are working on a very large portal project. We need a scalable source version control architecture such that, it should be scalable to many teams and possible incoming teams.
There will be common libraries and each group will work on different part of the system. At demo times, we need to integrate these parts and have the product testable, demoable and so on.
Do you recommend some guidelines or architectures?
How would you approach this problem?
In terms of version control system, we are using TFS, if it helps.
Sounds to me you would be better off with a DVCS (Distributed Version Control System) like Git, rather than TFS which has a centralised version control system.
TFS now integrated with Git, here is a good blog post which provides you with most of the details you would need - http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx
Add an enterprise level Git Repository Management tool like Atlassian Stash and life will be sweet - http://www.atlassian.com/software/stash/overview
From a TFS server side...setup only 1 team project. This will be key. The other key is to have the server running SQL Server 2012 with SP1 (there's tons of perf improvements in SQL that will help you scale TFS).

CodePlex TFS Services

I have been thoroughly confused by CodePlex and the TFS services it offers or doesn't offer. I am going to soon begin working on on open source project with a few friends using Visual Studio 2010 Professional. Because VS is so nicely tied in with TFS, we would prefer to use TFS.
However, we do not have the money to purchase TFS ourselves, so we were looking at CodePlex as an alternative. Does CodePlex offer free TFS hosting? I believed it did, until I came across this which led me to believe it only offers part of the TFS feature set.
(This is my first experience with version/source control, so please be light on the terminology.)
CodePlex offers free TFS hosting with a feature set aimed at hosting open-source projects. Its version control offerings are complete, but Team Foundation Server is a platform with many feature areas, so let's look at those:
Version Control: CodePlex supports the entire feature set of TFS Version Control. In fact, CodePlex pioneered some version control tools for TFS like their SVNBridge.
Work Item Tracking: Team Foundation Server allows for a customizable work item tracking template and ships several out-of-the box to suit development processes ranging from CMMI to Agile. CodePlex, however, provides a single work item tracking template that is suitable for open source projects and does not allow customization.
Continuous Integration: CodePlex does not support automated builds at this time. You can set up your own continuous integration builds against a CodePlex endpoint for source code, though.
Document Repository: There is no SharePoint document repository available in CodePlex.
Reports: SQL Reporting Services are not available in CodePlex.
I would argue that for a small open-source project, none of these are deal-breakers. For a very large project, however, some or all of these features may be desirable, though.
If you want to use TFS and you are looking for a cost-effective solution for a small project, you may also want to look into Team Foundation Service, which is currently free while it is in its preview state. (Future pricing has not yet been announced.)

SCC compliant version control

I'm new to version control and reading about some of the ones available out there. I noticed the term SCC-Compliant (used with clearcase), and the definition from wikipedia is:
SCC compliant as applied to revision control software, means that a
program uses a particular interface defined by Microsoft for Visual
SourceSafe.[1] The SCC denotes Source Code Control
Is this concept of SCC-compliance huge or not that meaningful? Do most version control systems have it?
Regarding ClearCase, as mentioned in this IBM technote:
The SCC API is an interface specification, defined by Microsoft® that defines hooks for a number of common source control operations.
An application (typically an "integrated" development environment (IDE) of any kind) can provide source control functions without implementing the functions itself.
If an SCC compliant code control system is installed, the application dispatches code control operations to the source control tool (e.g. Visual Studio > ClearCase).
That being said:
if you are new to version control, try and stay away from ClearCase: it isn't the more practical one by far ;)
IBM Jazz protocol is a much more recent standard, that other SCM tools can use to integrate into other environments.
So while the concept of tool integration is important, the SCC concept is quite old, and limited to version control.
As opposed to Application Hub communication protocol, for integrating any two applications together, like Jazz.

Source control for MS Dynamics CRM

I'm undecided about CRM at the moment. It's a great tool for the business users but so far for development it's been a bit against the grain. The next problem I need to tackle is how to easily source control javascript used within forms. We use TFS for our source control.
Anyone had an experience or have any ideas on how to do this?
Obvious choice would be to copy and paste the JS in to your source control, but it's also an obvious pain in the rear.
A couple of things that we do in our projects:
We use the Web Resource Utility included with the CRM SDK (actually a modified version of it) to deploy JavaScript web resources to a particular solution. Makes it very easy to keep script files checked in to source control as normal and avoid copying and pasting.
We wrote a custom HTTP Module that we use on local deployments. It intercepts requests for JavaScript libraries and redirects them to a location on local disk. That way, we don't have to actually redeploy the web resources as we test, just the JavaScript files to disk. (Note that this would be unsupported in a production environment. We just do it in our development environments to ease the pain of JavaScript deployment).
I answered a very similar question here - Version Control for Visual Studio projects and MS Dynamics CRM (javascript)
My choice for source control is TFS holding each of the 2011 JScript libraries.
We try to mirror the file structure that Dynamics uses for Web resources in a basic Library project. So version control works as normal, we just don't use the output from the project.
You can also try using the new "CRM Solution" project template (installed from the SDK) and have the ability to deploy from the context menu of the project.
I've had some issues with the template but something to check out.
Hope this helps.
You can take a look on my answer on my own question here.
MS Dynamics CRM 2011 SDK has solutionpackager.exe utility what could split all CRM resources into file tree and you can store them either in git or in tfs.
Any web resource in CRM 2011 is a pain to manage. We just end up doing a lot of copy pasting in and out of TFS 2010 (which has actually caused some problems with poor pastes).
Currently out of the box there isn't an easy way to do it.
Only worry about this if you really need the ability to go back to old versions of web resources. I've found that I don't often have to do this. Remember that the web resources are stored in SQL Server just like they would be if you put them in TFS, so as long as your CRM database is being backed up, you won't lose the web resources. In traditional development, it is important to keep the source in TFS because you can't easily get back to it once you compile and release. With CRM development, your web resources are mostly HTML or JavaScript, so you can always get at the source.
If you really need version control, why not build a quick little console app that downloads all customizations every night and stores that zip file in TFS? True, it wouldn't be as easy to get at older versions, but you should gain a lot of productivity by not having to manually keep TFS in sync. This also has the benefit of storing all customizations in TFS, not just web resources.
Silverlight is the obvious exception here - I would definitely store Silverlight web resource source code in TFS, because it is a "compiled" web resource. You are already in Visual Studio, so TFS is a natural fit anyway.
Hope that helps!