FACTOID # 3: South Carolina has the highest rate of violent crimes and aggravated assaults per capita among US states.
 
 Home   Encyclopedia   Statistics   States A-Z   Flags   Maps   FAQ   About 
   
 
WHAT'S NEW
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > Subversion (software)
Subversion
Developer: CollabNet
Latest release: 1.4.5 / 27 August 2007
OS: Cross-platform
Genre: Revision control
License: Apache License
Website: http://subversion.tigris.org/

In computing, Subversion (SVN) is a version control system (VCS) initiated in 2000 by CollabNet Inc. It allows users to keep track of changes made to any type of electronic data, typically source code, web pages or design documents. Image File history File links Subversion. ... “Software development” redirects here. ... CollabNet produces development collaboration software, enabling groups of developers to work together on a project, even if they are geographically dispersed from one another. ... Code complete redirects here. ... is the 239th day of the year (240th in leap years) in the Gregorian calendar. ... Year 2007 (MMVII) is the current year, a common year starting on Monday of the Gregorian calendar and the AD/CE era in the 21st century. ... An operating system (OS) is the software that manages the sharing of the resources of a computer and provides programmers with an interface used to access those resources. ... A cross-platform (or platform independent) programming language, software application or hardware device works on more than one system platform (e. ... Computer software can be organized into categories based on common function, type, or field of use. ... Revision control (also known as version control (system) (VCS), source control or (source) code management (SCM)) is the management of multiple revisions of the same unit of information. ... A software license is a legal agreement which may take the form of a proprietary or gratuitous license as well as a memorandum of contract between a producer and a user of computer software. ... The Apache License (Apache Software License previous to version 2. ... A website (alternatively, Web site or web site) is a collection of Web pages, images, videos or other digital assets that is hosted on one or several Web server(s), usually accessible via the Internet, cell phone or a LAN. A Web page is a document, typically written in HTML... Revision control (also known as version control (system) (VCS), source control or (source) code management (SCM)) is the management of multiple revisions of the same unit of information. ... CollabNet produces development collaboration software, enabling groups of developers to work together on a project, even if they are geographically dispersed from one another. ...


Subversion is currently a popular alternative to CVS (another widely used VCS), particularly among open source projects.[1] Projects using Subversion include the Apache Software Foundation, KDE, GNOME, Free Pascal, GCC, Python, Ruby, Sakai, Samba, and Mono. SourceForge.net and Tigris.org also provide Subversion hosting for their open source projects, Google Code and BountySource systems use it exclusively. Subversion is also finding adoption in the corporate world. In a 2007 report by Forrester Research, Subversion was recognized as the sole leader in the Standalone Software Configuration Management (SCM) category and strong performer in the Software Configuration and Change Management (SCCM) category.[2] The Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is an open-source version control system invented and developed by Dick Grune in the 1980s. ... Apache Software Foundation Logo The Apache Software Foundation (ASF) is a non-profit corporation (classified as 501(c)(3) in the United States) to support Apache software projects, including the Apache HTTP Server. ... For the NYSE stock ticker symbol KDE, see 4Kids Entertainment. ... This article is about the mythical creature. ... The FreePascal IDE for Linux. ... The GNU Compiler Collection (usually shortened to GCC) is a set of programming language compilers produced by the GNU Project. ... Python is a high-level programming language first released by Guido van Rossum in 1991. ... Ruby is a reflective, dynamic, object-oriented programming language. ... The Sakai Project is developing open-source educational software. ... Samba logo. ... Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant . ... SourceForge. ... Tigris. ... Google Code is Googles site for developers interested in Google-related development. ... BountySource is a collaborative project management service for use by any Open Source Software with an OSI-approved license. ... Year 2007 (MMVII) is the current year, a common year starting on Monday of the Gregorian calendar and the AD/CE era in the 21st century. ... Forrester logo. ...


Subversion is released under the Apache License, making it free software. The Apache License (Apache Software License previous to version 2. ... Free software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions only to ensure that further recipients can also do these things. ...

Contents

History

Features

  • Commits are true atomic operations. Interrupted commit operations do not cause repository inconsistency or corruption.
  • Renamed/copied/moved/removed files retain full revision history.
  • Directories, renames, and file metadata are versioned. Entire directory trees can be moved around and/or copied very quickly, and retain full revision history.
  • Versioning of symbolic links.
  • Native support for binary files, with space-efficient binary-diff storage.
  • Apache HTTP Server as network server, WebDAV/DeltaV for protocol. There is also an independent server process that uses a custom protocol over TCP/IP.
  • Branching and tagging are cheap operations, independent of file size.
  • Natively client/server, layered library design.
  • Client/server protocol sends diffs in both directions.
  • Costs are proportional to change size, not data size.
  • Parsable output, including XML log output.
  • Open source licensed — "CollabNet/Tigris.org Apache-style license"
  • Internationalised program messages.
  • File locking for unmergeable files ("reserved checkouts").
  • Path-based authorization for svnserve.
  • PHP, Python, Ruby, Perl, and Java language bindings.
  • Full MIME support - the MIME Type of each file can be viewed or changed, with the software knowing which MIME types can have their differences from previous versions shown.

In the context of computer science and data management, commit refers to the idea of making permanent a set of tentative changes, such as at the end of a transaction. ... For other uses, see Atomicity (disambiguation). ... Metadata is data about data. ... In computing, a symbolic link (often shortened to symlink and also known as a soft link) consists of a special type of file that serves as a reference to another file. ... The Apache HTTP Server, commonly referred to simply as Apache, is a web server notable for playing a key role in the initial growth of the World Wide Web. ... WebDAV, an abbreviation that stands for Web-based Distributed Authoring and Versioning, refers to the set of extensions to the Hypertext Transfer Protocol (HTTP) which allows users to collaboratively edit and manage files on remote World Wide Web servers. ... Delta-V is an extension of the WebDav protocol, adding versioning of resources. ... For other senses of this word, see protocol. ... In computing, a process is an instance of a computer program that is being executed. ... The Internet protocol suite is the set of communications protocols that implement the protocol stack on which the Internet runs. ... A tag is the term often used to define a textual label that can be associated with a specific revision of a project maintained by a version control system. ... Client/Server is a network application architecture which separates the client (usually the graphical user interface) from the server. ... An abstraction layer is a way of hiding the implementation details of a particular set of functionality. ... Julio Pérez Ferrero Library - Cúcuta, Colombia A modern-style library in Chambéry A library is a collection of information, sources, resources, and services: it is organized for use and maintained by a public body, an institution, or a private individual. ... In computing, diff is a file comparison utility that outputs the differences between two files. ... An example of parsing a mathematical expression. ... The Extensible Markup Language (XML) is a general-purpose markup language. ... Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ... CollabNet produces development collaboration software, enabling groups of developers to work together on a project, even if they are geographically dispersed from one another. ... Tigris. ... Internationalization redirects here. ... For other uses, see PHP (disambiguation). ... Python is a high-level programming language first released by Guido van Rossum in 1991. ... Ruby is a reflective, object-oriented programming language. ... Wikibooks has a book on the topic of Perl Programming Perl is a dynamic programming language created by Larry Wall and first released in 1987. ... Java language redirects here. ... In computing, a binding from a language to a library or OS service is an API providing that service in the language. ... For mime as an art form, see mime artist. ...

Repository access

As of version 1.4, Subversion repositories can be accessed by the following means:

  • Local filesystem or network filesystem,[3] accessed by client directly.
  • WebDAV/DeltaV (over http or https) using the mod_dav_svn module for Apache 2.
  • Custom "svn" protocol (default port 3690), using plain text or over SSH.

All three means can access both FSFS and Berkeley DB repositories. The Apache HTTP Server, commonly referred to simply as Apache, is a web server notable for playing a key role in the initial growth of the World Wide Web. ... SSH redirects here. ... Berkeley DB (BDB) is a high-performance, embedded database library with bindings in C, C++, Java, Perl, Python, Ruby, Tcl, Smalltalk and many other programming languages. ...


Layers

Subversion is composed internally of several libraries arranged as layers. Each performs a specific task and allows developers to create their own tools at the desired level of complexity and specificity.

Fs 
The lowest level; it implements the versioned filesystem which stores the user data.
Repos 
Concerned with the repository built up around the filesystem. It has many helper functions and handles the various 'hooks' that a repository may have, e.g. scripts that are run when an action is performed. Together, Fs and Repos constitute the "filesystem interface".
mod_dav_svn 
Provides WebDAV/DeltaV access through Apache 2.
Ra 
Handles "repository access", both local and remote. From this point on, repositories are referred to using URLs, i.e. file:///path/ for local access, http://host/path/ (or https) for WebDAV access, or svn://host/path/ (or svn+ssh) for the SVN protocol.
Client, Wc 
The highest level. It abstracts repository access and provides common client tasks, e.g authenticating the user, or comparing versions. The Wc library is used by Client to manage the local working copy.

WebDAV, an abbreviation that stands for Web-based Distributed Authoring and Versioning, refers to the set of extensions to the Hypertext Transfer Protocol (HTTP) which allows users to collaboratively edit and manage files on remote World Wide Web servers. ...

Filesystem

The Subversion filesystem is described as a "three dimensional" filesystem. Since most representations of a directory tree (e.g tree view) are two dimensional, the added dimension is that of revisions. Each revision in a Subversion filesystem has its own root, which is used to access contents at that revision. Files are stored as links to the most recent change; thus a Subversion repository is quite compact. The storage space used is proportional to the number of changes made, not to the number of revisions. A tree view or an outline view is a graphical user interface element (widget) that presents a hierarchial view of information. ... In computer file systems, the root directory is the first or top-most directory in a hierarchy. ...


The Subversion filesystem uses transactions to keep changes atomic. A transaction is begun from a specified revision of the filesystem, not necessarily the latest. The transaction has its own root, on which changes are made. It is then either committed and becomes the latest revision, or is aborted. The transaction is actually a long-lived filesystem object; a client does not need to commit or abort a transaction itself, rather it can also begin a transaction, exit, and then can re-open the transaction and continue using it. Multiple clients can access the same transaction and work together on an atomic change. In computer science, atomicity implies indivisibility and irreducibility, so an atomic operation must appear to be performed entirely or not at all. ...


Properties

One important feature of the Subversion filesystem is properties, simple name=value pairs of text. Properties are used in two different places in the Subversion filesystem. The first is on filesystem entries (i.e., files and directories). These are versioned just like other changes to the filesystem. Users can add any property they wish, and the Subversion client uses a set of properties, which it prefixes with 'svn:'.

svn:executable 
Makes files on Unix-hosted working copies executable.
svn:mime-type 
Stores the MIME type of a file. Affects the handling of diffs and merging.
svn:ignore 
A list of filename patterns to ignore in a directory. Similar to CVS's .cvsignore file.
svn:keywords 
A list of keywords to substitute into a file when changes are made. The keywords must also be referenced in the file as $keyword$. This is used to maintain certain information (e.g date of last change, revision number) in a file without human intervention.
svn:eol-style 
Makes the client convert end-of-line characters in text files. Used when the working copy is needed with a specific EOL style. "native" is commonly used, so that EOL's match the users OS EOL style. Repositories may require this property on all files to prevent inconsistent line endings, which can be a problem in itself.
svn:externals 
Allows parts of other repositories to be automatically checked-out into a sub-directory.
svn:needs-lock 
Specifies that a file is to be checked out with file permissions set to read-only. This is designed to be used with the locking mechanism. The read-only permission is a reminder to obtain a lock before modifying the file: obtaining a lock makes the file writable, and releasing the lock makes it read-only again. Locks are only enforced during a commit operation. Locks can be used without setting this property. However, that is not recommended, because it introduces the risk of someone modifying a locked file; they will only discover it has been locked when their commit fails.
svn:special 
This property isn't meant to be set or modified directly by users. Currently only used for having symbolic links in the repository. When a symbolic link is added to the repository, a file containing the link target is created with this property set. When a Unix-like system checks out this file, the client converts it to a symbolic link.

The second place in Subversion where properties are used is on revisions themselves. Like the above properties on filesystem entries the names are completely arbitrary, with the Subversion client using certain properties prefixed with 'svn:'. However, these properties are not versioned and can be changed later. Filiation of Unix and Unix-like systems Unix (officially trademarked as UNIX®, sometimes also written as or ® with small caps) is a computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs including Ken Thompson, Dennis Ritchie and Douglas McIlroy. ... For mime as an art form, see mime artist. ... The Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is an open-source version control system invented and developed by Dick Grune in the 1980s. ... In computing, EOL refers to the end-of-line character or signal. ... In computing, a symbolic link (often shortened to symlink and also known as a soft link) consists of a special type of file that serves as a reference to another file. ...

svn:date 
The date and time stamp of when the revision was made.
svn:author 
The name of the user that submitted the change(s).
svn:log 
The user-supplied description of the change(s).

Branching and tagging

Subversion uses the interfile branching model from Perforce[4] to handle branches and tags. A new branch or tag is created with the 'svn copy' command, which should be used in place of the native operating system mechanism. Subversion does not create an entire new file in the repository with its copy. Instead, the old and new files are linked together internally and the history is preserved for both. The copied files take up only a little extra room in the repository because Subversion saves only the differences from the original files. Perforce, is a commercial, proprietary revision control system. ...


The minimal layout recommended for a project repository looks similar to this with branches and tags added:

  • project/
    • trunk/
    • branches/
    • tags/

On larger projects, the above structure is repeated throughout the repository at different levels in the project tree. The paths listed under tags are snapshots of the trunk on the same repository level, and they are commonly named after the release dates or version related to snapshot. The paths under tags are generally for read-only access once created.

  • tags/
    • 20050516/
    • 20060320/
    • 20070801/

The paths listed under branches are commonly named after subsequent minor versions (or subversions) of the current repository level, given names of certain features, or have cross reference information. Branches can form more repository levels and also have a trunk node. For example, the layout as shown above is repeated as if the branches form new sub-projects of the project.

  • branches/
    • 1.2/
      • trunk/
      • tags/
        • 1.2.3/
      • branches/
    • 2.0/
      • trunk/
      • tags/
      • branches/
        • 2.0.1/
          • trunk/
          • tags/
          • branches/

The tags directory contains snapshots of the trunk at particular milestones, usually major releases or perhaps prior to a major departure in development.


The trunk directory holds the head version for each branch level.


The branches directory holds versions (or subversions) of the project that a developer or group of developers may be working on. Each trunk path is in alignment to merge changes with the trunk in the level above each other. The changes can be merged into the trunk above or into other branches. This not only allows changes to be checked into the repository and shared separately; it also allows implementations models to be distributed across the repository and provides access to previous versions for maintenance.


It is not intended for someone to check-out the entire project tree; instead, they need only to check-out one of the trunk paths or one of the tagged snapshots.


The tags were made by svn mechanisms, like the usual command line to copy a trunk to a new path:

svn copy trunk tags/my-new-snapshot

Likewise, branch creation only requires a few extra steps to set up a new layout:

svn mkdir branches/my-new-branch
svn mkdir branches/my-new-branch/tags
svn mkdir branches/my-new-branch/branches
svn copy trunk branches/my-new-branch/trunk

All the files in each branch maintain the history of the file up to the point of the copy, plus any changes made since. Changes can be 'merged' back into the trunk or between branches. To Subversion, the only difference between tags and branches is that changes should not be checked into the tagged versions. Due to the differencing algorithm, creating a tag or a branch takes very little additional space in the repository.

Visualization of very simple Subversion project.
Visualization of very simple Subversion project.

Image File history File links This is a lossless scalable vector image. ... Image File history File links This is a lossless scalable vector image. ...

Current problems

A known problem in Subversion is the implementation of the file and directory rename operation. Subversion currently implements the renaming of files and directories as a 'copy' to the new name followed by a 'delete' of the old name. Only the names are changed, all data relating to the edit history remains the same, and Subversion will still use the old name in older revisions of the "tree". However Subversion may be confused when files are modified and moved - the normal workaround is to make a separate commit just for the move. This can also cause problems when a move conflicts with edits made elsewhere. This is documented in the Subversion issue database.[5]


Subversion currently lacks some repository administration and management features. For instance, it is sometimes desired to make permanent edits to the repository to permanently remove all historical records of certain data being in the repository. Subversion does not have built-in support to allow this to be done simply. The standard user-level interface allows files and directories to be moved or deleted, but earlier versions of the repository can always be retrieved. The current solution to this sort of problem involves 'dumping' the repository, editing the resulting (possibly large) text file, and then recreating the repository. For simple renaming or removal of files this is fairly straight-forward, but other alterations can be more complex and hence error-prone.[6]


Most related toolsets are not as mature (such as eclipse SVN plugins[7]) and this combines with the fact that subversion can be put into invalid states by these tools where the metadata on the local disk is invalid and the "cleanup" command will not fix it. In some cases, manual workarounds such as mucking with the internal .svn files or deleting and re-checking out directores are then required.


Subversion stores additional copies of data on the local machine, which can be an issue for very large projects or files, or if developers are working on multiple branches simultaneously.


Subversion requires the use of extra .svn directories which can become mangled. The SVK project aims to improve this situation. SVK is a decentralized version control system written in Perl, with a design comparable to BitKeeper and GNU arch. ...


Releases

Main article: Software that uses Subversion

CollabNet is still involved with Subversion but the project is run as an independent open source community. The home of Subversion is on Tigris.org, an open-source community dedicated to software engineering tools. The following list of software that uses Subversion documents various software applications which interact with Subversion, a revision control system used in software development. ... Tigris. ...


The Subversion open-source community does not provide binaries but these can be downloaded from volunteers and from CollabNet, the initiator of the Subversion project. While the Subversion project does not include an official graphical user interface (GUI) for use with Subversion, a number of different GUIs have been developed, along with a wide variety of additional ancillary software. GUI redirects here. ...


See also

Free software Portal

Image File history File links Free_Software_Portal_Logo. ... It has been suggested that this article or section be merged with Comparison of revision control software. ... The following tables compare general and technical information for notable revision control and software configuration management (SCM) software. ... List of Subversion clients: Tortoise SVN AnkhSVN eSvn QSvn RapidSVN SmartSVN Subclipse VisualSVN WorkBench svnX Subversion (software) Version Control Categories: | ... SVK is a decentralized version control system written in Perl, with a design comparable to BitKeeper and GNU arch. ...

References

  1. ^ VCS: Real-time open source activity stats
  2. ^ The Forrester Wave: Software Change and Configuration Management, Q2 2007. Forrester Research.
  3. ^ Berkeley DB relies on file locking and thus should not be used on (network) filesystems which do not implement them
  4. ^ http://www.perforce.com/perforce/branch.html
  5. ^ http://subversion.tigris.org/issues/show_bug.cgi?id=898
  6. ^ http://subversion.tigris.org/issues/show_bug.cgi?id=516
  7. ^ http://atomized.org/2005/09/subversion-sucks/3
  • C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick; Version Control with Subversion; O'Reilly; ISBN 0-596-00448-6 (1st edition, paperback, 2004, full book online at http://svnbook.red-bean.com/)
  • Garrett Rooney; Practical Subversion; Apress; ISBN 1-59059-290-5 (1st edition, paperback, 2005)
  • Mike Mason; Pragmatic Version Control Using Subversion; Pragmatic Bookshelf; ISBN 0-9745140-6-3 (1st edition, paperback, 2005)
  • William Nagel; Subversion Version Control: Using the Subversion Version Control System in Development Projects; Prentice Hall; ISBN 0-13-185518-2 (1st edition, paperback, 2005)

Forrester logo. ... Berkeley DB (BDB) is a high-performance, embedded database library with bindings in C, C++, Java, Perl, Python, Ruby, Tcl, Smalltalk and many other programming languages. ...

External links


  Results from FactBites:
 
subversion.tigris.org (664 words)
Subversion is designed to be client/server from the beginning; thus avoiding some of the maintenance problems which have plagued CVS.
Subversion is equally efficient on binary as on text files, because it uses a binary diffing algorithm to transmit and store successive revisions.
Subversion uses gettext() to display translated error, informational, and help messages, based on current locale settings.
Subversion (software) - Wikipedia, the free encyclopedia (686 words)
Subversion is an open source application used for revision control.
Subversion is designed specifically to be a modern replacement for CVS and shares a number of the same key developers.
CIA is a piece of software that notifies people of repository activity.
  More results at FactBites »

 
 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments

Want to know more?
Search encyclopedia, statistics and forums:

 


Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms, 1022, m