Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
GNU arch
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Features == Being a distributed, decentralized versioning system, each revision stored using arch is uniquely globally identifiable; such identifier can be used in a [[distributed system|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]], [[File Transfer Protocol|FTP]], or [[SSH file transfer protocol|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 ([[Secure Shell|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 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 [[Concurrent Versions System|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, 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 signature]]s : Every changeset is stored with a [[Cryptographic hash function|hash]] to prevent accidental corruption. Using an external file signing program (such as [[GnuPG]] or another [[Pretty Good Privacy|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 [[File system permissions|permissions]] of all files are tracked. [[Symbolic link]]s are supported and are tracked the same way as files and directories.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)