What's the difference between VCS and SCM? - version-control

I'm doing some research on revision control in practice, and there seems to be two names for the same thing in books and papers: Software Configuration Management (SCM), and Version Control Systems (VCS). The former seems to be popular with software engineers / Java programmers, and the latter with from sysadmins, but both appear, at layman's glance, to mean the same thing.
On the other hand, in the past I've interpreted SCM to mean something like puppet or cfengine. Can anyone set me straight on these two terms in practice? Preferably with concrete examples.

Caution, SCM can refer to different meanings about Versioning:
Software Configuration Management as explained in JimDaniel's answer
Source Control Management is same as Version Control and Source Control and VCS
Moreover, people may use SCM to refer to other naming:
Source Code Management as in Source Code Control System
Software Code Management but this is a deformation of Software Configuration Management
Source Configuration Management same meaning as Software Configuration Management but maybe more focused on source code than on the whole software (settings, command line arguments, host parameters...)
Let's define them:
Version Control Systems are the standalone software to manage the versions (Git...)
Source Control Management is the same as VCS
Software Configuration Management is all processes to manage all the changes of the software: the development (VCS), the delivery release (VCS), the bug tracking, the software settings, the host/network settings, the version/settings of the other software interacting with...
Therefore, just using the acronym SCM is confusing: some people may understand the same meaning as VCS, some others may understand the whole process where VCS is just an aspect.

Version Control Systems are just that, software that provides versioning functionality (Git, Subversion, TFS Version Control) all fall into this category.
Software Configuration Management is a broader term that encompasses all the processes needed to build, package, and deploy software -- this includes Version Control Systems. It does not refer to software per se.

Related

Continuous Integration: Centralize Software Assets

In order to achieve Continuous Integration, in the book Continuous Integration: Improving Software Quality and Reducing Risks, one can read that one of the principles behind it is centralizing software assets on a version control system, may these be compiled artifacts, libraries, third party components and so on.
I can understand such statement in case one is only using a SCM and nothing else. But what about if one is to be using a tool such as Nexus? Would you say that Nexus or the alike makes such statement obsolete when referring to already built artifacts?
The short answer is: "yes"
The longer answer is that using Nexus to centralize software assets is perfectly legitimate, as it is also a versioned store. It is more appropriate for technologies that need to compile binaries, but even for scripted technologies I favour creating tarballs or better still RPM packages. Finally a deployment process that incorporates an SCM system marries you to that software.... More worryingly every person who needs to install your software must also have access (credentials) to the tool.

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

Team Development offline

I want a version control system tool, but offline.Like I develop a project on my computer,and someone is working on a different part of this project on a different computer.Is there a tool that allows to me bring the project from different computer to mine and sync all the changes.
I would like to have all functionalities of a version control system like diff,rollback,commit
Please suggest a suitable tool.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
http://git-scm.com
It can be used online or offline easily.
Almost all the version control tools on the market support these features: diff, rollback, commit, offline, etc. I list some tools here for your reference:
Open Source
Git
SVN
Commercial
SourceAnywhere (developed by the company I'm working for)
Microsoft Team Foundation Server

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.

Free Version Control and Issue Tracking System [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
What are the most convenient, intuitive and easy to use Freeware Version ControlSystem and Issue Tracking system for home PC (without a LAN)?
Note that, GUIs are a must for both.
Install your own copy of Trac, it runs by default with SQLite so you won't need a database server (I guess the home computer doesn't have many resources).
For Version Control SVN will be just fine, if you use Windows try VisualSVN for a faster setup.
I recommend Redmine for issue tracking/project management, and Git for version control. Redmine supports most SCM:s like CVS, Subversion, Git, Darcs, Mercurial, and Bazaar.
Redmine features:
Multiple projects support
Flexible role based access control
Flexible issue tracking system
Gantt chart and calendar
News, documents & files management
Feeds & email notifications
Per project wiki
Per project forums
Time tracking
Custom fields for issues, time-entries, projects and users
SCM integration (SVN, CVS, Git, Mercurial, Bazaar and Darcs)
Issue creation via email
Multiple LDAP authentication support
User self-registration support
Multilanguage support
Multiple databases support
For extremely easy installation, Redmine can be installed using Bitnami, available for Windows, Mac and Linux. Bitnami will install all required dependencies for you and everything may be uninstalled just as easily.
Edit: For Windows, Subversion + TortoiseSVN is probably your best bet for version control.
There's a 100% always free hosted private bug tracker available at https://www.hostedredmine.com/
By using that you don't even have to worry about setting up, managing and backing up your own server.
You could use an online hosted version. Project Locker provide source control and issue tracking and have a free plan (up to 500MB). Beanstalk also do online source control (100MB).
You can use any of the free UI applications to access the source control repositories (such as TortoiseSVN, SmartSVN, etc..)
For version control I use Visual SVN which is a setup for a windows based user (takes care of all the install details of apache, bsd, etc.). It just works and is easy to use/manage. Then you need an SVN client - Tortoise is probably the best for it's windows explorer integration. This is free. If you want SVN integration in Visual Studio then you may want to splurge on a copy of Visual SVN for your client!
Also regarding version control don't underestimate the power of CodePlex or Google Code! As long as you don't mind people looking at your work (IE not for secret stuff) then this is a great resource that requires far less management on your part. Also great for distributed teams!
For bug and defect tracking you can't beat CounterSoft's Gemini product. This is a web based tool that allows you to track projects, bugs, call tickets, etc. Very nice for the professional consultant.
If you need something more robust for a bigger team and a team that is agile specific then take a look at VersionOne's products. Their first year of the basic package is free!
You can use SVN/CVS, which has loads of GUI utilities to back it up on almost every OS out there. It is rock stable.
For issue tracking bugzilla is just perfect for any level of expertise and it integrates well.
Web based interface is also pretty simple and intuitive.