Source Control integration is one of the new CodeCharge Studio 5 features making collaborative web site development a breeze. Integration with popular Software Configuration Management packages that are in use by most software development companies makes the CodeCharge Studio 5 professional IDE ideal for teams working on large web systems. CodeCharge Studio 5 integrates basic operations for retrieving current version, committing new versions and updating files in shared remote repositories.
Software Configuration Management includes two important aspects: keeping track of any changes made to project files and providing access to project files for team members. Version tracking means that the Software Configuration Management system makes it possible to retrieve any historical version of any project file or even a state of the files at some moment in time.
Most Software Configuration Management packages rely on a central installation called Repository that stores all the information about file changes, including the time and users making these changes.
Users working on the files in the repository need to download its current state locally to their computers. This operation is usually called Update or Get Lastest Version and creates a working copy. Before a file can be modified it has to be locked for editing using Edit or Check Out operation, depending on the Software Configuration Management package being used. To publish the changes to the repository, Commit or Check In operation must be executed. These operations are also required after adding new files to the repository.
There are generally two kinds of Software Configuration Management systems. Packages with reserved checkout prevent multiple users from editing the same file at the same time. This is assured by putting a lock on a file before editing. Other users must wait for the editor to release the lock before they can edit the file. Source Control packages with unreserved checkout allow editing of any files in use by another user. Potential problems and conflicts are detected during the commit stage. The system checks if different users have not committed newer file version than the file being committed is based on. If this situation is detected, the committing user is left to perform a manual merge operation between the new file in the repository and the version that is being committed.
Visual SourceSafe is a Software Configuration Management package sold by Microsoft. It is a reserved checkout system often used with Microsoft Visual
Studio because of good integration.
Third-party solution developed by SourceGear to access remote Visual SourceSafe repositories over the Internet. Improved security and performance over Visual SourceSafe client. Uses reserved checkout.
Concurrent Versioning System (CVS) is one of the most popular Software Configuration Management solutions available for free (and with source code).
CVS is used in thousands of projects and has been made available by many hosting providers. This system uses unreserved checkouts with alternative file locking. Mature and reliable solution.
The support for this tool is built-in inside CodeCharge Studio.
Note: There are many other Software Configuration Management systems available. They can be used with CodeCharge Studio provided their developer or a third-party has implemented Microsoft's SCC API handler to access their functionality from an IDE. Both Microsoft Visual SourceSafe and SourceGear SourceOffSite are accessed through such handlers and are listed in CodeCharge Studio only after installing client applications for these tools.
Files in CodeCharge Studio 5 controlled project may have different statuses. The current status is represented by an indicator icon displayed in the Project Explorer right beside the item's icon. The indicators are available in both Page and File views.
Note: The page node sometimes represents multiple files and additional indicators are available to show that some files under the page node have a different status than the page file itself (exclamation mark indicator).
|The page/file is not under Source Control.|
|The page/file has been added. (CVS only)|
|The page has been added. (CVS only) There are files with different statuses for this page.|
|The page/file is ready for editing. (CVS only)|
|The page is ready for editing. (CVS only) There are files with different statuses for this page.|
|The page/file is locked in server/checked in.|
|The page is locked in server/checked in. There are files with different statuses for this page.|
|The page/file was changed locally/checked out.|
|The page was changed locally/checked out. There are files with different statuses for this page.|
|The page/file is checked out to another user.|
The CVS Software Configuration Management system uses unreserved checkout and offers more complex locking and file state transition. CodeCharge Studio 5 CVS plug-in uses additional states for uncommitted added files (repository is notified that a file is added, but file contents have not been committed yet) and for changed file (changed locally, not committed, potentially in conflict with new version available in the repository). The operation names used by CVS plug-in are also different from the names used by other Source Control providers. Commit operation is used for sending new file version to the repository and Update operation is used to retrieve current file version from the repository. CVS built-in locking is supported with Edit/UnEdit operations to lock and unlock a file.
Non-CVS Source Control providers use simpler state transition assuming file is locked exclusively for editing (reserved checkout). Check In operation is used to put new file version into repository and Check Out operation is used to lock file for editing. Current file version can be retrieved using Get Latest Version operation.
|CVS command||non-CVS command||Description|
|Commit||Check In||Upload new version to the repository.|
|Edit||Check Out||Lock file for local editing.|
|UnEdit||Undo Check Out||Unlock file restoring original version|
|Update||Get Latest Version.||Get current version from repository|
|Add to Source Control||Add to Source Control||Add new file to the repository|