GNU arch | |
Author: | Thomas Lord |
Developer: | Andy Tai |
Discontinued: | yes |
Latest Release Version: | 1.3.5 |
Programming Language: | C |
Operating System: | Linux, Windows, Mac OS X |
Genre: | Revision control |
License: | GPL |
GNU arch software is a distributed revision control system that is part of the GNU Project and licensed under the GNU General Public License. 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, and only security fixes are applied.[1] Bazaar (or 'bzr') has since also been made an official GNU project and can thus be considered the replacement for GNU arch. It is not a fork of arch.[2]
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, or SFTP; 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) or write access (FTP, SFTP, WebDAV) 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:
The original author and maintainer of GNU arch was Thomas Lord who started the project in 2001. The command used to manipulate GNU arch repositories is tla, an initialism for Tom Lord's Arch. Lord started GNU arch as a collection of shell scripts to provide an alternative to CVS.[3] In 2003, arch became part of the GNU project.[4]
The GNU arch project forked several times, resulting in both Canonical Ltd.'s now abandoned Baz fork and Walter Landry's ArX 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.[5]
In August 2005 Lord announced that he was resigning as the maintainer of GNU arch and recommended that Baz become the main GNU arch project.[6] However, this did not happen: the Baz fork was abandoned by Canonical in favour of the separate Bazaar project,[7] [8] with the 1.5 release of Baz being scrapped in 2006.[9] In October, 2005, Andy Tai announced that Lord and the Free Software Foundation had accepted his offer to be the maintainer of GNU arch.[10] Tai subsequently merged many features from Baz back into tla,[9] but in March 2008 indicated that tla was no longer under active development and was no longer competitive with other version control systems.[1]
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 revision control system.[11] It was announced in June 2005,[11] the first pre-release was in July[12] and the last in August, just prior to Lord's resignation as maintainer.[13] revc only had 10 core commands and Lord intended to eliminate restrictive namespaces, complicated file naming conventions and increase the speed.[12]
As of 2008 the last pre-release, 0.0x2, of revc is still available[14] and Lord was still interested in some of the ideas in GNU arch but did not have the resources to resume development of revc.[15] Thomas Lord died in June 2022.
Perhaps the most common criticism of GNU arch is that it is difficult to learn, even for users who have experience with other SCM 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.[16] [17]
Some also criticize GNU arch for using very unusual file naming conventions, 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.[18]