New topics: Your Pet, IOU, Baby IQ, The Poisons, Birther II, Games, Future Power

Welcome to the Tech Space!

Are you interested in Linux?

Skip to end of metadata
Go to start of metadata

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
      • 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
      • 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
Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.