Revision control, also known as version control or source control (and an aspect of software configuration management or SCM), is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files. Changes are usually identified by a number or letter code, termed the "revision number", "revision level", or simply "revision". For example, an initial set of files is "revision 1". When the first change is made, the resulting set is "revision 2", and so on. Each revision is associated with a timestamp and the person making the change. Revisions can be compared, restored, and with some types of files, merged.

Version control systems (VCSs – singular VCS) most commonly run as stand-alone applications, but revision control is also embedded in various types of software such as word processors, spreadsheets, and in various content management systems (e.g., Drupal, Joomla, WordPress). Integrated revision control is a key feature of wiki software packages such as MediaWiki, DokuWiki, TWiki etc. In wikis, revision control allows for the ability to revert a page to a previous revision, which is critical for allowing editors to track each other's edits, correct mistakes, and defend public wikis against vandalism and spam.

Application Lifecycle Management (ALM) is a continuous process of managing the life of an application through governance, development and maintenance. ALM is the marriage of business management to software engineering made possible by tools that facilitate and integrate requirements management, architecture, coding, testing, tracking, and release management.

Benefits

Proponents of application lifecycle management claim that can:

  • Increases productivity, as the team shares best practices for development and deployment, and developers need focus only on current business requirements
  • Improves quality, so the final application meets the needs and expectations of users
  • Breaks boundaries through collaboration and smooth information flow
  • Accelerates development through simplified integration
  • Cuts maintenance time by synchronizing application and design
  • Maximizes investments in skills, processes, and technologies
  • Increases flexibility by reducing the time it takes to build and adapt applications that support new business initiatives

Disadvantages

Opponents of application lifecycle management claim that it

  • Increases an application's whole-life cost
  • Increases vendor lock-in

SubVersion

Subversion was designed with an abstract network layer. This means that a repository can be programmatically accessed by any sort of server process, and the client “repository access” API allows programmers to write plug-ins that speak relevant network protocols. In theory, Subversion can use an infinite number of network implementations. In practice, there are only two servers at the time of this writing. Apache is an extremely popular web server; using the mod_dav_svn module, Apache can access a repository and make it available to clients via the WebDAV/DeltaV protocol, which is an extension of HTTP. Because Apache is an extremely extensible server, it provides a number of features “for free,” such as encrypted SSL communication, logging, integration with a number of third-party authentication systems, and limited built-in web browsing of repositories. In the other corner is svnserve: a small, lightweight server program that speaks a custom protocol with clients.

Because its protocol is explicitly designed for Subversion and is stateful (unlike HTTP), it provides significantly faster network operations—but at the cost of some features as well. While it can use SASL to provide a variety of authentication and encryption options, it has no logging or built-in web browsing. It is, however, extremely easy to set up and is often the best option for small teams just starting out with Subversion. A third option is to use svnserve tunneled over an SSH connection. Even though this scenario still uses svnserve, it differs quite a bit in features from a traditional svnserve deployment. SSH is used to encrypt all communication. SSH is also used exclusively to authenticate, so real system accounts are required on the server host (unlike vanilla svnserve, which has its own private user accounts). Finally, because this setup requires that each user spawn a private, temporary svnserve process, it's equivalent (from a permissions point of view) to allowing a group of local users to all access the repository via file:// URLs. Path-based access control has no meaning, since each user is accessing the repository database files directly. For Windows platform you can use Tortoise SVN client.

Produced by: 0pen-source, started by CollabNet
Type: Version Control Software
Operating systems supported: Unix, Linux, Solaris, Windows, Mac
Recomended Books: Availabe in oficial book store
URL http://subversion.apache.org/

Rational ClearCase

RCC offers complete software configuration management, An industry-leading solution that provides sophisticated version control, workspace management, parallel development support and build auditing to improve productivity.

  • Light-weight feature-rich clients allow you to work locally or remotely
  • Flexible out-of-box usage model based on proven best practices increases team productivity and efficiency
  • Wide-range of supported environments and cross-platform support connects diverse teams
  • Transparent real-time access to files and directories virtually anywhere in your organization
  • Scales to any size team from small workgroups to distributed enterprise teams to support evolving organizational needs
  • Integration with leading IDEs allows you to work in your preferred environment
  • Sophisticated branching and graphical merge tools enable concurrent access to files and efficient use of time
  • New in 7.2.2 release! Works with Cadence Design Framework II software to provide configuration management for hardware and software designs.

