What’s in 2.10

This page is a work in progress and summarizes the changes from version 2.8.4 to version 2.9.9.

Ultimately, in each subsection items should be listed by importance/relevance, not by chronology.

Some items should be “coalesced” with time (eg. ghc version support, reverted UI decisions).

User Interface

  • Add a last question after all patches have been selected to confirm the whole selection (Florent Becker)
  • rollback no longer records a patch (Florent Becker, Guillaume Hoffmann)
  • make darcs apply work with url (Guillaume Hoffmann)
  • Add rank to show authors (Owen Stephens)
  • Move some contents from manual to commands help strings (Guillaume Hoffmann)
  • make darcs init print a confirmation message when successful (Guillaume Hoffmann)
  • rename init –hashed into init –darcs-1 (Guillaume Hoffmann)
  • reintroduce environment variables help in darcs help environment and darcs help markdown (Radoslav Dorcik, Guillaume Hoffmann)
  • less confusing apply –skip-conflicts message when everything conflicts (Guillaume Hoffmann)
  • when no patch name given, directly invoke text editor (Jose Neder, Guillaume Hoffmann)
  • gracefully refuse empty patch names (Guillaume Hoffmann)
  • make nano the default text editor instead of vi (Guillaume Hoffmann)
  • explicitely announce added, removed and moved files (Guillaume Hoffmann)
  • renamed command changes to log, output it to a pager (Guillaume Hoffmann)
  • keep log files for patch name and mail content in _darcs (Ale Gadea)
  • renamed amend-record to amend, make –unrecord flag more visible (Guillaume Hoffmann)


  • Optimize darcs diff (Petr Rockai)
  • Patch index (faster changes and annotate commands) (BSRK Aditya, Benedikt Schmidt, Eric Kow)
  • correctly set curl connection timeout (Guillaume Hoffmann)
  • fix stack overflow bug with whatsnew (Jose Neder)
  • darcs optimize now completely cleans repositories (Marcio Diaz)
  • when cloning from http, use packs in a more predictable way (Guillaume Hoffmann)

New features

  • Implement exponential backoff test strategy (Michael Hendricks) Use exponential backoff to locate a subset of patches on which to perform a bisect. For large repositories or recent regressions, this strategy is faster than either linear or bisect.
  • introduce darcs help markdown, convert help messages to markdown (Guillaume Hoffmann)
  • rebase: enable deep amending of history (Ganesh Sittampalam)
  • darcs should now normally work on sshfs-mounted repositories (Nathaniel Filardo)
  • patience diff algorithm (Jose Neder)
  • automatic detection of file/directory moves (Jose Neder)
  • automatic detection of token replaces (Jose Neder)
  • git-fast-import/export (Petr Rockai, Owen Stephens)
  • interactive mode for whatsnew (Dan Frumin)


  • require and support GHC 7.4 to 7.8 (Ganesh Sittampalam)
  • Various cleanups and refactoring, haddocks: Will Langstroth, Owen Stephens, Florent Becker, Guillaume Hoffmann, Michael Hendricks, Eric Kow, Dan Frumin
  • Build Darcs once rather than thrice. (Eric Kow)
  • Remove GADT_WITNESSES ifdef (Eric Kow)
  • Replace witness CPP macros with plain Haskell (Eric Kow)
  • Remove home page from darcs’ repository (Guillaume Hoffmann)
  • Remove latex manual from darcs’ repository (Guillaume Hoffmann)
  • Restructure source code into main modules Darcs.Util, Darcs.Patch, Darcs.Repository and Darcs.UI (Guillaume Hoffmann, Ganesh Sittampalam)
  • refactoring in Darcs.Patch (Ganesh Sittampalam)
  • use nubSort function from data-ordlist instead of own (Guillaume Hoffmann)
  • Create Darcs.UI.Message hierarchy. (Eric Kow)
  • replace C SHA256 bindings with external libraries (Ganesh Sittampalam)
  • run fewer darcs-1 related tests in testsuite (Ganesh Sittampalam)
  • run tests through cabal test (Ryan Desfosses)
  • dumb merge of hashed-storage into darcs (Ganesh Sittampalam)

