330 likes | 447 Views
An Introduction to SCM & GForge. Lin Guo guolin@cs.cornell.edu. Roadmap. What is SCM Why do we need SCM Interesting SCM features SCM tools GForge Conclusion. What is SCM. Source Control Management Maintain a repository of source files Track all changes Control changes
E N D
An Introduction to SCM & GForge Lin Guo guolin@cs.cornell.edu
Roadmap • What is SCM • Why do we need SCM • Interesting SCM features • SCM tools • GForge • Conclusion
What is SCM • Source Control Management • Maintain a repository of source files • Track all changes • Control changes • Software Configuration Management • More than source control • Manage source repositories
Why we need SCM • Source Control • Sharing: supports concurrent development • Versioning: provide version number and dates • Change tracking: find details of a change • Archival: reproduce any file from any point • Documentation, drawing, etc. • Configuration Management • Branch: release version vs. develop version • Snapshot of the whole system • Prohibit further check-in before release
Roadmap • What is SCM • Why do we need SCM • Interesting SCM features • Source control vocabulary • Code Sharing • Branch • Label • SCM tools • GForge • Conclusion
Source Control Vocabulary • Update: obtain the latest versions of the code • Check-out: obtain the writable version of files • Check-in: commit the changes to files • Lock/unlock: one only person may modify a file • Integrate: combines the changes with others’ • Add/delete: add/remove files to repositories • Top-of-trunk: most updated
Roadmap • What is SCM • Why do we need SCM • Interesting SCM features • Source control vocabulary • Code Sharing • Lock • Sharing • SCM tools • GForge • Conclusion
Code Sharing • Multiple people can work on the same source base without colliding --- • (1) Lock: locks individual files so only one person at a time can modify it or • (2) Merge: Allows multiple people to modify a source file and the system will automatically merge the changes (usually)
Locking • Only one person can modify certain source files. • Works fairly well if developers work on different areas of the project and don’t conflict often • Problem 1: People forget to unlock files when they are done • Problem 2: People work around locking by editing a private copy and checking in when the file is finally unlocked - easy to lose changes.
Merging • Several people can work on a file at once • Before committing changes, each user merges their copy with the latest copy in the database • This is normally done automatically by the system and usually works, but you should not blindly accept the result of the merge
Roadmap • What is SCM • Why do we need SCM • Interesting SCM features • Source control vocabulary • Code Sharing • Branching • SCM tools • GForge • Conclusion
Branching • Brach sources for different purposes • When a new version ships, typically create a branch for maintenance • Companies ship several products from the same source base • Branching repository “fork” and branch off the base repository. • Double update: (manually) merge back changes in the branching repository 1.0 2.0 1.0.1
Roadmap • What is SCM • Why do we need SCM • Interesting SCM features • Source control vocabulary • Code Sharing • Branching • Labeling • SCM tools • GForge • Conclusion
Labeling • Label all the files in the source base that make up a product at each milestone • Just before and just after a major change (eg. changing several interfaces) • When a new version ships, want to fix fatal bugs in the original version.
Roadmap • What is SCM • Why do we need SCM • Interesting SCM features • SCM tools • GForge • Conclusion
CSM Tools • RCS – “revision control system” • In most Unix system, only source control • CVS – “concurrent versions system” • Free in linux, also support configuration management • SourceSafe • well-integrated into other Microsoft developer products, but not on other platforms • ClearCase • commercial CSM tool • SourceGorge (Gforge) • Projects are available for public discovery and development • http://gforge.cis.cornell.edu/ (http://gforge.org)
Helpful Rules • Archived Files Should Always Compile • Update to get your codes “top-of-chunk” • Code review • Compile and run latest archived files *as a set* before Check-in • No Cheating (even “simple bug fixes”) • Release a lock after you are done. • Don’t overwrite someone else’s code
Roadmap • What is SCM • Why do we need SCM • Interesting SCM features • SCM tools • GForge • Conclusion
GForge • GForge is an online SCM system • SCM tools: create and control access to CVS and Subversion • Collaborating tool: forums and mailing lists; • Access control: over the automatically created repository depending on the role settings of the project • File release, document management, news announcements, surveys, task managements, etc. • Gforge in Cornell CIS • https://gforge.cis.cornell.edu/
Conclusion • SCM tools are Very Helpful • GForge is a Good Project Tools Available at CIS
RCS • File management only • Transaction model • check out and lock • edit • check in and unlock • Little support for binaries
CVS • Built on top of RCS • Therefore little support for binaries • Database can be remote • No locking: merge before commit • Fast • Integrates with emacs
SourceSafe • Microsoft’s entry into the field • Project-based • Checkout-edit-checkin model • Built-in web site creation tools • Integrates with MSDEV
Clearcase • Clearcase is configuration management on steroids • You create a view of the database with a config spec, which describes how to select files from the database. • When you set a view, Clearcase creates a virtual filesystem containing only those versions of the files selected by the config spec
SourceForge • On-line Version Control System • Projects are available for public discovery and development • A very good environment for open source projects