220 likes | 451 Views
數位芝麻網路公司 蔡志展 < chihchun@digitalsesame.com> 2001/8/18. CVS 簡介. 大綱. CVS 簡介 CVS 安裝 CVS 設定 ( Linux/Windows) CVS 指令簡介 CVS 多人環境的應用. CVS 簡介. What is CVS ? Idea of CVS Benefits, Fancy features . What Is Concurrent Versions System ?. Version controll system
E N D
數位芝麻網路公司 蔡志展 <chihchun@digitalsesame.com> 2001/8/18 CVS 簡介
大綱 • CVS 簡介 • CVS 安裝 • CVS 設定 (Linux/Windows) • CVS 指令簡介 • CVS 多人環境的應用
CVS 簡介 • What is CVS ? • Idea of CVS • Benefits, Fancy features
What Is Concurrent Versions System ? • Version controll system • Multi-developer environment
Version Management • Software Development • Website Management • Documentations • Synchronization of distributed effort • ... anywhere digital data evolves
Requirements for VC • Multiple Developers - concurrent Access • History • View diffs • Rollback changes • Release Management
Idea of CVS • The idea of the CVS is to create a filesystem, where each file has remembers all the modifications made to it. In other words it is all the versions of it at the same time. • Filesystem resides in a repository, that can be stored to local or remote host. • All the files are edited outside of the repository in some working directory and in some phase synchronized with the repository. • Files are moved to, from and updated from repository with special tool called cvs, which is available for most platforms
So What is it good for ? • Version controll and connecting multiple developer together in one project, of course :) • Document management and archiving • Nice way to do one project with multiple machines and still manage the versions • Allows free experimenting on project • Following the growth of the project • Backupping - it forces one to take backups with neglible work very often
Benefits of CVS • Automatic, constant and forced backupping • When programming, frees the development • Gives freedom to choose afterwards, when the program is ready • Saves all the versions for later use • Clean way of saving only the necessary files and managing projects • Gives freedom to develop on multiple machines simultaneously
Fancy Features • Multiple developer support (file locking, etc.) • Bonsai - www-interface (for example see Gnome project) • Keyword substitutions • Development of several version at the same time • Multiplatform-support (works even on obscure platforms like Windows)
Essential CVS Terminology - Repository • CVS stores all files in a centralized directory called the repostiory. The directory is defined by the environment variable $CVSROOT.
Essential CVS Terminology - Module • Modules are just the toplevel directories in the Repository. • You can combine multiple modules in your own directory structure. See documentation for CVSROOT/modules • incorporate generic libraries in your own sourcetree, but be able to maintain them individually. • The files in the repository are organized in modules. Each module is made up of one or more files, and can include files from several directories. A typical usage is to define one module per project.
Version Numbers • Every file in a CVS repository can contain many versions, which are given version numbers in form x.y[.x.y[...]]. • The history of each file is tracked with an incrementing revision number • For each revision there is a log entry • Revision numbers have the format 1.25 if they're on the main trunk, branches have something like 1.33.2.16
Version Numbers • Version numbering is automatic i.e. number y is automatically incresed avary time file is changed: 1.1 1.2 1.3 1.4 1.5
Release Management • marking important stages in the development e.g. milestones, code freezes or actual releases • We want to reproduce the same state later. • making bug-fix releases, starting at a specific release. • newly added files should not show up in the old release • files which are deleted in the meantime should still show up if we reproduce the old state.
Tags • A Tag is simply a symbolic name for a specific revision • Tagging all files in one directory or module marks the current stage. • Can be used as synonym for a revision in any CVS-command • cvs tag <tagname> applies the tag to the current revision of each file • Version numbers can be treated as a internal information in CVS and only symbolic names - tags for version used to mark releases.
Branches • Version number can contain more than two numbers to mark branches. • Branch can start from any version and start depeloping independently from the rest of the software. • In some point of the development of a branch, it can be merged to main trunk in necessary.
Interaction with the repository • Check out • Syntax : cvs checkout [options] module ... • Add • Syntax : cvs add [options] file ... • Remove • Syntax : cvs remove [options] [file ...] • Examine status • Syntax : cvs status [options] [file ...]
Interaction with the repository – count. • Update • Syntax : cvs update [options] [file ...] • Check in (commit) • Syntax : cvs commit [options] [file ...] • Release module • Syntax : cvs release [options] module ... • Import module • Syntax : cvs import [options] repository_dir vendor_tag release_tag • Export module • Syntax : cvs export [options] module ...
Conflict Resolution • Conflicts are rare, since most concurrent editing is done at different places in the file • usually easy to resolve - if not, there seems to be a communication problem in the group in general • On conflict, both parts are shown in the file, to be resolved by hand. See demo.
References • CVS-Site • <http://www.cvshome.org/> • WinCVS Windows Client • <http://www.wincvs.org/>
Your time. Q&A