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. 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. Features 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: Atomic commits 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), 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,