Issues resolved in Darcs 2.10

  • issue2193: make that finalizeTentativeChanges no longer run tests (Guillaume Hoffmann)
  • issue2198: move repo testing code to Darcs.Repository.Test (Guillaume Hoffmann)
  • issue2200: darcs replace complains if no filepaths given (Owen Stephens)
  • issue2204: do not send mail by default (Eric Kow)
  • issue2237: prevent patch index creation for non-hashed repos (Owen Stephens)
  • issue2235: Accept RFC2822 dates (Dave Love)
  • issue2246: add default boring entry for emacs session save files (Owen Stephens)
  • issue2253: attempting to use the patch index shouldn’t create it on OF repos (Owen Stephens)
  • Issue2278: Document default value for –keep-date / –no-keep-date (Mark Stosberg)
  • issue2199: getMatchingTag needs to commute for dirty tags (Ganesh Sittampalam)
  • issue2247: move patch index creation into the job running code (Ganesh Sittampalam)
  • issue2238: let optsModifier remove all occurrences of LookForAdds (Gian Piero Carrubba)
  • issue2236: make ‘n’ an alias for ‘q’ in lastregret questions (Gian Piero Carrubba)
  • issue2155: Expurgate the non-functional annotate –xml-output option (Dave Love)
  • issue2248: always clean up rebase-in-progress state (Ganesh Sittampalam)
  • issue2270: fixed darcs changes -i –only-to-files (Sebastian Fischer)
  • issue904: Fix record on Linux/FUSE/sshfs (fall back to sloppy locks automatically) (Nathaniel Filardo)
  • issue2274: create patch index only with commands that take a lock (Guillaume Hoffmann)
  • issue2282: don’t allow remote operations to copy the rebase patch (Ganesh Sittampalam)
  • issue2287: obliterate -O doesn’t overwrite existing file. (Radoslav Dorcik)
  • issue2227: move the rebase patch to the end before an amend-record (Ganesh Sittampalam)
  • issue2277: rebase suspend and unsuspend supports –summary. (Radoslav Dorcik)
  • issue2311: posthook for ‘get’ should run in created repo (Sebastian Fischer)
  • issue2312: posthooks for ‘record’ and ‘amend-record’ should receive DARCS_PATCHES (Sebastian Fischer)
  • issue2163: new option for amend, select author for patch stealing. (Radoslav Dorcik)
  • issue2321: when no patch name given, directly invoke text editor (Jose Neder)
  • issue2320: save prompted author name in ~/.darcs/author instead of ./_darcs/prefs/author (Jose Neder)
  • issue2250: tabbing in usageHelper - pad by max length of command name (BSRK Aditya)
  • issue1828: file listing and working –dry-run for mark-conflicts (Guillaume Hoffmann)
  • issue2309: annotate includes line numbers (Owen Stephens)
  • issue2181: put cache in $XDG_CACHE_HOME (~/.cache by default) (Guillaume Hoffmann)
  • issue2334 fix win32 build removing file permission functions (Guillaume Hoffmann)
  • issue346: implement “patience diff” from bzr (Jose Neder)
  • issue2343: darcs amend-record does not record my change (Jose Neder)
  • issue2335: one liner when adding tracked files if not verbose (Guillaume Hoffmann)
  • issue2313: whatsnew -l: Stack space overflow (Jose Neder)
  • issue2347: fix amend-record –prompt-long-comment (Guillaume Hoffmann)
  • issue2348: switch to cabal’s test framework (Ryan Desfosses)
  • issue642: Automatic detection of file renames (Jose Neder)
  • issue2209: Automatically detect replace (Jose Neder)
  • issue2332: ignore case of characters in prompt (Guillaume Hoffmann)
  • issue2263: Option –set-scripts-executable is not properly documented (Ale Gadea)
  • issue1416: put log files in tempdir instead of in working dir (Ale Gadea)
  • issue1987: Garbage collection for inventories and patches (Marcio Diaz)
  • issue2367: rename amend-record to amend, make –unrecord more visible (Guillaume Hoffmann)
  • issue2345: solution using cabal’s checkForeignDeps (Dan Frumin)
  • issue2357: switching to regex-compat-tdfa for unicode support (Dan Frumin)
  • issue851: interactive mode for whatsnew (Dan Frumin)
  • issue2379: only use packs to copy pristine when up-to-date (Guillaume Hoffmann)
  • issue2365: correctly copy pristine in no-working-dir clones (Guillaume Hoffmann)

Todo-list for the release