darcs
" Darcs is a free, open source source code management system.- Distributed: Every user has access to the full command set, removing boundaries between server and client or committer and non-committers.
- Interactive: Darcs is easy to learn and efficient to use because it asks you questions in response to simple commands, giving you choices in your work flow. You can choose to record one change in a file, while ignoring another. As you update from upstream, you can review each patch name, even the full "diff" for interesting patches.
- Smart: Originally developed by physicist David Roundy, darcs is based on a unique algebra of patches.
- http://darcs.net/
- http://wiki.darcs.net/
- Manual: http://www.darcs.net/manual/darcs.html
- Implementing the darcs patch formalism...and verifying it
- http://en.wikibooks.org/wiki/Understanding_darcs/Patch_theory
At its most basic level, the theory of patches is about the commutation, or reordering, of changes in such a way that their meaning doesn't change. The rules of commutation tell us when, for example, one patch requires another, since dependent patches cannot be commuted. Once the commutation primitives have been worked out, one can do all sorts of interesting (and useful) operations, such as merging. And such operations can be shown to be independent of order, i.e. it doesn't matter whether you merge patch A or patch B first, you'll get the same result. David Roundy
"Arch really is the only other revision control system I am aware of which is really change-oriented. Other systems may be change/set/ oriented, but fundamentally they keep track of versions, rather than changes." David RoundyNB: dans darcs, un repository est simplement un ensemble de patches.
Commands
See darcs commands- darcs changes: affiche les changements effectués
- options
- --summary (or -s) summarizes the files changed
- --verbose (or -v) shows the actual diffs
- --patches (or -p) lets you filter
- options
- darcs get from host to path: récupération d'un répertoire depuis le serveur host et stockage dans le chemin local path
- darcs put to host from path: envoi au serveur host de l'ensemble des patches appliqués localement dans path depuis le dernier envoi
- darcs pull: comme get, mais incrémental
- darcs push: comme put, mais incrémental
- darcs revert: reverses a patch and completely removes it from history. All changes are lot unless you have the patch in another repository.
Patch dependencies
Source: http://slipgate.za.net/darcs/darcs_osdc/slides/start.html Patches in darcs are commutative:- They have no chronological order
- Only dependency order
- Metadata (which files have changed and how)
- Textual delta (the actual differences)
- Patch A introduces one line...
- Patch B changes it...
- To apply patch B we first need to apply patch A
- That's a Patch Dependency
- Patch dependencies form a Directed Acyclic Graph
- Patches can be applied in any order
- ...as long as they don't depend on each other"
Conflicts
"Darcs will refuse to apply a conflicting patch Unless you say… --external-merge, --mark-conflicts" "A merge patch depends on two conflicting patches, and contains a diff that merges them. The conflicting parts are overridden by the merge." See darcs manual section on conflictsPrivacy
Concept of private patches.Live examples
- Fil RSS de patches récents sur un serveur: patch rss feed
- Exemple de contenu d'un patch: patch "Added --nolinks option to request actual copies instead of hard-links for files."
- Liste de patches appliqués à un fichier: patch list
XML output
darcs changes --xml-output
<changelog>
<patch author='me@email.com' date='20040605033308' local_date='Sat Jun 5 05:33:08 CEST 2004'
inverted='False' hash='20040605033308-e14b9-451ae7bc1c4e822940526960e4d8a1faed2f5ed4.gz'>
<name>initial import of hello.txt</name>
</patch>
</changelog>
Version 1.18 last modified by Stéphane Laurière on 24/08/2007 at 10:28
Document data
Attachments:
No attachments for this document

Comments: 0