Produced by: IBM
Type: Version Control Software, Software Configuration Management tool
Operating systems supported: AIX, HP-UX, Linux, Windows family
Recomended Books: Availabe
URL http://www-01.ibm.com/software/awdtools/clearcase/

CVS

CVS is a revision control system, which means that it's a mechanism for storing multiple versions of files and the relationships between them. It's similar in principle to RCS and SCCS, but is designed for use on a project- or site-wide basis with large trees of files, rather than on an individual directory basis. There are two different sets of files to think about with CVS: The CVS repository, which contains special files that hold the full revision history for each file, and a "checked out" copy of a portion of the CVS repository. A checked out copy contains (usually) the latest versions of all of the files in the repository.

The repository has that information plus all of the earlier versions, records and revision histories for deleted files, and occasionally other things as well (like branches and tags). The checked out copy are the files that you work with and use. The repository is the storage that CVS manages for you. Using CVS is a continuous process of making changes to the files and then "committig" those changes into CVS. To commit a file just means to tell CVS about the changes that you've made so that CVS can record those changes in the repository. Whenever you commit a change using CVS, CVS obtains from you a "log message," which is just a brief description of what you changed and why. It stores those messages with the changes, so that someone can come back later and see not only what changed at each point in time but why that thing was changed. When using our main CVS tree, CVS will also send mail to a notification address containing a list of files that were changed and the log message, so CVS is also a notification system so that people affected by changes know about them. (The addresses notified vary depending on what files were changed, but always include leland.cvs-commits.)

You can get from CVS various bits of information about the history of a given file, such as differences between the version you're working on and the last version committed to the repository, or a log of all the commits that have affected that file and the log message for each commit. You can also get older versions of files out of CVS. As far as CVS is concerned, the canonical copy of all files is the repository. It doesn't care where the checked out copy is. For most of the files that we have in CVS, there's one canonical checked out copy as well (such as /afs/ir/site/leland/news/template for the news server build templates), but CVS doesn't require that you do your work there (although you certainly can if you want).

You can check out another copy of any portion of the repository anywhere you want, do your work there, and commit your changes from that copy without ever touching other checked out copies. Note, though, that CVS only knows about the checked out copy that you're using and the repository. If you change and commit things in your own copy, that isn't going to change any other checked out copies. Someone would have to run the command "cvs update" for those copies to get the new versions of files from the repository.

Produced by: CVS group
Type: Open-source Version Control Software
Operating systems supported: Unix, Linux, Solaris, Windows, Mac
Recomended Books: Availabe
URL http://savannah.nongnu.org/projects/cvs

Team Foundation Server

A large number of developers are using Team Foundation Server for a variety of tasks such as Source Control, Bug Tracking, Requirements gathering, running nightly builds and managing the overall life cycle of a software development project.
Visual Studio Team System provides rich integration with Team Foundation Server through Team Explorer, which provides the basic connectivity to TFS. Users can use Source Control Management to manage their source code, manage Work Items, create Build types, run Unit Tests and Load Tests, run one of many SQL Server 2005 Reporting Services-based Team Reports etc. In addition to Visual Studio, Office 2003 and Office 2007 also offer direct or indirect connectivity to Team Foundation Server. You can have Work Items show up as Tasks in Outlook 2007, you can export a Microsoft Project 2003 schedule to TFS, creating Work Items in the process, or you can export and import your Work Items to and from Excel 2007.
Even if you are working outside of the realm of the .NET and the Microsoft development platform, you can use the TeamPrise plug-in for Eclipse to provide connectivity from your favorite Java development environment to Team Foundation Server. What a lot of people don't realize is that Team Foundation Server also offers a powerful development object model, empowering the developer to create custom development tools, specialized clients, custom WebParts for a Team Project SharePoint portal and so on. Team Foundation Server was developed from the ground up with extensibility in mind. Indeed, TFS itself is build upon the Team Foundation Core Services, which are a set of Web Services used by Team Foundation Server itself to implement the different functional areas for Team Foundation Server. As a developer, you will seldom have a reason to directly use the Team Foundation Core services. Indeed, Microsoft created the Team Foundation Server Object Model to increase the productivity of the TFS developer. The classes in this object model interact with the Web Services of the Team Foundation Server Core Services and make it easy for you to extend the functionality of Team Foundation Server in one of the following ways:

  • Create a custom TFS command-line tool.
  • Develop custom PowerShell cmdlets or PowerShell PSDrive providers that allow you to directly navigate the TFS repository.
  • Develop a SmartClient or Web client for Team Foundation Server.
  • Develop a custom check-on policy for your development team
  • Create a plug-in for a third-party development tool.
  • Create a custom SharePoint WebPart for your Team Project SharePoint portal.
  • Implement custom Contiguous Integration (CI) tools.
  • Create new Team Foundation build tasks.

