Computing is usually defined as the activity of using and improving computer hardware and software. It is the computer-specific part of information technology...
, GNU arch
is a distributed revision control
A distributed revision control system , distributed version control or decentralized version control keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a common network.-Distributed vs...
system that is part of the GNU Project
The GNU Project is a free software, mass collaboration project, announced on September 27, 1983, by Richard Stallman at MIT. It initiated GNU operating system development in January, 1984...
and licensed under the GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....
. It is used to keep track of the changes made to a source tree and to help programmers combine and otherwise manipulate changes made by multiple people or at different times.
As of 2009, GNU arch's official status is deprecation, only security fixes are applied. A fork of arch, named Bazaar (or 'bzr') has since also been made an official GNU project and can thus be considered the replacement for GNU arch.
Being a distributed, decentralized versioning system, each revision stored using arch is uniquely globally identifiable; such identifier can be used in a distributed setting to easily merge or "cherry-pick" changes from completely disparate sources.
Being decentralized means that there is no need for a central server for which developers have to be authorized in order to contribute. As with other systems, a full read-only copy of a project is made accessible in an "official" repository via HTTP, FTP
File Transfer Protocol is a standard network protocol used to transfer files from one host to another host over a TCP-based network, such as the Internet. FTP is built on a client-server architecture and utilizes separate control and data connections between the client and server...
, or SFTP
In computing, the SSH File Transfer Protocol is a network protocol that provides file access, file transfer, and file management functionality over any reliable data stream...
; but then, contributors are encouraged to make modifications and publish them in a public archive (repository) of their own, so that the head developer may manually merge changesets into the official repository.
To simulate the behavior of centralized revision control systems, the head developer could allow shell access (SSH
Secure Shell is a network protocol for secure data communication, remote shell services or command execution and other secure network services between two networked computers that it connects via a secure channel over an insecure network: a server and a client...
) or write access (FTP, SFTP, WebDAV
Web-based Distributed Authoring and Versioning is a set of methods based on the Hypertext Transfer Protocol that facilitates collaboration between users in editing and managing documents and files stored on World Wide Web servers...
) to a server, allowing authorized users to commit to a central server. More often, GNU arch-managed projects have a lead benevolent dictator that merges changes from contributors.
GNU arch has several other features:
An atomic commit is an operation in which a set of distinct changes is applied as a single operation. If the changes are applied then the atomic commit is said to have succeeded. If there is a failure before the atomic commit can be completed then all of the changes completed in the atomic commit...
s : Commits are all-or-nothing. The tree must be in proper condition before the commit begins, and commits are not visible to the world until complete. If the commit is interrupted before this, it remains invisible and must be rolled back before the next commit. This avoids corruption of the archive and other users' checked-out copies.
Changeset oriented : Instead of tracking individual files (as in CVS
The Concurrent Versions System , also known as the Concurrent Versioning System, is a client-server free software revision control system in the field of software development. Version control system software keeps track of all work and all changes in a set of files, and allows several developers ...
), GNU arch tracks changesets, which are akin to patches. Each changeset is a description of the difference between one source tree and another, and so a changeset can be used to produce one revision from another revision. Authors are encouraged to use one commit per feature or bugfix.
Easy branching : Branching is efficient and can span archives. A branch (or 'tag') simply declares the ancestor revision, and development continues from there.
Advanced merging : Due to the permanent record of all ancestors and merged revisions, merging can take into account which branch contains which patch, and can do three-way merging based on a shared ancestor revision.
Cryptographic signatures : Every changeset is stored with a hash
A cryptographic hash function is a deterministic procedure that takes an arbitrary block of data and returns a fixed-size bit string, the hash value, such that an accidental or intentional change to the data will change the hash value...
to prevent accidental corruption. Using an external file signing program (such as GnuPG or another PGP
Pretty Good Privacy is a data encryption and decryption computer program that provides cryptographic privacy and authentication for data communication. PGP is often used for signing, encrypting and decrypting texts, E-mails, files, directories and whole disk partitions to increase the security...
client), these hashes can also optionally be signed, preventing unauthorized modification if the archive is compromised.
Renaming : All files and directories can be easily renamed. These are tracked by a unique ID rather than by name, so history is preserved, and patches to files are properly merged even if filenames differ across branches.
Metadata tracking : The permissions of all files are tracked. Symbolic link
In computing, a symbolic link is a special type of file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. Symbolic links were already present by 1978 in mini-computer operating systems from DEC and Data...
s are supported and are tracked the same way as files and directories.
GNU arch version 1 and tla
The original author and maintainer
In free and open source software, a software maintainer is usually one or more people who build source code into a binary package for distribution, commit patches, or organize code in a source repository....
of GNU arch was Thomas Lord who started the project in 2001. The command used to manipulate GNU arch repositories is tla
, an acronym for Tom Lord's Arch
. Lord started GNU arch as a collection of shell script
A shell script is a script written for the shell, or command line interpreter, of an operating system. It is often considered a simple domain-specific programming language...
s to provide an alternative to CVS. In 2003, arch
became part of the GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
The GNU arch project forked several times, resulting in both Canonical Ltd.
Canonical Ltd. is a private company founded by South African entrepreneur Mark Shuttleworth to market commercial support and related services for Ubuntu Linux and related projects. Canonical is registered in London and employs staff around the world...
's now abandoned Baz fork and Walter Landry's ArX
ArX is a distributed revision control system. ArX began as a fork of GNU arch, and is licensed under the GPL. Since the fork, ArX has been extensively rewritten in C++, with many new features...
project. Both forks provoked a hostile reaction: the ArX fork was due to a serious dispute in direction and Lord was strongly critical of Canonical's approach to announcing the Baz project.
In August 2005 Lord announced that he was resigning as the maintainer of GNU arch and recommended that Baz project become the main GNU arch project. However, this did not happen: the Baz fork was abandoned by Canonical in favour of the separate Bazaar project. with the 1.5 release of Baz being scrapped in 2006. In October, 2005, Andy Tai announced that Lord and the Free Software Foundation
The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to create, distribute and modify computer software...
had accepted his offer to be the maintainer of GNU arch. Tai subsequently merged many features from Baz back into tla, but in March 2008 indicated that tla was no longer under active development and was no longer competitive with other version control systems.
revc was a prototype revision control project by Thomas Lord that he intended to become GNU arch 2.0, designed to be a radical departure from tla and to draw many ideas from the Git
Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on...
revision control system. It was announced in June 2005, the first pre-release was in July and the last in August, just prior to Lord's resignation as maintainer. revc only had 10 core commands and Lord intended to eliminate restrictive namespaces, complicated filenaming conventions and increase the speed.
As of 2008 the last pre-release, 0.0x2, of revc is still available and Lord is still interested in some of the ideas in GNU arch but does not have the resources to resume development of revc.
Perhaps the most common criticism of GNU arch is that it is difficult to learn, even for users who have experience with other SCM
In software engineering, software configuration management is the task of tracking and controlling changes in the software. Configuration management practices include revision control and the establishment of baselines....
systems. In particular, GNU arch has a large number of commands, which can be intimidating for new users and some design elements arguably too strongly enforce Lord's taste in version control practices.
Some also criticize GNU arch for using very unusual file naming conventions ("FunkyFileNames"
), which can create difficulties for using it in scripts, some shells, and in porting it to non-Unix operating systems. GNU arch has been criticised for having a slow running time as part of a design decision to lessen internal code complexity.
- Revision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...
- List of revision control software
- Comparison of revision control software
The following is a comparison of revision control software. The following tables includes general and technical information for notable revision control and software configuration management software.- General information :Table Explanation...