CSC/ECE 517 Fall 2009/wiki1a 5 History of version control by av

From Expertiza_Wiki
Jump to navigation Jump to search

Version control is a software utility used to manage the data, specially source code, within a software development environment. Managing the changes are important for software engineers, since during most of time they need to add, modify or fix a small portion of the code (also known as version). And version control does the housekeeping of the changes by providing
 a
 detailed 
history
 of each document
.
 Version control
 implements
 several
 techniques
 to
 ensure
 the
 integrity of
 the
 information,
 while
 making
 use
 of
 minimal
 resources.
 This is a comprehensive list of version control software.


Introduction

Version control,
 also
 known
 as
 revision
 control,
 is
 a
 fundamental
 part
 of
 software
 configuration
 management
(SCM),
and
 acts
 as 
a 
key 
lifeline 
in 
a
 team 
environment.
Version
 control
 works 
by
 keeping
 a
 record
 of
 every
 unit
 of
 information
 and
 tracks
 the
 changes
 and
 updates
 made.


It also
 allows
 for
 multiple
 users
 to
 edit
 the
 same
 document
 at
 the
 same
 time,
 providing
 a
 valuable
 resource
 for
 team
 projects,
 and
 enabling
 a
 better
 working
 environment.
 Keeping
 records
 of
 all
 changes
 to
 a
 set
 of
 information
 provides
 a
 fail‐safe
 solution
 to
 data
 management,
 and
 an
 archive
 for
 subsequent
 reference.


Version control works
 by
 uniquely
 identifying
 each
 piece
 of
 information
 and
 recording
 the
 changes
 with
 it.
 The
 information
 is
 stored
 in
 a
 data repository,
 an
 information
 database,
 and
 can
 be
 accessed
 remotely
 or
 locally
 depending
 on
 the
 type
 of
 system.
 When
 a
 user
 is
 required
 to
 make
 changes
 to
 a
 document,
they 
can
 checkout the
 information
 from
 the
 system,
giving 
them
 the 
most
 up‐to‐date
 version
 of
 the
 file
 in
 their
 working
 copy .
 Once
 the
 file
 has
 been
 amended,
 the
 user
 can
 then
 commit ,
 re‐submit,
 the
 file
 updating
 the
 copy
 in
 the
 repository
 ready
 for
 use simple
 concept,
 there
 are
 many
 problems
 such
 as
 revision 
storage.


 While file systems provide operations like open, save, rename and delete, version control systems provide checking-in and
 checking-out. Like their file system counterparts checking-in stores a file version, and checking-out retrieves a file revision
 from the system.
A typical history of a file version in SVN.
Trunk is the main copy of a project on which development progresses. Team members creates branches (Similar to fork) from 
the trunk and work on that copy.This provides the flexibility to modify the document in parallel along both branches. Ans at the 
end changes are merged to the Trunk, and this process continues.



History

Change and Configuration Control (CCC)

The history of Version control dates back to 1975 when Software Configuration Management(CCC) became commerical for the first time with the advent of Change and Configuration Control (CCC),which was developed by the SoftTool Corporation.

Source Code Control System(SCCS)

Then came the Source Code Control System which was developed by M. J Rochkind in the very early 1970’s. Designed basically for a unix system, it provided a simple locking model to serialize development.

Diff Algorithm

The
 diff
 algorithm
was
 was developed
 by
AT&T
Bell
 Labs
 in
 1974,
 and
 prototyped
 by
 James
W.
Hunt
 in
 1976.
 
It works
 by
 finding
 the
 longest
 common
 subsequence,
 then
 comparing
 the
 data
 preceding and
 following it,
incorporating the changes in a diff or a patchfile(UNIX Systems).


Revsion Control System(RCS)

In the early 1980’s Walter Tichy introduced the Revision Control System(RCS). RCS introduced both forward and reverse delta concepts for efficient storage of different file revisions.

Concurrent Version System(CVS)

Next came the Concurrent Version System designed and originally implemented by Dick Grunein 1986 and then modified by Berliner et al in 1990. It became very popular and was the defacto standard within the open soure community for many years due
 to 
its
 ‘non‐restrictive
 modus
operandi’
and
 its
‘support
for
network
operations’
.
One 
notable 
drawback
 to 
CVS
 was
 that 
it
 didn't support versioning of re-named or relocated material identifying them as new files instead of new versions.

Subversion(SVN)

Perceived shortcomings and faults in CVS eventually led to a new version control system called Subversion(SVN) around 2001.It was developed by CollabNet Inc. Unlike CVS, SVN committed changes atomically and significantly had better support for branches.

Distributed Version Control

The paradigm then shifted from client server architecture to a distributed system around 2001, with the development of systems like SVK,Bitkeeper, Mercurial, GNU Arch, DARCS, GIT, Bazaar, monotone, codeville, Vesta , Aegis and many more.The repository is split into several
sub‐repositories
 for 
each
 section
 or 
module
 of 
a
 project.
The
 sub‐repositories 
can
 be
 stored 
on
 servers 
or
 local 
machines.This enables every developer to edit his local sharable copy without having to connect to any network connection.


Problem in earlier Version

List some of the problem of earlier version.


Solution to these

How they solved these problem.


Why it was necessary


Conclusion

I believe that these five sites, while some were harder to find than others, are all great guides and examples on understanding and eventually creating a use case document.


External References

[1] http://en.wikipedia.org/wiki/Use_case

[2] http://infogenium.typepad.com/inside_infogenium/2007/07/getting-started.html

[3] http://www.parlezuml.com/tutorials/usecases.htm

[4] http://courses.softlab.ntua.gr/softeng/Tutorials/UML-Use-Cases.pdf

[5] http://www.readysetpro.com/whitepapers/usecasetut.html