Produced by: Microsoft
Type: ALM system
Operating systems supported: Windows Server 2003/2008 for servers, clients: Windows, Mac, Unix, Linux, Solaris
Recomended Books: Availabe
URL http://msdn.microsoft.com/en-us/vstudio/ff637362

SourceSafe

The Microsoft Visual SourceSafe 6.0 version control system is the latest edition of Microsoft's award-winning version control system for managing software and Web site development. Fully integrated with the Visual Basic, Visual C++, Visual J++, Visual InterDev, and Visual FoxPro development environments, as well as with Microsoft Office applications, it provides easy-to-use, project-oriented version control. Visual SourceSafe works with any type of file produced by any development language, authoring tool, or application. Users can work at both the file and project level while promoting file reuse. The project-oriented features of Visual SourceSafe make managing the day-to-day tasks associated with team-based application and Web site development more efficient.

BENEFITS:

  • Secure and Scalable: Stores files in a secure repository maintained by an easy to use security system. Files stay protected, yet easily accessible to authorized users. Supports a single user or hundreds of users across multiple projects.
  • Project-oriented for Web and PC: Allows file sharing and change tracking across projects, freeing users from having to track which files are changed, by whom, when and where. The result is increased team productivity for Web and PC file management.
  • Advanced yet Easy: Seamlessly integrates with a wide range of products to provide version control for any type of document. Easy enough to use for the non-technical team members. Advanced capabilities for large teams, complex projects and web sites.

Produced by: Microsoft
Type: Version Control Software
Operating systems supported: Windows
Recomended Books: Availabe
URL http://msdn.microsoft.com/en-us/vstudio/aa718670.aspx

IBM Jazz

IBM Rational Jazz is a new technology platform for collaborative software delivery. Uniquely attuned to global and distributed teams, Jazz is designed to transform how people work together to build software, making software delivery more collaborative, productive, and transparent. You can think of Jazz as an extensible framework that dynamically integrates and synchronizes people, processes, and assets associated with software development projects.

Jazz products are being built in a completely transparent manner on jazz.net. Jazz.net is our transparent development laboratory where you can see Jazz engineers utilizing a range of Jazz tools to build the next version of our products. Jazz.net is also the place where you can ask questions directly of the development community, submit defect and enhancement requests and track these requests through Jazz dashboards, and find out what we are planning for the next release. We invite you to join the community, download the latest software, and contribute your ideas.

The Jazz platform enables collaboration among business stakeholders, subject matter experts, and any one who plays a role in the successful delivery of software – not just software professionals. This represents a transformational leap in the value of software delivery teams because they can now make software a focal point for driving innovation across the enterprise.

Jazz is not a product. Product offerings that are built on the Jazz platform can leverage a rich set of capabilities for team-based software development and delivery. IBM Rational Team Concert™, Rational Quality Manager, Rational Requirements Composer, Rational Asset Manager and Rational Insight are the first offerings built on or significantly refactored for the Jazz platform.

Produced by: IBM
Type: ALM sistem
Operating systems supported: Windows, Unix, Linux
Recomended Books: Availabe
URL http://www-01.ibm.com/software/rational/jazz/