What source code repository should I use for source code control or source code management (SCM)?
Reasons to consider using source code control
- Developer has multiple machines for development, can get difficult to remember which machine has the latest version of a project.
- Having all source codes for all projects in one place
- Can enhance code reuse
Choices for source code management
| Package | Price | O/S | IDE | Commandline | Acessible From Linux SSH | Works with FlexBuilder | Works with Visual Studio |
|---|---|---|---|---|---|---|---|
| Subversion | Free? | Any? | No | Yes | Yes | ||
| Perforce | Expensive? | Any? | Yes | Yes | |||
| SourceSafe | Expensive? | Windows only? | Yes |
Documentation about SCM software
- Subversion
- google:subversion source code management
- Why use subversion: http://copenhagen.pm.org/presentations/subversion/subversion.htm
- http://www.orcaware.com/svn/Subversion-Blair_Zajac.ppt - 31 slides
- Why us cvs vs. svn - (What is cvs)
- Functional replacement for CVS
- Directory versioning (renames and moves)
- Atomic commits (all or nothing)
- Faster network access (binary diffs)
- File & directory meta-data
- Requires less network access
- Subversion client side
- Each working directory has a .svn directory
- Similar to CVS's CVS directory
- Repository password stored in each .svn
- Stores a pristine copy of each file in directory - Nice
- Two locations of SVN repositories
- On a local filesystem
- Typically used for a single developer
- Accessed via direct file read/write access
- Requires that users have local accounts
- Uses filesystem and user/group security
- On a remote system
- Accessed via a HTTP or HTTPS connection
- Does not require that users have accounts on the server
- Use Apache style authentication
- Subversion server design
- Server uses Apache web server
- Browse repository with Internet Explorer or Netscape
- With mod_deflate, compression can be used between client and server
- Repository uses Berkeley Database
- Data integrity
- Atomic writes
- Recoverability
- Hot backups
- Server uses Apache web server
- Command line differences
- CVS
- Argument position matters
- % cvs -d /export/home1/cvs update -d
- SVN
- Argument position does not matter
- % svn log -r 123 foo.c
- % svn log foo.c -r 123
- CVS
- How do revisions work
- Revision numbers are applied to an object to identify a unique version of that object
- Example files
- % ls
- bar.c foo.c
- CVS
- Revision numbers are per file
- A revision number from one file does not necessarily have any meaning to another file with the same revision number
- A commit only updates the revision numbers of files that were modified
- bar.c may be at revision 1.2 and foo.c at 1.10
- Updates to bar.c will not change foo.c's revision number
- Subversion
- Revision numbers are global across the whole repository
- Identify how the entire repository looks at that instant in time
- A commit creates a snapshot of the entire tree in the repository at that revision number
- Allows users to say, "Hey so-and-so, go get revision 1432 of XYZ and try to compile it."
- Before an update, both bar.c and foo.c are at revision 25
- Modify bar.c and commit
- Then update the working copy
- Now bar.c and foo.c are at revision 26, except that foo.c in revision 25 and 26 are identical
- No additional space in repository required, i.e. a cheap copy or a symbolic link is made
- Revision numbers are applied to an object to identify a unique version of that object
- Why us cvs vs. svn - (What is cvs)
Labels:
None
Page:
SourceSafe
Add Comment