Darcs funciona desde la consola, por lo que hay que utilizarlo desde "Símbolo del sistema" o "Cygwin" en Windows y desde sus correspondientes en Linux, Mac... Para descargarlo está éste link y un buen manual para iniciarse por encima está aquí. Si utilizas Windows ( es el sistema que manejo yo, no sé cómo se hace en los demás) te recomiendo crear una carpeta, por ejemplo, en el disco local (su ruta sería "C.\darcs") y luego ir a Panel de Control >> Impresoras y otro hardware >> Sistema >> Opciones avanzadas >> Variables de entorno. Ahora en la parte baja te aparecerá una lista de variables. Eliges la variable path y le das a Modificar. Al final de la lista escribes un ";" (sin comillas) y la ruta en la que tenías Darcs (en este caso, "C.\darcs" sin comillas). Así podrás seguir más fácil esta miniguía. Comencemos por poner unos comandos básicos de ese "Símbolo del sistema" en Windows:
- cd + nombre directorio -> Cambia el directorio actual al que especifiques. Por ejemplo, si estás en una carpeta que tenga un directorio que se llame "principal" y tú pones el comando "cd principal" te moverás a ese subdirectorio. Si le pones ".." retrocede al directorio anterior.
Con eso bastará, creo. Ahora sólo crea un directorio en el disco local ( C: ) de nombre "principal", abre el "Símbolo del Sistema" y entra en ese directorio. Comenzamos:
- Inicia Darcs
Lo primero, una vez estés en el símbolo del sistema y hayas entrado en ese directorio, es iniciar Darcs y crear un repositorio. Para eso escribe:
- Código: Seleccionar todo
darcs initialize
Y ya está. Se creará un directorio llamado "_darcs" dentro de "principal" que contendrá la información del repositorio. Procuro no modificar nada que tenga en su interior.
- Añadiendo archivos
Ahora crea un archivo dentro de "principal" que se llame "yo.txt" y escribe dentro tu nombre. Luego ejecuta el siguiente comando:
- Código: Seleccionar todo
darcs add yo.txt
Con ese comando ya lo habrás añadido, pero todavía no lo has guardado.
- Guardando ambios
Para guardar cambios, ejecuta:
- Código: Seleccionar todo
darcs record
Si es la primera vez que lo haces, se te solicitará la dirección de mail para poder identificarte. Si no, comenzarán a aparecer los cambios que has hecho recientemente y que no se han guardado. Pulsa "y" para guardar los cambios que quieras. La primera vez que añadas un archivo, te aparecerán dos cambios aunque en realidad sólo haya sido uno. Ésto es porque primero añade el archivo y luego toma su contenido como un parche. Se te pedirá que le pongas nombre a éstos cambios (denominados "parches"). Hazlo claramente para que se sepa de quién fue. Por último, te preguntarán si quieres añadir un comentario largo. Te aconsejo que canceles pulsando "n", ya que no lo he utilizado y necesitas tener configuradas unas variables del sistema que no manejo (si quieres puedes indagar tú un poco).
- Historial de cambios
¿Cómo puedo saber todos los cambios que se han guardado en el repositorio? Muy fácil, con el comando:
- Código: Seleccionar todo
darcs changes
Te aparecerá en pantalla una relación con la descripción de todos los parches que se hayan guardado hasta ahora, además de la hora en que se hicieron y el e-mail del autor. Esto es muy útil cuando trabajas en grupo y quieres saber, por ejemplo, quiénes fueron los últimos en colaborar y qué fue lo que hicieron. Es probable que si en la descripción del parche hay caracteres "extraños" (como la 'ñ' o las vocales con acentos) se muestren mal. Para solucionarlo, introduce el siguiente comando:
- Código: Seleccionar todo
export DARCS_DONT_ESCAPE_ISPRINT=1
¡Ojo! Éste comando creo recordar que sólo funciona bajo Unix o bajo Windows si estás usando la versión de Darcs con Cygwin. Bajo Windows sin Cygwin, hay que usar el siguiente comando:
- Código: Seleccionar todo
set DARCS_DONT_ESCAPE_ISPRINT=1
Nota: No lo he probado, pero creo que si en lugar de configurar DARCS_DONT_ESCAPE_ISPRINT al valor 1, configuras la variable DARCS_DONT_ESCAPE_ANYTHING también a ese valor (1), serán mostrados todos los caracteres, incluidos los no-ASCII. No estoy seguro de ésto, así que si alguien sabe algo más, que lo deje en un mensaje.
- ¿Qué hay de nuevo, viejo?
Como ya os dije, los cambios no se guardan hasta que hacemos "darcs record". Sin embargo, nosotros podemos modificar ficheros o añadirlos antes de guardar los cambios. ¿Y si queremos saber qué cosas todavía no hemos guardado pero están ya añadidas? Pues usamos este comando:
- Código: Seleccionar todo
darcs whatsnew
Que nos devolverá una lista con los cambios que hay sobre los ficheros del proyecto que todavía no hemos guardado. Pero, además de eso, tenemos otro comando similar a éste que es también bastante útil:
- Código: Seleccionar todo
darcs whatsnew -l
Éste comando nos pasará una relación de los archivos que hay en el directorio del repositorio que él considera que tenemos que añadir al proyecto. Para ilustrarlo, vamos a hacer una cosa. Crea dos archivos, uno que se llama "tutorial.txt" y el otro "tutorial.bak". Escribe algo en el interior de cada uno (da igual lo que pongas) y luego ejecuta el comando "darcs whatsnew". No debería aparecer nada, por supuesto. Ahora vamos a buscar qué aarchivos son posibles partes del proyecto y no están añadidos. Ya sabes, haz "darcs whatsnew -l" y, ¿qué archivos aparecen? Vemos que está "tutorial.txt", pero, ¿y "tutorial.bak"? Muy simple, darcs considera algunos tipos de archivos (entre ellos los .bak) aburridos y no los pone como potenciales partes del proyecto. Por eso el "tutorial.txt" aparece y el ".bak" no. Para acabar, añade el archivo "tutorial.txt" al proyecto y guarda los cambios. Luego comprueba la lista de los parches con "darcs changes".
-Eliminando cambios
Si hemos ñaadido un parche que no nos interesa, podemos ejecutar el comando:
- Código: Seleccionar todo
darcs unrecord
Así nos aparecerá una lista con los parches que hayan sido añadidos más recientemente. Pulsa 'y' para borrar parches que quieras y 'n' para no borrarlos. Una vez hayas borrado lo que deseabas, puedes pulsar 'd' y finalizará el borrado (así no te tendrás que tragar la lista entera de parches pulsando 'n' una y otra vez).
- A dos (o más) bandas
Bien, vamos a simular un trabajo en grupo con Darcs. Para ello vamos a pensar que llegaron dos amigos ("Pepe" y "Juan") que quieren formar parte del proyecto que teníamos en la carpeta "principal". En el símbolo del Sistema tenemos que movernos primero al directorio anterior a donde tenemos "principal" para poder ejecutar un comando muy útil. En este caso pondremos lo siguiente:
- Código: Seleccionar todo
darcs get principal pepe
Analizemos. La primera palabra, darcs, ya la conocemos. La segunda, "get" es el comando en sí y su función es crear una copia de un repositorio original para que otra persona trabaje por su cuenta. La tercera, "principal", es el repositorio del que se hace la copia (puede ser una dirección de Internet donde haya un repositorio) y la cuarte y última, "pepe", es el directorio en el que se hará la copia (esta se puede omitir y darcs lo generará él mismo, o eso creo). Con lo cual, ahora tenemos dos directorios iguales, "principal" y "pepe". Repite el mismo proceso para crear una copia de "principal" que lleve por nombre "juan". Y pasamos al siguiente comando.
- Código: Seleccionar todo
darcs pull
Antes de explicártelo, debo pedirte que entres con el Símbolo del Sistema al directorio principal, cambies algo en el archivo "yo.txt" (por ejemplo, ponle al final dos líneas en las que indiques que se incluyeron otros dos participantes, "Pepe" y "Juan") y haz "darcs record" para guardar los cambios. Luego muévete hasta uno de los repositorios-copia (el de "pepe" por ejemplo) y ejecuta el comando "darcs pull". Te aparecerá una lista de parches nuevos (en este caso sólo uno) que tendrás que aceptar o declinar con 'y' y 'n'. Pero, ¿de dónde viene? Esos parches, amigo, vienen del repositorio original, y son las actualizaciones que no tienes todavía en la copia en la que estés metido (en este caso "pepe"). Según vayas aceptando los parches el repositorio copiado se irá actualizando y al final lo tendrás nuevamente igual al original. Si quieres puedes hacer "darcs changes" para comprobarlo. Haz lo mismo con el repositorio "Juan" para actualizarlo.Vamos a ver un penúltimo comando:
- Código: Seleccionar todo
darcs send -o Patch_pepe
Fíjate bien en el comando, te lo explicaré a continuación. Pero primero ve al repositorio-copia de "Pepe" y haz algún cambio (por ejemplo, añade otra línea en "yo.txt" y crea otro archivo que sea "pepe.txt" donde ponga su edad). Si creas un archivo, recuerda añadirlo con "darcs add" Luego guarda los cambios y ponle nomres claros y concisos a los parches. Es probable que pida la dirección de mail de pepe si todavía no la ha pedido igual que hizo la primera vez que utilizamos "darcs record" en "principal". A continuación, ejecuta el comando que te dije, el "darcs send -o Patch_pepe". Te explicaré lo que hace. Ese comando se encarga de generar un archivo que contiene los parches que se hayan hecho en una copia del repositorio original (en este caso la copia de "Pepe"). Luego ese archivo se envía al poseedor del repositorio original para que actualice dicho repositorio con los parches que le mandan desde una copia del repositorio como la de "Pepe". La palabra "darcs" ya nos es familiar. "send" se encarga de mandar los parches directamente si tienes un servidor smtp en la máquina. Como creo que la mayoría tenemos correo web, pues le añadimos el "-o" para que nos genere un archivo que podamos adjuntar manualmente y no se encarge él del envío de los parches. Por último, le indicamos el nombre de ese archivo a generar, en este caso "Patch_pepe". Para generar el archivo, darcs preguntará qué parches queremos añadir. Como ya es típico, aceptamos con 'y' y cancelamos con 'n'. ¿Sencillo, no? Una vez tenemos ese archivo "Patch_pepe" generado (ojo, no tiene extensión), lo copiamos manualmente y lo pegamos dos veces, una en el repositorio orignal (que está en "principal") y otra vez en la copia que se llamaba "juan". Y, ahora sí, el último comando:
- Código: Seleccionar todo
darcs apply Patch_pepe
Para ejecutarlo, debemos estar en el repositorio original (el de "principal"), así que muévete hasta allí y asegúrate de hacer una copia de "Patch_pepe" en ese directorio como ya te dije antes. Luego ejecuta el comando, y... ¡ya está! ¡Se ha aplicado el parche que envió "pepe"! Si quieres haz "darcs changes" para comprobarlo. La sintaxis del comando es muy simple: "darcs", obviamente; luego "apply" de aplicar y por último el nombre del archivo con el parche, en este caso "Patch_pepe". Para finalizar esta mini-guía, ve a la carpeta "juan" donde también tienes una copia de "Patch_pepe" y trata de hacer lo mismo, o sea, de aplicar el parche. ¿Qué pasa? Pues que no funciona... Efectivamente, hay dos restricciones básicas: no se pueden generar parches desde el repositorio original y tampoco se pueden aplicar parches a las copias del repositorio original... ¿Y ahora cómo actualizo la copia de "juan"? ¡Muy sencillo! Primero debes actualizar la copia del repositorio original, o sea, "principal" con el parche de "pepe" (ñesto ya lo hemos hecho). Luego vas al directorio "juan" y... ¡claro, el comando "darcs pull"! Así habrás actualizado también el directorio de Juan.
¡Hemos acabado! Espero que os haya servido para algo y, si no... ¡No pasa nada! Estoy acostumbrado a hacer cosas inútiles...

Perdón por el mensaje tan largo y un saludo.