|
The CVSNT Versioning System implements a version control system: it keeps track of all changes in a set of files, typically the implementation of a software project, and allows several (potentially geographically separated) developers to collaborate. It is compatible with and originally based on Concurrent Versions System (CVS), which has become popular in the open-source world and is released under the GNU General Public License. CVSNT keeps track of the version history of a project (or set of files). CVSNT is based on the same client-server architecture as the Concurrent Versions System: a server stores the current version(s) of the project and its history, and clients connect to the server in order to check-out a complete copy of the project, work on this copy and then later check-in their changes. A server may be a caching or proxy server (a read only server that passes on write requests to another server) or a read and write (normal) server. Typically, client and server connect over a WAN or Internet, but client and server may both run on the same LAN or even the same machine. The server software runs equally well on Unix and Windows. It is compatible with CVS clients and supports a large number of configuration management methodologies including the CVS compatible unreserved method and the VSS-like reserved method. The modular nature of CVSNT allows server administrators to dynamically enable and disable protocols as well as load additional functions via triggers such as Audit, Defect Tracking Integration, Automatic Checkout (for webservers) and more. CVSNT Server features include: - Access control for securing projects and branches.
- Detailed audit and metrics recorded in an SQL database.
- Authentication with Active Directory.
- Tracking everything about the change - including whether it was merged from somewhere, belongs to a problem report or was part of a change set.
- A control panel to manage email notification of changes, defect tracking integration, and more.
- Integrated repository synchronisation (for fail-over servers).
- Change set support (group changes by defect number).
- Supports UNICODE UTF-8/UCS-2 files and multi-lingual filenames.
- When operating in UTF-8 (Unicode) mode it can automatically translate filename encoding for any client.
- Plug-ins for email notification.
- Helps make merging branches easier with its "Mergepoint" feature.
- Native servers available for Mac OS X, Windows, Linux, Solaris, HPUX.
- Supports reserved and unreserved versioning methodologies.
- CVSAPI for integration into 3rd party products.
- Script, COM and 3GL interface for triggers and integration into 3rd party tools (such as defect tracking)
-
CVSNT Limitations - cvsnt can do a lot of things for you, but it does not try to be everything for everyone.
- cvsnt is not a build system.
- Though the structure of your repository and modules file interact with your build system (e.g. Makefiles), they are essentially independent.
- cvsnt does not dictate how you build anything. It merely stores files for retrieval in a tree structure you devise.
- cvsnt does not dictate how to use disk space in the checked out working directories. If you write your Makefiles or scripts in every directory so they have to know the relative positions of everything else, you wind up requiring the entire repository to be checked out.
- If you modularize your work, and construct a build system that will share files (via links, mounts, VPATH in Makefiles, etc.), you can arrange your disk usage however you like.
- But you have to remember that any such system is a lot of work to construct and maintain. cvsnt does not address the issues involved.
- Of course, you should place the tools created to support such a build system (scripts, Makefiles, etc) under cvsnt.
- cvsnt is not a substitute for management.
- Your managers and project leaders are expected to talk to you frequently enough to make certain you are aware of schedules, merge points, branch names and release dates. If they don't, cvsnt can't help.
- cvsnt is not a substitute for developer communication.
- When faced with conflicts within a single file, most developers manage to resolve them without too much effort. But a more general definition of "conflict" includes problems too difficult to solve without communication between developers.
- cvsnt cannot determine when simultaneous changes within a single file, or across a whole collection of files, will logically conflict with one another. Its concept of a conflict is purely textual, arising when two changes to the same base file are near enough to spook the merge (i.e. diff3) command.
- cvsnt is not an automated testing program
- It should be possible to enforce mandatory use of a testsuite using the commitinfo file. I haven't heard a lot about projects trying to do that or whether there are subtle gotchas, however.
- cvsnt does not have a builtin process model
- Some systems provide ways to ensure that changes or releases go through various steps, with various approvals as needed. Generally, one can accomplish this with cvsnt but it might be a little more work. In some cases you'll want to use the commitinfo, loginfo, rcsinfo, or verifymsg files, to require that certain steps be performed before cvs will allow a checkin. Also consider whether features such as branches and tags can be used to perform tasks such as doing work in a development tree and then merging certain changes over to a stable tree only once they have been proven.
-
CVSNT Link: http://en.wikipedia.org/wiki/CVSNT http://www.march-hare.com/cvsnt/
|