GNU arch

In computing, GNU arch is a revision control system, similar in purpose to tools such as CVS, SCCS, and Subversion. 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.

Contents

Features

GNU arch uses a slightly different paradigm from most versioning systems, in that each revision is uniquely globally identifiable. This results in a very scalable system that allows easy merging and applying of changes from completely disparate sources.

GNU arch is decentralized, removing the need for a central server for which developers have to be authorized in order to contribute. Instead, GNU arch is designed so that a full read-only copy of a project is made accessible by a head developer via HTTP, FTP, or SFTP, and each contributor is encouraged to retrieve a copy of the project, make modifications, then publish their changeset to allow the head developer to manually merge said changeset into the official project that's later refreshed on the read-only copy.

To simulate the behavior of centralized revision control systems, the head developer could allow shell access (SSH) or write access (FTP, WebDAV) to a server, allowing authorized users to commit to a central server.

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 orientated: Instead of tracking individual files, GNU arch tracks changesets, which may span multiple files. Each changeset is essentially a snapshot of the tree, with no files out of date relative to each other. 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 to prevent accidental corruption. Using an external file signing program (almost always GnuPG or other PGP 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 links are supported and are tracked the same way as files and directories.

Author

The primary author and maintainer of arch is Tom Lord, and for that reason it is sometimes referred to as tla, an acronym for Tom Lord's Arch. Lord started arch as a collection of shell scripts to provide an alternative to CVS. In 2003, arch became part of the GNU project.

Criticism

Perhaps the most common criticism of arch is that it is difficult to learn, even for users who have experience with other SCM systems. In particular, arch has a large number of commands, which can be intimidating for new users.

Some also criticize arch for using very unusual file naming conventions[1] (http://wiki.gnuarch.org/FunkyFileNames), which can create difficulties for using arch in scripts, some shells, and in porting arch to non-Unix operating systems. In addition to a perceived lack of portability, at present arch has a reputation of not scaling well to large trees.

Proponents of arch point out that the project is still maturing, and that any serious problems will likely be addressed as work continues.

Other versions

The ArX[2] (http://savannah.nongnu.org/projects/arx/) and Bazaar revision control systems originated as forks of arch.

External links

Navigation

  • Art and Cultures
    • Art (https://academickids.com/encyclopedia/index.php/Art)
    • Architecture (https://academickids.com/encyclopedia/index.php/Architecture)
    • Cultures (https://www.academickids.com/encyclopedia/index.php/Cultures)
    • Music (https://www.academickids.com/encyclopedia/index.php/Music)
    • Musical Instruments (http://academickids.com/encyclopedia/index.php/List_of_musical_instruments)
  • Biographies (http://www.academickids.com/encyclopedia/index.php/Biographies)
  • Clipart (http://www.academickids.com/encyclopedia/index.php/Clipart)
  • Geography (http://www.academickids.com/encyclopedia/index.php/Geography)
    • Countries of the World (http://www.academickids.com/encyclopedia/index.php/Countries)
    • Maps (http://www.academickids.com/encyclopedia/index.php/Maps)
    • Flags (http://www.academickids.com/encyclopedia/index.php/Flags)
    • Continents (http://www.academickids.com/encyclopedia/index.php/Continents)
  • History (http://www.academickids.com/encyclopedia/index.php/History)
    • Ancient Civilizations (http://www.academickids.com/encyclopedia/index.php/Ancient_Civilizations)
    • Industrial Revolution (http://www.academickids.com/encyclopedia/index.php/Industrial_Revolution)
    • Middle Ages (http://www.academickids.com/encyclopedia/index.php/Middle_Ages)
    • Prehistory (http://www.academickids.com/encyclopedia/index.php/Prehistory)
    • Renaissance (http://www.academickids.com/encyclopedia/index.php/Renaissance)
    • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
    • United States (http://www.academickids.com/encyclopedia/index.php/United_States)
    • Wars (http://www.academickids.com/encyclopedia/index.php/Wars)
    • World History (http://www.academickids.com/encyclopedia/index.php/History_of_the_world)
  • Human Body (http://www.academickids.com/encyclopedia/index.php/Human_Body)
  • Mathematics (http://www.academickids.com/encyclopedia/index.php/Mathematics)
  • Reference (http://www.academickids.com/encyclopedia/index.php/Reference)
  • Science (http://www.academickids.com/encyclopedia/index.php/Science)
    • Animals (http://www.academickids.com/encyclopedia/index.php/Animals)
    • Aviation (http://www.academickids.com/encyclopedia/index.php/Aviation)
    • Dinosaurs (http://www.academickids.com/encyclopedia/index.php/Dinosaurs)
    • Earth (http://www.academickids.com/encyclopedia/index.php/Earth)
    • Inventions (http://www.academickids.com/encyclopedia/index.php/Inventions)
    • Physical Science (http://www.academickids.com/encyclopedia/index.php/Physical_Science)
    • Plants (http://www.academickids.com/encyclopedia/index.php/Plants)
    • Scientists (http://www.academickids.com/encyclopedia/index.php/Scientists)
  • Social Studies (http://www.academickids.com/encyclopedia/index.php/Social_Studies)
    • Anthropology (http://www.academickids.com/encyclopedia/index.php/Anthropology)
    • Economics (http://www.academickids.com/encyclopedia/index.php/Economics)
    • Government (http://www.academickids.com/encyclopedia/index.php/Government)
    • Religion (http://www.academickids.com/encyclopedia/index.php/Religion)
    • Holidays (http://www.academickids.com/encyclopedia/index.php/Holidays)
  • Space and Astronomy
    • Solar System (http://www.academickids.com/encyclopedia/index.php/Solar_System)
    • Planets (http://www.academickids.com/encyclopedia/index.php/Planets)
  • Sports (http://www.academickids.com/encyclopedia/index.php/Sports)
  • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
  • Weather (http://www.academickids.com/encyclopedia/index.php/Weather)
  • US States (http://www.academickids.com/encyclopedia/index.php/US_States)

Information

  • Home Page (http://academickids.com/encyclopedia/index.php)
  • Contact Us (http://www.academickids.com/encyclopedia/index.php/Contactus)

  • Clip Art (http://classroomclipart.com)
Toolbox
Personal tools