Issue 2485 external resolution for unsuspend not implemented yet

Title external resolution for unsuspend not implemented yet
Priority feature Status unknown
Milestone Resolved in
Superseder Nosy List imz
Assigned To
Topics Conflicts, Rebase

Created on 2015-12-24.08:39:58 by imz, last changed 2015-12-24.08:39:58 by imz.

msg18884 (view) Author: imz Date: 2015-12-24.08:39:50
1. Summarise the issue (what were doing, what went wrong?)

amended a patch before a suspended one, tried to unsuspend with an
external merge tool (set up in ~/.darcs/defaults)

2. What behaviour were you expecting instead?

able to resolve the conflicts with an external tool.

(If "mark-conflicts" was able to call the external merge tool whenever
one wanted, this might be useful in this situation, too. --
http://bugs.darcs.net/issue2484 )

3. What darcs version are you using? (Try: darcs --exact-version)

darcs compiled on Dec 23 2015, at 14:34:32


[fix repo upgrade help string
Guillaume Hoffmann <guillaumh@gmail.com>**20151222144715
 Ignore-this: 859543cfd0a23e93ec4f91d95af88596

[resolve issue2481: expose API for 'darcs diff' command
Ganesh Sittampalam <ganesh@earth.li>**20151202062936
 Ignore-this: c86297efb31d0c61ebcc7cc65085379f
 This is wanted for a new darcsden feature

[bump dependencies on vector, process, HUnit
Ganesh Sittampalam <ganesh@earth.li>**20151129143603
 Ignore-this: 52e6981cb1fc3ed470ca91b239c77cb8

[force grep to treat output of locale as text
Ganesh Sittampalam <ganesh@earth.li>**20151126221357
 Ignore-this: 7304cc56d7bedf442fae4f6fc46a5d0d
 Somewhat ironically, if the output contains non-ASCII
 characters, grep can end up treating it as binary.

[Rename Darcs.Repository.LowLevel to Darcs.Repository.Pending
Guillaume Hoffmann <guillaumh@gmail.com>**20151120222036
 Ignore-this: 319f4fec54897432b524c408101f7b9c
 Original patch by Eric Kow.

[Haddock the pending patch parts of Darcs.Repository.State.
Eric Kow <kowey@darcs.net>**20120809094216
 Ignore-this: 12509b23cacd0e006831700bd299ef8c

[Make Darcs.Repository.isSimple apply over a whole list.
Eric Kow <kowey@darcs.net>**20120809081542
 Ignore-this: 807cc347d2a8f9dbd412bd6799a4088c
 As far as I can tell, the notion of simplicity only really makes sense
 if it applies over an entire sequence of patches.

[merge Darcs.Patch.ConflictMarking into Darcs.Patch.Conflict
Guillaume Hoffmann <guillaumh@gmail.com>**20151118182745
 Ignore-this: f8a93809789b9ccd8e9e3c32ade6abef

[remove a flag needed only for GHC < 7
Guillaume Hoffmann <guillaumh@gmail.com>**20151120152104
 Ignore-this: 1781674340045f1fc71f5b0c2f4e8b2e

[remove -fno-warn-dodgy-imports from modules that were still using it
Guillaume Hoffmann <guillaumh@gmail.com>**20151118231406
 Ignore-this: e8ef11343e5a5e19ac1246c5b15619ec

[rename NEWS to CHANGELOG to please hackagedb
Guillaume Hoffmann <guillaumh@gmail.com>**20151109145540
 Ignore-this: 41d37af2bc67afc22ab235b0705695ee

[fix release date of 2.10.2
Guillaume Hoffmann <guillaumh@gmail.com>**20151109134939
 Ignore-this: b1b48109aa0eed15c9bb505ca2ab9496

[update NEWS for 2.10.1 and 2.10.2
Guillaume Hoffmann <guillaumh@gmail.com>**20151109130442
 Ignore-this: 5fc7bf79b8e640f9831498f9e136ecd

[fix two tests after stopping using the word changes in pull message
Guillaume Hoffmann <guillaumh@gmail.com>**20151109133035
 Ignore-this: 662f8a6392657094c3a1aa78d0fed7e3

[add comments about the rejected 'hasDuplicate' cases
Ganesh Sittampalam <ganesh@earth.li>**20151106235724
 Ignore-this: 1cdd4060cd4ce773819bf32a9ead6482

[refactor breakAfterNthNewline and breakBeforeNthNewline
Guillaume Hoffmann <guillaumh@gmail.com>**20151105233750
 Ignore-this: af284e3e8a7f168bedeff28b690250bf
 Profiling shows that breakBeforeNthNewline is faster and
 uses less memory (for instance with "darcs diff --last=2000").

[adapt tests to using patches word instead of changes
Guillaume Hoffmann <guillaumh@gmail.com>**20151105202417
 Ignore-this: eca64ce7489defe2d38bfcf7b4fb9a20

[shorter README with quickstart instructions
Guillaume Hoffmann <guillaumh@gmail.com>**20151102164107
 Ignore-this: 75470b3df537bc6d7e98cbac54445382

[no longer hide catch from Prelude since we require ghc>=7.6
Guillaume Hoffmann <guillaumh@gmail.com>**20151031193817
 Ignore-this: bc4e6050272f05328f286a3fc03cc0c2

[acknowledge -fno-warn-dodgy-imports is always needed
Guillaume Hoffmann <guillaumh@gmail.com>**20151031193142
 Ignore-this: 9f13cc6df68f9cf0ff6ede4f6bb14917

[replace changes by log in release.sh
Guillaume Hoffmann <guillaumh@gmail.com>**20151031201929
 Ignore-this: 8051d049966f1000b675838868eee0b

[remove darcs.spec.in file from 2008
Guillaume Hoffmann <guillaumh@gmail.com>**20151031201828
 Ignore-this: 8db8726de2aced4e13f7668b35272ae5

[update commands names in help strings
Guillaume Hoffmann <guillaumh@gmail.com>**20151031201336
 Ignore-this: bebd0cf02cd4f49113b230bbaa21a4d2
 Also use 'patches' instead of 'changes' in a few places.

[replace changes by log in Setup.lhs
Guillaume Hoffmann <guillaumh@gmail.com>**20151031200100
 Ignore-this: e2a4ec913dbf3b272eda8ffd4dcad34e

[update upload.cgi with new command names
Guillaume Hoffmann <guillaumh@gmail.com>**20151031200004
 Ignore-this: c58f1f018049ce17c36388547ef41209

[update buildbot-try.sh with new command names
Guillaume Hoffmann <guillaumh@gmail.com>**20151031195528
 Ignore-this: 6892009f6dcd8a9cf2249e8324fdbb26

[update cygwin-wrapper file with new commands names and flags
Guillaume Hoffmann <guillaumh@gmail.com>**20151031195432
 Ignore-this: f32f99b623057c972565c698a64282c

[remove annotate xml schema no longer needed
Guillaume Hoffmann <guillaumh@gmail.com>**20151031194745
 Ignore-this: f6998e3d0950ea8d1e85b7704f18b501

[remove patch index correctness and timing scripts from contrib
Guillaume Hoffmann <guillaumh@gmail.com>**20151031194403
 Ignore-this: de7fe54bb5102790dc330c7ab46393d3
 We already have shell tests for patch index; as for performance
 we should rely on the benchmark suite.

[split issue1932 test up into a network and non-network part
Ganesh Sittampalam <ganesh@earth.li>**20151028214959
 Ignore-this: 1065d22b711a698b49512773fc1b9c7c

["Fix" some intermittent QuickCheck failures
Ganesh Sittampalam <ganesh@earth.li>**20151028195343
 Ignore-this: 280e204d5fec1e9dd044b3ba196f69cf

[disambiguate imports in some test code
Ganesh Sittampalam <ganesh@earth.li>**20151027222606
 Ignore-this: ca9a08dcd2428e53ea745745bc12a1ca

[Add an option to control the number of QuickCheck iterations
Ganesh Sittampalam <ganesh@earth.li>**20151027063213
 Ignore-this: 901b3888949d612c4155ff4d62cbe241

[make test-framework imports explicit
Ganesh Sittampalam <ganesh@earth.li>**20151026184550
 Ignore-this: d091bf877958b41b4521f354afebe0e9

[Avoid subshells in amend-unrecord test
Ganesh Sittampalam <ganesh@earth.li>**20151023184221
 Ignore-this: 8e9e1c01a99542b8de9b9da2497de3e3
 This makes the test run a bit faster on Windows

[disable issue2086 test on Windows - umasks don't really work there
Ganesh Sittampalam <ganesh@earth.li>**20151023175737
 Ignore-this: 6816023ed718abae4097c1725e37216e

[refactor clone code
Guillaume Hoffmann <guillaumh@gmail.com>**20151023183020
 Ignore-this: e95b792a2d958ad536051150790aec10
 * take lock only once for eveything that happens after
   new repository initialization
 * factorize cache and sources handling
 * no longer look for new patches when getting basic pack,
   since we only get up-to-date basic packs anyway
 * show packs exceptions on standard output so that we fix
   them by the next release
 * switch patches retrieval order when using packs
   (makes more sense to have oldest patches in pack since
   it can be outdated)

[download patches pack asynchronously
Guillaume Hoffmann <guillaumh@gmail.com>**20151023175144
 Ignore-this: 255d1143f34a12fd1dcc59dd6208d1e2

[ignore meta- files in packs when cloning
Guillaume Hoffmann <guillaumh@gmail.com>**20151023012109
 Ignore-this: c2dbc6d8892e8350f9f0c39eeb5cb9b7
 Let's not try to be clever.

[comment in doOptimizeHTTP
Guillaume Hoffmann <guillaumh@gmail.com>**20151023010112
 Ignore-this: 23547e93ac4f7eaff552a7e22a142215

[warn when suspending "hijacked" patches in rebase pull and apply
Ganesh Sittampalam <ganesh@earth.li>**20151023051643
 Ignore-this: d3782b75227306ebdf5e6e7e130220d2

[be a bit clearer about patch names in hijack test
Ganesh Sittampalam <ganesh@earth.li>**20151023051600
 Ignore-this: 31d6382d486b2f2123f901c000b7d298

[resolve issue2269: push hijack test to suspend time
Eric Kow <kowey@darcs.net>**20150920115648
 Ignore-this: 91989c5260f79336e3adb5cb1a40bcc
 This will happen after you've selected patches to suspend.
 We assume here that unsuspend can then safely ignore the hijack
 Note that this is a bit all-or-nothing. For fancier behaviour,
 we would need to weave this into SelectChanges

[resolve issue2276: Keep track of patch hijack decisions
Eric Kow <kowey@darcs.net>**20150920113703
 Ignore-this: e9c35f0ab4aa6a1388f910a902fee272

[Generalise hijack warning to support use in other commands
Eric Kow <kowey@darcs.net>**20150919151614
 Ignore-this: 327af67e03868ff5a879e17eaa061632

[Helper to capitalize a sentence
Eric Kow <kowey@darcs.net>**20150919113008
 Ignore-this: c49867bf96b92aa6bb0bdda99b415ecc

[removed special handling of --to-match from cloneRepository
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150621220421
 Ignore-this: 3570b8f5c34f5303e15391b5dfbc48e8
 I made lots of tests and found
 (a) no difference in the resulting repos
 (b) the method chosen with toMatch=False is always much faster, (more than
     twice as fast, in fact) regardless of whether the repo is local or
 (c) --to-patch was not handled when passing the toMatch parameter, causing
     the slower variant to be chosen /only/ for --to-match

[remove redundant import
Guillaume Hoffmann <guillaumh@gmail.com>**20151016185022
 Ignore-this: f5d839939d331995b94fafb7a717523d

[drop sandi lower bound to support GHC 7.4 and add an upper bound
Ganesh Sittampalam <ganesh@earth.li>**20151015063701
 Ignore-this: 427adf8a0ff2a4d4cf3f608933865c07

[Switch from dataenc (deprecated) to sandi
Daniil Frumin <dan@covariant.me>**20151003115912
 Ignore-this: 8d24dffa9280c8f0020ebee0c212b829

[replace changes by log in two help strings
Guillaume Hoffmann <guillaumh@gmail.com>**20151009203758
 Ignore-this: 550bb1066d93808e25b543051db73164

[Refactor darcs send patch count text snippet
Eric Kow <kowey@darcs.net>**20150918135242
 Ignore-this: 53235e97b3692011cd83c84bd7d4bcd5

[Tidy darcs send msg code (shorter lines)
Eric Kow <kowey@darcs.net>**20150918134732
 Ignore-this: e1916f6c4331f41e1b8a3fe3778dece

[Fix typo in darcs send message
Eric Kow <kowey@darcs.net>**20150918134524
 Ignore-this: 85978b353096836ad7afbf210a7092d0

[darcs show dependencies
Guillaume Hoffmann <guillaumh@gmail.com>**20150920122952
 Ignore-this: 8da6ead5124c67eeb0ee4750690b1d8d
 Based on work by Ale Gadea.

[implement function getDeps
Guillaume Hoffmann <guillaumh@gmail.com>**20150920101540
 Ignore-this: 7bc316a25c84bde130fb569d0f78bd49
 Based on work by Ale Gadea.

[make patch selection lazier in presence of matchers
Guillaume Hoffmann <guillaumh@gmail.com>**20150919213648
 Ignore-this: 3141bfb672c8d371d3754da4e6f73252

[get rid of selectChanges
Guillaume Hoffmann <guillaumh@gmail.com>**20150919213359
 Ignore-this: acb6d458af6b490de1a7d63b63803eb

[inline patchSetToPatches in the only place where it is used
Guillaume Hoffmann <guillaumh@gmail.com>**20150918115033
 Ignore-this: 21f2f2585c47aef65d8e0c428947150a

[using mmap on Windows was causing test failures
Ganesh Sittampalam <ganesh@earth.li>**20150919092640
 Ignore-this: 695af2647faa16ed0cf2a884c8cad3a6

[removed cleaning of _darcs/patches before getting patches pack
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628015016
 Ignore-this: 9b0a1e5588a0889ee88edd4ea5132963
 It seems wrong to clean the patches directory right after we started
 populating it. Not that the cleaned files are overly important, but

[extended network/log.sh test (repeat without any filename arguments)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150704145715
 Ignore-this: f5596d0f45aee525a43b2f959c3184f9

[resolve issue2463: building darcs on powerpc
Joachim Breitner <mail@joachim-breitner.de>**20150716183403
 Ignore-this: 46abf6a5106ca28f84f7cb1b6ab5bd13

[require text>= if using ghc 7.10
Guillaume Hoffmann <guillaumh@gmail.com>**20150730212911
 Ignore-this: fd026ab03906f7efa082bef1f53dacc

[require text>= if using ghc 7.10
Guillaume Hoffmann <guillaumh@gmail.com>**20150730191543
 Ignore-this: f94ed7d27d8e37ce5dbfe54087239c90

[Add missing file for 'renames.sh' test
Sergei Trofimovich <slyfox@community.haskell.org>**20150717125453
 Ignore-this: cf21a8597bb992b269d9bc4ed29eaf7e
 Found on darcs-2.10.1 release tarball:
   renames.sh (Darcs2) (PatienceDiff): [Failed]
   | runhaskell $TESTBIN/renameHelper.hs
   | + runhaskell
   | <no location info>:
   |     can't find file:

[please hackage adding 'manual: True' to the warn-as-error flag
Guillaume Hoffmann <guillaumh@gmail.com>**20150709165851
 Ignore-this: b9cd79a16a60c1c673786f8fbe4709aa

[simplified code in D.R.Ssh by using withMVar
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150702130628
 Ignore-this: 94632f23f8401a54f750b1eafbbf4eb5

[rollback issue2455 test - issue now resolved as invalid
Ganesh Sittampalam <ganesh@earth.li>**20150703053921
 Ignore-this: 640ffdfd48cc6b3eb1ac54e3fd193e27

[stop test being sensitive to runner's umask
Ganesh Sittampalam <ganesh@earth.li>**20150628201542
 Ignore-this: 76e0c0579c6a2e1805718f2847290e33

[resolve issue2461, this time also when no file names are specified
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150701191023
 Ignore-this: 9b51994e0a3fdb28d99a8856caa60e6e
 Also slightly improve the error message when invalid arguments
 paths) are given for remote repos.

[remove race from D.R.Packs, further simplify the code
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628181858
 Ignore-this: f6c526857d4ce312c3daf3d0b1d082b1
 It turned out cancelling the other thread makes the error only less
 probable, I could still reproduce it. The reason is that the race is
 semantically incorrect: The extra patches to fetch are not a subset of the
 ones we get from the pack, since they may contain patches that were added
 after creation of the pack.
 In order to further simplify the code and remove possible race conditions,
 the meta-filelist-xxx files are not written to disk. Instead we directly
 evaluate their content and pass it to fetchFilesUsingCache.

[resolve issue2459: fall back to writing the file if createLink fails
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150624221507
 Ignore-this: 15dd4c093dbe864fe2be1a1e3c6a1320

[resolve issue2461: darcs log --repo=remoterepo creates and populates _darcs
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628162356
 Ignore-this: ba3d063f6a655f36b8d08ebcca6fcc8d
 The solution is to make a case distinction between remote and local usage.
 If we are working in a remote location, check that file arguments are
 relative paths and then do the log action inside a temporary directory.

[extend network/log.sh test for things mentioned in issue2461
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628163340
 Ignore-this: 89246d2ad7c0fcd3ce850cec00e2c3a6
 In particular, check that
 - no _darcs dir remains
 - it works if we are in a non-writeable dir
 - it fails if we give it an absolute filename

[use transferModeHeader from D.R.Ssh in D.U.C.TransferMode
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628014443
 Ignore-this: 946db9ca009f8d23bfb14d0941407f04

[made connection caching in Darcs.Repository.Ssh thread safe
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628015330
 Ignore-this: 484f3a7b949deebda61457da4a84164e
 The module in question had a global variable implemented as an IORef which
 does not play well with concurrent threads. The revised implementation uses
 MVars and also takes care that a connection is only used by one thread at a
 time. This fixes severe performance problems and intermittent failures when
 cloning repos over ssh due to concurrent access from D.R.Packs.
 Another problem was that the connections were identified by the user@host
 part only, but not by the directory of the repo. This causes problems when
 e.g. pulling from multiple ssh repos on the same user@host. We now use a
 (user@host, repodir) pair as the key for cached connections.

[removed Darcs.Patch.Prim.V3 from unit tests
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150622073628
 Ignore-this: 82ba58302edd73969b36084dabd2ea76
 The tests sometimes fail and we do not use it in darcs (yet?).

[fix precondition violation in hashed-storage tests
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150622074003
 Ignore-this: 9d61f4e238b7ef74373bd3149d70e082

[cleanup in Darcs.Util.URL
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628134225
 Ignore-this: 31859bde746ea2d001989dbed4ff1431
 - indentation/whitespace
 - improved comments
 - added TODO about using regex library
 - renamed urlOf to sshFilePathOf
 - use </> for path catenation

[cleanup: break up an over long code line D.R.Clone
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628181721
 Ignore-this: 7695c590af1d211d8b5338de35fddb79

[cleanup: removed unnecessary LANGUAGE CPP pragma from D.U.C.TransferMode
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150628123852
 Ignore-this: e224059a0a6c48e9591215fe1854112

[Darcs.Repository.Clone: removed useless haddocks for createRepository
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150621220421
 Ignore-this: 160909326887361c82bc854b5aac9643

[Darcs.Repository.Clone: moved cleanDir to the top level
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150621220239
 Ignore-this: 2d047963c3937753b114ed64f657c93e

[cleanup: removed an unused export from Darcs.UI.Options.Matching
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150621112530
 Ignore-this: b11766ec989cefc125b0dcfff94fae4d

[resolve issue2400: use async package to keep track of unpack threads
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150621215409
 Ignore-this: 19824275268ecdf0fb78ebc720827c17
 The main difference is that we now cancel all threads when the job is done.
 The previous implementation left one of the threads running and I suspect
 (but haven't strictly verified) that this caused the error message.
There is
 rather strong evidence though: turning on debug messages makes the problem
 disappear, as did turning off the concurrency (by commenting out the
 forkIO), both of which suggests a race condition. Then there is the fact
 that the clone actually succeeded despite the error message. Last not
 with this patch in effect I can no longer reproduce the problem.

[cleanup: removed unused function from Darcs.Repository.Match
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614112219
 Ignore-this: 4da499fcc0c9a889a50eb5088ef20d3c

[renamed option matchOne to matchUpToOne
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619194458
 Ignore-this: 58e5939eb6da932ee52e537c333976b5
 This group of options is used by show files, show contents, dist, and
 annotate. For those commands, the intention is /not/ to select a single
 patch but rather all patches up to a single patch.

[fixed comment: ammend does not use the matchOne option
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619194424
 Ignore-this: 26feed97277dbf8750e6cd0b02fd7a00

[refactored Darcs.Repository
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150621214933
 Ignore-this: b9c3242455848d2fdc10568b01f65830
 All the code implementing cloneRepository and createRepository moved to a
 separate module Darcs.Repository.Clone and only re-exported by
 Darcs.Repository. Only a few small functions remain in Darcs.Repository,
 which was certainly originally intended to be for re-exporting only.
 Furthermore, moved the fetching and unpacking code used by cloneRepository
 and createRepository to separate module Darcs.Repository.Packs. This module
 now contains all the tricky concurrency code that I suspect being
 for causing issue2400.
 This patch makes no functional changes. The only changes beside the above
 two large refactorings are
 - culling (and some sorting) of the imports
 - inlining of copyRepoAndGoToChosenVersion into cloneRepository
 - consistent use of the </> operator from System.FilePath
 - combine fetching and unpacking of the packs in a function

[resolve issue2327: ask user to keep trying if locking fails
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150613213053
 Ignore-this: a2e5649359fc677d2a193c7aa5a65d5c

[accept issue2455: darcs record -la does not see a rmfile change
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150621205221
 Ignore-this: 78434495e4a6907499a80d4c8778c324

[refactored 'show files' command
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619222723
 Ignore-this: 1bafa3bc9e448d0657beed9a704bfa2e
 - avoid multiple parses of the flag list to extract the matchFlags
 - renaming of identifiers, in particular the word "revision" has been
   eliminated because it does not fit the Darcs patch model and leads
   to wrong assumptions.
 - avoid expanding a tree more than once and explain the tricky bit

[refactored annotate command implementation
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619215320
 Ignore-this: 291b608ccfe29b1be4632a45e23e30d4
 This patch is supposed to be semantically transparent. It mainly
consists of
 reducing the number of times the flag list is parsed to extract the
 matchFlags from three to one.

[removed firstMatch handling from dist command
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619214517
 Ignore-this: 9ef9df61345ac9eab13d069dc11b23b
 The dist command accepts only non-range matching options, so this extra
 distinction is just dead code.

[resolve issue2447 by using getNonrangeMatch as in ShowFiles
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619213411
 Ignore-this: 3fe5a3ecf764b4743963c6f5cdd23d14
 The crucial change here is that we don't use readRecorded if called with a
 match option. Instead we call getNonrangeMatch in an empty (temporary)
 quite similar to how this is done in D.UI.Command.ShowFiles.
 This patch also refactors the code quite a bit and adds some comments to
 explain the tricky bits.

[expandTo must unconditionally expand tree along the given path
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619205840
 Ignore-this: 420a0ad5cf7cda2a4138f78c5bc5b2d1
 This is a necessary (but not yet sufficient) part of resolving issue2447.
 The problem here is that H.S.M.fileExists returned False when the tree was
 not expanded, even if the expanded tree does contain the file. This caused
 'darcs show contents' to erroneously ignore the file.
 What remains for issue2447 to be resolved is to make 'darcs show contents'
 use the virtualTreeIO in all cases.

[pull the --index=N case into Darcs.Reporitory.Match.getNonrangeMatch
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619185317
 Ignore-this: 7acb83430b463ef29e251dcb1da8140f
 This concentrates the case distinction between index and other non-range
 matches into a single place, allowing to simplify command implementations.

[haveNonrangeMatch: return False for index ranges 
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619184931
 Ignore-this: a35b6f51bfaaf39b6cceaf793ec06f3a

[renamed no longer failing test for issue2447
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619184444
 Ignore-this: 9b15a15b15181a2929d0583cab9ba395
 Also made the test more robust by explicitly adding files and slightly
 extended the tested functionality.

[added a test to show that show files is not affected by issue2447
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150619093218
 Ignore-this: 27814fe0aaf5ca21b69fe42e9a1a09ac

[added test for issue2447
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617220610
 Ignore-this: 25dd63afb7fb998b3416069e99da7a51

[resolve issue2457
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150620231008
 Ignore-this: bd58f81f833e57632ef4b8df4b1681be
 - replaced --diffalgorithm with single flags --myers/-m and --patience/-p
 - replaced --repoformat with single flags --darcs1/-1 and --darcs2/-2
 - document default values in the help text (where applicable)

[added a test for issue2378 (no longer fails)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150620124429
 Ignore-this: 4aafe12304aef4d2dbf80b957b89a209

[removed test for issue2308
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150618190608
 Ignore-this: 672aa9ce57390b92479ca887859f8c09

[resolve issue2308: use command agnostic comment for changes summary
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150618185854
 Ignore-this: 271e4c3d3ba7a4dcef2cdb0df1fa2a89

[renamed non-failing test for irreprodicible issue2242
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617221153
 Ignore-this: f1a450e17e1d27fddce8a1a1c687c2bc

[renamed no longer failing test for issue1632
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617215620
 Ignore-this: 689174f5c1de28704bfc2d852844eec3

[renamed no longer failing test for issue1928
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617214846
 Ignore-this: 87ad66e5d8f5409e04245072bff064cf

[renamed no longer failing test for issue2086
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617214708
 Ignore-this: 96c6869a339484f7cad31520cf611ec2

[renamed no longer failing test for resolved issue612
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617201833
 Ignore-this: 7e4ff18e9920278ff4795b272fcccf41

[renamed no longer failing test for resolved issue2380
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617201816
 Ignore-this: d8f2c13f1c5c7aecc7d0e0554fb4e130

[renamed no longer failing test for resolved issue1332
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150617201727
 Ignore-this: 93fb302e7c46ef9df116b39d42ae25c7

[Issue 68 test no longer fails (also rework for a more efficient test)
Owen Stephens <darcs@owenstephens.co.uk>**20150617185200
 Ignore-this: a3d963eee596dbb1da37967dc52b9ff3

[Skip failing test 1829 on hashed repos, since its a problem with
Owen Stephens <darcs@owenstephens.co.uk>**20120721144201
 Ignore-this: 7d6bbdec65db9d42c1b43e3a0cd8df4

[failing issue1401 test should be skipped on hashed repos, not fail
Owen Stephens <darcs@owenstephens.co.uk>**20120721135558
 Ignore-this: 102336bb8d0256974d33b2cde1c55b23

[Failing issue2017 test now passes
Owen Stephens <darcs@owenstephens.co.uk>**20120721133539
 Ignore-this: ff83421afa0656187b4d064ccc11afd1

[cleanup: removed obsolete comment
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150615221646
 Ignore-this: 3a6e8c2e0641ddfaa861121ba62a4bb3

[re-add fastRemoveRL and use it in removeFromPatchSet
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150616001711
 Ignore-this: 3f14a8501369410770619c5b10d341c4

[added / re-worded comments in Darcs.Patch.Depends
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150616000851
 Ignore-this: 1fcdd36499b56db973dbb8a9325433fa

[removed no longer needed Darcs.Patch.CommuteRev
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614163558
 Ignore-this: 180715b3d7788bc42131caa0a58e301e

[Darcs.Patch.V1.Commute: replaced :< with :>
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614163545
 Ignore-this: 8f4a0c07fd8e89bc90c65511bd5d08b8

[Darcs.Test.Patch.Properties.V1Set1: replaced :< with :>
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614163450
 Ignore-this: 715f6572c0f74a2abd350eb569ba6651

[Darcs.Test.Patch.Examples.Set1: replaced :< with :>
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614163408
 Ignore-this: e725e6f290465686f87bc0aa49f2af63

[Darcs.Patch.Prim.V1.Coalesce: replaced :< with :>
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614152223
 Ignore-this: 902be7228cbf85dbbf0d6061caaaa50d

[Darcs.Patch.Prim.V1.Commute: replaced :< with :>
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614134924
 Ignore-this: 780ac1f1382790c26ac9d445fe00090d
 Also changed the unit test module Darcs.Test.Patch.Properties.V1Set2

[Darcs.Patch.Depends: replaced :< with :>
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150614121530
 Ignore-this: 3390ff2db3c015d116888d3272fb676f

[retire the (:<) type following the change in (:<:)'s argument order
Ganesh Sittampalam <ganesh@earth.li>**20150613222440
 Ignore-this: 69c94ed0eeced61a09b139d2a934cf57
 It doesn't make sense to have forward and reverse tuples if the list
 constructors are always in "forward" order.
 As there's quite a lot of code to change in a few modules, move it to
 a legacy module Darcs.Patch.CommuteRev for now instead of removing it

[require containers 0.5 and remove local copy of it
Guillaume Hoffmann <guillaumh@gmail.com>**20150612154802
 Ignore-this: a32686c522a535c5a3918e963eed3e9a

[remove a parameter from locally defined isInteractive (amend, record)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150611124322
 Ignore-this: bf5e8b0f884f44a6c0d2a8fc4b32b0ee
 The parameter was always True, so can as well be moved into the definition
 of isInteractive.

[changed the argument order of PatchSet and backward operators
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150219214925
 Ignore-this: fc9066f55ad3d9d234bd62e351bd831
 This simple (if tedious) refactoring makes the constructor :<: of RL
and the
 backward concatenation operator +<+ left-associative and flips their
 argument order. This means backward lists (RL) are constructed by adding
 elements to the right (xs :<: x). Concatenating backward lists (xs +<+ ys)
 means the xs are earlier than the ys, in symmetry with (xs +>+ ys). IMO
 greatly improves the ease with which one can read and write patch
 commutation code, since the order of identifiers in patterns and
 is now always the same: left = apply earlier to right = apply later, no
 matter from which end we add elements.
 The data type PatchSet was changed to match this: first come the tagged
 chunks, then the rest of the patches. Thus we now pattern match and
 construct PatchSets in the intuitive order e.g.  PatchSet tagged (ps :<: p)
 gives us the latest patch p.
 Also renamed consRLSealed to snocRLSealed and swapped order of arguments.

[resolve issue2307: Add information about 'darcs help manpage' and
'darcs help markdown'
Daniil Frumin <dan@covariant.me>**20150613124612
 Ignore-this: fb3a3fef5e274dbd4d154cacad4489e9

[resolve issue2444: added default interactivity parameter to isInteractive
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150611125117
 Ignore-this: 52943cff85faa83150ba319a6d401899
 The extra parameter is False for the log and rebase log commands and True
 for all other commands. Note that amend and record are not affected because
 they use a configuration record and thus a locally defined version of
 isInteractive (which is also simpler because these commands do not have
 --dry-run or --xml options).

[resolve issue2451: allow terminfo 0.4.*
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150611175351
 Ignore-this: 5629830226a77b6f63f036a37e152ba1

[added clarifying comment to toobig (in function setEnvCautiously)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150611130546
 Ignore-this: 8881f60455ebbeae009eb62b61c2f6b8

[cleanup: fixed previous whitespace change
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150611175930
 Ignore-this: 411d4c4e7a5e6e61554872efc581c90

[resolve issue2423
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150611173259
 Ignore-this: cba962fe999a98d63f4f2a8506218b1

[cleanup: extra whitespace in import
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150611125306
 Ignore-this: a788ac61d4a7f982ef0e9c3799e134c8

[tests/network/clone.sh: don't remove test repos, let the framework do that
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150427104054
 Ignore-this: b7ac408283a2bd36be5e36b4b783d701

[cleanup: renamed Darcs.UI.Commands.formatPath to Darcs.Util.Text.quote
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150222223240
 Ignore-this: 21902242f376a88ccf963e7562d5e669

[fix warning
Ganesh Sittampalam <ganesh@earth.li>**20150608064449
 Ignore-this: b1266e88fa96f6709f87a305aba74dc2

[Fix the previous doFastZip patch
Daniil Frumin <dan@covariant.me>**20150607211024
 Ignore-this: 5c2d97cc4dcd14b1c26c8cec84cda663
 - Previous version would create problematic .zip archives
 - Previous version would not print out the message ("Created ...zip")

[Drop GHC 7.4 support, introduce 'Darcs.Prelude' to abstract over changes 
Ganesh Sittampalam <ganesh@earth.li>**20150531142627
 Ignore-this: 1f9ac7dcff2a9b3e46d75f69f87a7669
 This fixes the flood of redundant import warnings from bits of Applicative
 being moved into the Prelude, and also should make future changes of this
 nature easier to handle.

[fix warning
Ganesh Sittampalam <ganesh@earth.li>**20150531142108
 Ignore-this: c2192b5e05a86a42fec6402e7d0c31c0

[fix warnings
Ganesh Sittampalam <ganesh@earth.li>**20150531121254
 Ignore-this: 7d9332b35a1031dfec40a400afadc1c1

[remove the "diff algorithm" choice from the NameHack class
Ganesh Sittampalam <ganesh@earth.li>**20150531112731
 Ignore-this: 8b167d5b420639f87facf34107d893a1

[rename dist.sh to dist-compare.sh to make it easier to pick out
Ganesh Sittampalam <ganesh@earth.li>**20150530111027
 Ignore-this: 9fa4f2b1c2d8c8cc0d2a1c8adad7060c
 The -t argument to the test harness seems to be based on substring matches.

[support network 2.5 and 2.6
Ganesh Sittampalam <ganesh@earth.li>**20150529150519
 Ignore-this: a66f2848977b02c71df55fec90b51771

[support QuickCheck 2.8
Ganesh Sittampalam <ganesh@earth.li>**20150529144234
 Ignore-this: 929805382339e317f7122703d894b43b

[support zlib 0.6
Ganesh Sittampalam <ganesh@earth.li>**20150529143352
 Ignore-this: dd5cabd0f764128b50b1523be18df38a
 The internals API we were using to handle "GZCRC" corruption has been
 so this requires some CPP.

[bump attoparsec dependency
Ganesh Sittampalam <ganesh@earth.li>**20150529112100
 Ignore-this: f8fb21280a5d01fce9195f3dccf4c759

[refactor updatePatchHeader a bit
Ganesh Sittampalam <ganesh@earth.li>**20150321105255
 Ignore-this: 4271676aa0310163c9514461476de58a
 It only needs a repository when asking about dependencies

[move getLog into Darcs.UI.PatchHeader
Ganesh Sittampalam <ganesh@earth.li>**20150321104557
 Ignore-this: afa93be3a08e9cad239e58b39e1209e9

[extract updatePatchHeader into a separate module
Ganesh Sittampalam <ganesh@earth.li>**20150321100153
 Ignore-this: c0fb10d5c769c494f54360816c6880b5

[Fix error messages for V1/V2 jobs in Darcs.Repository.Job
Daniil Frumin <dan@covariant.me>**20150508155501
 Ignore-this: d64c70c9d4f10230a039136dfb8164ce

[Generalize Darcs.UI.Commands.Dist.doFastZip
Daniil Frumin <dan@covariant.me>**20150507135812
 Ignore-this: 25f707dafcd5b6830c3a56e28048467f
 The new doFastZip' function can now create zip archives
 from arbitrary located repositories; does not write the
 result to the file immediately.

[resolve issue2449: use new hook in shelly to handle test output as binary
Ganesh Sittampalam <ganesh@earth.li>**20150503104330
 Ignore-this: 975b7509921dcb8fb8119748b420588a

[remove permission workaround in release.sh
Guillaume Hoffmann <guillaumh@gmail.com>**20150501215331
 Ignore-this: d09d4ac0336f2754dcaeac91881cb315
 It got fixed in Cabal 1.10:

[TAG 2.10.0
Guillaume Hoffmann <guillaumh@gmail.com>**20150419200705
 Ignore-this: 6d154c9aa51c8328c777ca9a2c223125

[fix test flags in release script
Guillaume Hoffmann <guillaumh@gmail.com>**20150418201904
 Ignore-this: 5ad8398020c92f336d4fbd0ee1e88d4c

[add missing hashed-storage extra files
Guillaume Hoffmann <guillaumh@gmail.com>**20150418201849
 Ignore-this: 3503c22654b4175f926b20d3049bd871

[hashed-storage: replace C SHA256 bindings with external libraries
Guillaume Hoffmann <guillaumh@gmail.com>**20150418194215
 Ignore-this: afa7777a56b7b178bb3780ac4c9de962

[NEWS for darcs 2.10.0
Guillaume Hoffmann <guillaumh@gmail.com>**20150418170309
 Ignore-this: 2736f9d8cfc803f1e671e171f6ee3b4d

[resolve issue2102: document packs in help of clone and optimize http
Guillaume Hoffmann <guillaumh@gmail.com>**20150418154422
 Ignore-this: 73d9d62c3d4032588aa7d5bc56ac5570
 help string suggestions by Mark Stosberg

[resolve issue2448: enable -h/--hash flag for the diff command
Gian Piero Carrubba <gpiero@rm-rf.it>**20150406144639
 Ignore-this: 76a60a08801d255555784fe9e9c1eb60

[Add --from-hash/--to-hash options
Gian Piero Carrubba <gpiero@rm-rf.it>**20150406142429
 Ignore-this: 351c8d41469df37ca678043cfca57440
 Using the hash as identifier is much more comfortable and less error
 prone than a regexp matching the patch name.

[mention a couple of `convert export` limitations in help string
Guillaume Hoffmann <guillaumh@gmail.com>**20150416182142
 Ignore-this: 21c5aea669adc3d471013cd352923d32

[correctly take advantage of read-only cache locations
Guillaume Hoffmann <guillaumh@gmail.com>**20150406220009
 Ignore-this: d5993824c88fde2a085853f5fcc3b07a

[add debug messages and comments to Darcs.Repository.Cache
Guillaume Hoffmann <guillaumh@gmail.com>**20150405204842
 Ignore-this: ed99c9c895bc35e02c1c89af5652cb17

[resolve issue2421: don't fail if caches are not writeable
Guillaume Hoffmann <guillaumh@gmail.com>**20150405200214
 Ignore-this: 8ab0b04779dada9c402fb7bf5d0b8c1f

[enable creating parent dirs so that copyFileUsingCache fails less often
Guillaume Hoffmann <guillaumh@gmail.com>**20150405043847
 Ignore-this: c3ece1d96de311a6adae51eadfa79fb5

[fix cloning with --lazy --tag .
Guillaume Hoffmann <guillaumh@gmail.com>**20150403204748
 Ignore-this: 3b1753912fa78c0cb0c501d8b520180c

[faster network clone test using smaller repo
Guillaume Hoffmann <guillaumh@gmail.com>**20150402171137
 Ignore-this: dfac1454ba99d7bba29983409202f8b6

[port test harness to cmdargs and shelly
Guillaume Hoffmann <guillaumh@gmail.com>**20150331042534
 Ignore-this: 469d890208967ed09a2fe401db8bcb12

[remove unused color flag in darcs.cabal
Guillaume Hoffmann <guillaumh@gmail.com>**20150324184840
 Ignore-this: ad445da16ce5c84eefdbd294a7e603b9
 It should have been removed by this patch from 2009:
 "Resolve issue1366: remove unreachable code for direct ncurses use".

[fast-export: rewriting single dots in tags was unneeded
Guillaume Hoffmann <guillaumh@gmail.com>**20150320203832
 Ignore-this: 9e48a76184e28cd62ede607fa1cb09d

[resolve issue2446: in fast-export delete dirs before dumping contents
Guillaume Hoffmann <guillaumh@gmail.com>**20150320202702
 Ignore-this: 661ed1b77cdc2297f51767e3a118ae16

[resolve issue2433: fix help strings of send and fetch
Guillaume Hoffmann <guillaumh@gmail.com>**20150317201649
 Ignore-this: af80c04ee978d71c95a568a297d73689

[clarify rollback help string
Guillaume Hoffmann <guillaumh@gmail.com>**20150317195510
 Ignore-this: 144bbf568ebb2201c160484357c85ae2

[resolve issue2420: commandGetArgPossibilities for apply should not list
all files in the repo
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150310200332
 Ignore-this: 656985b3b9d873977377dfcb9289cc64

[use die instead of fail in Darcs.UI.RunCommand
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150310115816
 Ignore-this: 12141ce13191db8e23eb21d29f600f1a

[added die action to Darcs.Util.Exception as a replacement for fail
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150310115423
 Ignore-this: 9084798209f5d41a011fdd4d3829600
 It is commonly agreed upon that fail is an ugly wart in the Monad class and
 should not be used for serious programs. Its only sensible justification is
 to support de-sugaring of do blocks with failing pattern matches.

[Darcs.UI.Defaults: upper case initial letter in error messages
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150307122546
 Ignore-this: 3b6c2b5abf7975e4d43f77a97023230b
 This brings it in line with how messages in Darcs are formatted elsewhere.

[purify Darcs.UI.Defaults, fixing two problems on the way
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150222211401
 Ignore-this: 2781d7005d30fd53de7e008e738201fa
 The IO that was in Darcs.UI.Defaults has been moved to the caller
 (Darcs.UI.RunCommand.runCommand). This allows us to fix a regression:
 relative paths given as option arguments in defaults files were not
 with respect to the same working directory as when giving the option on the
 command line. The ordering constraints of commandPrereq vs.
 getGlobal/getPreflist are now concentrated in one place and documented.
 Some changes related to errors and how to report them are also included in
 this patch since it would have been difficult to record them separately:
 - applyDefaults no longer stops on the first error, instead accumulates all
   errors and returns them together with the result in a pair. This makes it
   easy to postpone the actual failure to a point after the standard command
   actions (--help, --list-options, --disable) have been handled. Which in
   turn fixes a problem with the generalized contrib/_darcs.zsh.
 - replacing use of unlines with (intercalate "\n") when concatenating error
   messages avoids many uses of the ugly chompTrailingNewline
 - error messages returned by getOpt and those generated by
applyDefaults are
   now in the same format

[replace old command names in network tests (get, put, changes)
Guillaume Hoffmann <guillaumh@gmail.com>**20150308201353
 Ignore-this: eae3784e48ecc2e55628a9e8b272d636

[reintroduce put command as deprecated
Guillaume Hoffmann <guillaumh@gmail.com>**20150308200708
 Ignore-this: 599aa2743779576a07fe8195695a09e6

[allow flag to prevent patch index creation with log and annotate
Guillaume Hoffmann <guillaumh@gmail.com>**20150308195019
 Ignore-this: 92340c1d407c02d8814b5444e6368f52
 ename --patch-index to --with-patch-index to avoid conflict
 with existing --patch flag used with log and annotate

[export a couple of things needed by darcsden
Ganesh Sittampalam <ganesh@earth.li>**20150306184037
 Ignore-this: 7f41a6cd8eb470fdc0cd42bdcb234ca9

[add bounds to all dependencies
Ganesh Sittampalam <ganesh@earth.li>**20150305064527
 Ignore-this: 9d46fa7d660c92df276aa0abea474e25
 I've checked that new lower bounds (on binary, dataenc) work.

[bump utf8-string upper bound
Ganesh Sittampalam <ganesh@earth.li>**20150304225558
 Ignore-this: e711a13293bd25f57fdbe8c2d99ea172

[replace pointless import of Control.Monad.Except
Ganesh Sittampalam <ganesh@earth.li>**20150304224139
 Ignore-this: c55af68698dc68f28ffed998737df246
 This fixes the build with mtl<2.2.1

[silence warning (ghc<7.8) about the MINIMAL pragma
Ganesh Sittampalam <ganesh@earth.li>**20150303075653
 Ignore-this: e316d3b3254981b270f14b6655c7f1ea

[remove a few unneeded -fno-warn-incomplete-patterns
Ganesh Sittampalam <ganesh@earth.li>**20150303075239
 Ignore-this: da48dc320a19d386f01839ef89fda112

[Turn off deprecation warning for use of 'parseTime' for now
Ganesh Sittampalam <ganesh@earth.li>**20150304062906
 Ignore-this: 659604850b8887fb6708d8ee412d783f

[fix GHC 7.10 warning: explicitly quantify variables in type alias
Ganesh Sittampalam <ganesh@earth.li>**20150304061030
 Ignore-this: 48bd4c2abb9134cdf047f134cba02cf3

[ErrorT is deprecated, switch to ExceptT
Ganesh Sittampalam <ganesh@earth.li>**20150303190641
 Ignore-this: 696dde1d3918c855fb8acaea9097b9cb
 The two have different 'fail' implementations, but as far as
 I can see we don't have any explicit calls to that or any
 inexhaustive pattern matches in the relevant code.

[resolve issue2432: use the merged version of the local patches
Ganesh Sittampalam <ganesh@earth.li>**20150302194631
 Ignore-this: 3c2a8e1cc4d6c8b8040f683e6f2a3dc0
 The previous code gave a false sense of security in its use of witnesses
 on the Repository type, because those can be implicitly mutated by
 operations on the repository but the Repository value with its old
 witnesses is still available for use.
 The bug was that tentativelyReplacePatches should be passed the replacement
 patches, as it just adds them to the repository at the end after commuting
 out the previous versions. So when doing pull/apply --reorder, we need
 to pass in the local patches merged with the remote patches, rather than
 in their original form.
 I reworked the code so that the witnesses are correct, which provokes
 a type error, and fixed the error by changing merge2FL to return both the
 merged remote patches and the merged local patches so the latter can be
 passed in to tentativelyReplacePatches.

[fix warning
Ganesh Sittampalam <ganesh@earth.li>**20150302200439
 Ignore-this: e376f203a6a6dc2f1730a76ef168a39e

[bump version to 2.11.0
Guillaume Hoffmann <guillaumh@gmail.com>**20150228150811
 Ignore-this: 4791676f691bcbc868c6d6befa00be6e

[bump version to 2.10.0
Guillaume Hoffmann <guillaumh@gmail.com>**20150228150750
 Ignore-this: ec9530bb433709149aacf07eaf250efc

[fix patch-index tests after defaults change
Guillaume Hoffmann <guillaumh@gmail.com>**20150226175240
 Ignore-this: ccb7710b7e18a772dab9be69a599f67a

[resolve issue2438: no longer build patch index by default on cloning
Guillaume Hoffmann <guillaumh@gmail.com>**20150226175031
 Ignore-this: 800d7493e751ed0bd23e8041c7c8bdd4
 * build automatically only with annotate or non-interactive `log file`
 * patch index creation only occurs if the lock can be taken
 * PI creation only happens on init, clone and convert if
   --patch-index is passed
 * PI creation no longer done when finalizing a repo job
 * the only way to have the file `_darcs/no_patch_index` created,
   is to run `optimize disable-patch-index`, or to ctrl-c
   PI creation (during annotate, log, init, clone or convert)

[in annotate command, push call to withRepository deeper
Guillaume Hoffmann <guillaumh@gmail.com>**20150225143930
 Ignore-this: d1e0883b62ffc26ce617d5d1d4d352fc

[license DateTime module as BSD3, with original author approval
Guillaume Hoffmann <guillaumh@gmail.com>**20150227172904
 Ignore-this: 47a44d40ac6e56dc5990b6c3f4dc3bb2

[NEWS update for Darcs 2.8.x releases
Guillaume Hoffmann <guillaumh@gmail.com>**20150226213622
 Ignore-this: 10b3a323f4974f038cfb8bcb0595b9d8

[move the bits of the datetime package we need into a
Darcs.Util.DateTime module
Ganesh Sittampalam <ganesh@earth.li>**20150225194129
 Ignore-this: 608802641468a46b8860505363af4d0d
 It hasn't been updated since 2011 and doesn't work with GHC 7.10

[adapted tests/disable.sh to improved help completion
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150222165255
 Ignore-this: 8a51503de6bce4e5b04d84179028eee3

[resolve issue2431: rollback Control.Monad.Catch generalizations
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150221204207
 Ignore-this: f60a8b6b7b70d9d17b21289e89120ce6
 I even went so far as to remove the exceptions package from the cabal file
 to make sure this stuff doesn't creep back in. For details of why this use
 of Control.Monad.Catch is unsafe, please refer to the documentation of this

[move PatchFormat from Options to Repository (and use it there)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150214013552
 Ignore-this: 917a3110d22073a09d054962eaa53d26

[resolve issue2437: fix cloning to ssh by forgetting source repo later
Guillaume Hoffmann <guillaumh@gmail.com>**20150222153002
 Ignore-this: bbc33f6cc6762c93bb4a60661073215c

[fixed failing fromJust in look-for-replaces implementation
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150219231222
 Ignore-this: ce2e8ba014be02ca18039407d2d3c05b
 As indicated in a comment in the code, the solution is not perfect. We
 really want to fuse the expandPath with the findFile. But how to achieve
 that without bloating the API of hashed-storage needs more thought.

[adding -K option to less fixes "leaking last line" after Ctrl-C
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150220184551
 Ignore-this: c3fcd4151393c88125fb38a497387614

[fixed completion for help command
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150217231749
 Ignore-this: 8225afca3c511b60dfd91b6f7ca88eb6

[cleanup: renamed applyas to applyAs
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150214140114
 Ignore-this: 3dd4c59aa5b3d9b9026694b5db186e8a

[cleanup: renamed PatchIndexOption to WithPatchIndex
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150214140054
 Ignore-this: 7ec057e2310054373155b1ce5e83e694

[cleanup: Repository.Format and .Internal haddocks and variable names
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150214015631
 Ignore-this: 2cb72f4598520f4f6e941714f3c6808a
 Also rename readfromAndWritetoProblem to transferProblem.

[fixed type of identifyRepositoryFor according to TODO in comment
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150214015522
 Ignore-this: 59bda1825e4f58db967824f2860949b4

[cleanup: import anchoredRoot instead of internal representation
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150213203017
 Ignore-this: 812a53ac741fdd83a778606d14bf0155

[resolve issue2260: skip internal patches when counting
Ganesh Sittampalam <ganesh@earth.li>**20150219070208
 Ignore-this: 3ff465509d7e887ceb0b439c64fd1d47

[remove in-depth help of repo format error, redundant with scp's errors
Guillaume Hoffmann <guillaumh@gmail.com>**20150218214257
 Ignore-this: 40b90e39cb33774b2ebe9db843e9850e

[remove last dependency on extensible-exceptions
Guillaume Hoffmann <guillaumh@gmail.com>**20150218205145
 Ignore-this: ff34385a2ddb7cddb964b6fe244540f3

[remove always true condition ghc >= 6.8 in cabal file
Guillaume Hoffmann <guillaumh@gmail.com>**20150218181258
 Ignore-this: 41f73c8bf5f597b3173da388b198dd8d

[resolve issue2410: detect replaces even with tokens of different lengths
Guillaume Hoffmann <guillaumh@gmail.com>**20150217223248
 Ignore-this: 21859ec1e6a7652a68b4409c71dd08cd

[fix: moved import of applyAs from Darcs.UI.RemoteApply to Darcs.UI.Flags
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150213190737
 Ignore-this: 91bb66f2a18b0943547734fc931a2259

[purged RemoteApply of DarcsFlag remains
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150211213844
 Ignore-this: c8eb049a204ef53f3922568da5be11f1

[resolve issue2385: invoke pager without temporary file
Guillaume Hoffmann <guillaumh@gmail.com>**20150212235743
 Ignore-this: 9133d1e66592f863295b0f405c2f10e3

[cleanup: removed old disabled code for isInteractive
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150211202635
 Ignore-this: cafe06232da90e9813070926e964463a

[re-implemented getOutput in terms of the option spec
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150211190526
 Ignore-this: dc9b34b37ffb64e301193da43f840f53

[beautified error messages for command line and default files
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150213021712
 Ignore-this: 6037a737555f13ecde84ae0b2f4498fb

[deprecate the --hashed option in a more systematic manner
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150213012723
 Ignore-this: 8e8a54c096962bac71e0dd4254e648e3

[add generic support for deprecated options
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150213011708
 Ignore-this: d1c1eaa73eb28b02b612262383bef66a

[no longer use extensible-exceptions since we require ghc 7.4
Guillaume Hoffmann <guillaumh@gmail.com>**20150212194038
 Ignore-this: 5f3633ce0193278d471d1f78814a6762

[comments for convert --export
Guillaume Hoffmann <guillaumh@gmail.com>**20150212135402
 Ignore-this: 6bcd814ce044b29172a81794dac39604

[cleanup: purged code for obsolete --debug-verbose flag
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150211004801
 Ignore-this: 30116310212572abb35b5e797ff448a0
 The code was already disabled for some time. All it ever did
 was to enable both --debug and --verbose.

[restore cabal haddock by removing an out-commented line of code
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150210220735
 Ignore-this: 25e4e1c653864aca05ea1600d2d9a2a2

[errorDoc now prints a stack trace (if profiling was enabled)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150211001202
 Ignore-this: c7af1cdbe4745742bf59038d10e4f1c5

[added debugDocLn to Darcs.Util.Printer
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150211000848
 Ignore-this: cb82d6d670bd0aac8d980893b39e5fa4

[cleanup: restructured haddocks in the options core module, simplified
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150210220137
 Ignore-this: bfcb08486f7533a9fe842bd23f0b5238

[cleanup: indentation of commandControlList
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150208152818
 Ignore-this: 9f46b45178cae07829d0854ae84820fb

[simplified HashedRepo.removeFromTentativeInventory
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150207133723
 Ignore-this: dde464861b8bd7a86ea8350db60a8453
 The change follows the outline indicated in the FIXME comment: we let
 writeTentativeInventory do the heavy lifting. Also clearly documented the
 preconditions, since this is a partial function.
 With this change, Darcs.Patch.Depends.commuteToEnd is no longert needed and
 has been removed.

[cleanup: tentativelyReplacePatches is only used internally
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150207132949
 Ignore-this: 2f11d99b43850e7dbf792e4026b536db

[cleanup: slightly streamlined doRecord
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150207130145
 Ignore-this: c14253f7f69f8c3bb114930def07e5c8

[removed block buffering for bundle transfer in push and remote apply
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150210232440
 Ignore-this: 1ef094a7a6f88c44e414c661e5ecbb2d
 This partially rolls back changes made in
 'optimization: compress patch data before sending over ssh'
 The block buffering changes should have been recorded separately in the
 first place. It also turned out that they do not actually improve
 performance (in contrast to the compression).

[Windows build fix
Ganesh Sittampalam <ganesh@earth.li>**20150209192233
 Ignore-this: 5d86821d51b2448da9d5b9c8e2d63ea4
 The break was introduced by the ssh error handling changes
 (patch 18ec0e8d4f69c5f824b27d9de8b6ef7d4e83bb86)

[-D_REENTRANT shouldn't be conditional on -frtsopts
Ganesh Sittampalam <ganesh@earth.li>**20150210065445
 Ignore-this: 5cd4d3f240a0d790fce742a66e69882a
 This appears to be mistaken indentation, given the use of the
 flag elsewhere in the file.

[skip issue2333 test on GHC 7.4
Ganesh Sittampalam <ganesh@earth.li>**20150210065424
 Ignore-this: eadf3399c5c5ad72a75ed5fe34379b7

[MINIMAL pragma for Effect class
Ganesh Sittampalam <ganesh@earth.li>**20141229234841
 Ignore-this: a9ee078f16e46bd5a271750ac19892e9
 The Effect type class has defaults for each member in terms of the
 other, so it's easy to forget to implement anything.
 With GHC >= 7.8 this will check for this problem.

[tweak takeHeadRebase docs/message a bit
Ganesh Sittampalam <ganesh@earth.li>**20141213104953
 Ignore-this: 83bfa4fc66989ee49d9769c64a4f49b5

[fix: failing-issue1327.sh should fail for the right reason
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150205232220
 Ignore-this: 78fb6dcdeae29fcee985d88412c8c1c7

[bump dependencies lower bounds implied by requiring ghc 7.4
Guillaume Hoffmann <guillaumh@gmail.com>**20150203195848
 Ignore-this: a13f8402caa6bfc3516af8aa3bde4a1a
 See https://www.haskell.org/platform/changelog.html

[comment for normPath with examples
Guillaume Hoffmann <guillaumh@gmail.com>**20150205185007
 Ignore-this: 932a7546c7e01da6cb8c8b551dbba69d

[add --[no-]compress option to push command (with --compress the default)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150204210621
 Ignore-this: e3ad3d829898c3e0854801074e650b90
 This is to enable interoperation with ancient remote darcs installations
 that are not capable of dealing with compressed input data. Tested with
 darcs-1.0.9rc1 (that version was packaged with debian 4.0).

[cleanup: removed no longer used option compressActions
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150204203950
 Ignore-this: fb04e0fc298093e5971771c697819df5

[optimization: compress patch data before sending over ssh
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150204203800
 Ignore-this: edf1788d6d890eebddab2c1bd9dfb077
 We also make sure that the stdout of the sender and the stdin of the
 receiver are in block buffering mode. For large (e.g. 20MB) pushes to a
 remote repo via ssh this reduce the runtime to a less than a third of what
 it took before.
 We could do even better (I think) by sending the raw patch files, since the
 latter are normally already in compressed form. However, this would require
 some refactoring of the way we retrieve the data from the local repository,
 as well as some sort of negotiation between sender and receiver, so that we
 remain compatible with old versions of darcs at the remote end.
 The current patch is compatible back to at least darcs-2.5, since reading
 patch bundles from stdin already checks for compressed input data and calls
 gzDecompress if it sees the characteristic byte sequence.

[cleanup: group type signatures with definitions in D.U.Printer
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150204201908
 Ignore-this: dc493292e87b0640ee92f4dec2e8172c

[accept issue2432: pull --reorder fails to commute patches
Guillaume Hoffmann <guillaumh@gmail.com>**20150202203402
 Ignore-this: 206e4e52b78401f0fd96d7ba246802cf

[minimally improved tests/convert_export.sh by testing for identical
file content
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150202224033
 Ignore-this: bd7d0cc1eb3cd3aa7bbfe05a98f86848

[test all available commands in disable.sh
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150201133112
 Ignore-this: 3287d08962e1770bb2c5850e0a346ba3

[fixed two failing tests for issue2186
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150131201302
 Ignore-this: f6aa6dca9c24b61dafb0a0ac1000edaa
 Note the tests still fail, but now they fail for the right reason (i.e.
 issue2186), instead of already failing because the send command had no
 --mail switch.

[use files instead of pipe in tests/convert_export.sh
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150126173722
 Ignore-this: b8b56ac46713fb771ca10b646f09e213
 This makes it easier to debug things in case the test fails.
 BTW, this test badly needs more elaborate verification of the result, see

[resolve issue2427: start conversion from intermediate tree state
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150202144510
 Ignore-this: d1f5e117b0304dd0bf5f54a82f6546a3
 The bug was caused by ignoring the tree created when replaying the patches
 from the marks file (first call to hashedTreeIO) and then starting the
 actual conversion from an empty tree (second call to hashedTreeIO). The
 simple fix is to use the result from the first call as the starting point
 for the second one.

[fixed incomplete patterns in Darcs.Repository
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150126165912
 Ignore-this: 58b78d74458a0aac0c15faf16a6be0e9

[fix: use getExecutablePath only if ghc version >= 7.6
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150126164205
 Ignore-this: f5e51fd4082196d0e50a96f6afd7e463

[accept issue2333: Error message when pushing and darcs not in path
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150125235208
 Ignore-this: 2765882caafdbd3e592945a29db4d312

[cleanup: removed flag membership tests (marks, patchIndex, lazy)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150124224539
 Ignore-this: af9e90e75258c1cac7cf6ab52896897e
 In Darcs.Repository, cloneRepository and createRepository now take
 PatchIndexOption instead of Bool as argument for whether to create or
 the patch index. Overriding this option with NoPatchIndex for lazy clones
 has been moved from Darcs.UI.Commands.Clone to cloneRepository.

[cleanup: fixed indentation of convert command definitions
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150124223333
 Ignore-this: 5e2122c01176a73225611a9946917b9

[cleanup: group type signatures with definitions (withLock,releaseLock)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150124223031
 Ignore-this: 3bae53c7efa4b9b348dc9eb47e099dda

[resolved issue2333: use getExecutablePath instead of getProgName
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150126155207
 Ignore-this: 9c5853580509aa7a879f22462a8bafaf

[improved zsh completion script
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150124214314
 Ignore-this: 7aa9e130cc4c79ca7e02108c0cb63d25

[Fixed error message for invalid http repos.
 Ignore-this: b2fa952795b86fad18423b50ae1151fb

[issue822: Generalized the IO Type for better error messages and
exception handling
 Ignore-this: dfd81271f66712cef81136098372978e

[rolled back some accidental changes to messages and comments
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20150108173232
 Ignore-this: f1504f479295b60fe3ce1a43c8ccc7ab
 These changes were made in 88a1662536df56fca0e315ba145129fc2bd896db

[Make more of an effort to encode output correctly
Ganesh Sittampalam <ganesh@earth.li>**20141231201138
 Ignore-this: 4cd2cd54cb76ec1dc0dfbdb939be2e0f
 Add a new parameter to control how to encode output. This is
 really just a sticking plaster on top of an existing mess.
 See issue1693 for more discussion of this.

[support GHC 7.10/base 4.8
Ganesh Sittampalam <ganesh@earth.li>**20141231170841
 Ignore-this: 461255fc172db4690c279e33690a4a7a

[resolve Issue2411: ignore swap moves with --look-for-moves
Guillaume Hoffmann <guillaumh@gmail.com>**20141213234840
 Ignore-this: be5d59ee9df126dacf4e2cb0687e5b98
 it was an extreme case anyway, and it made move detection
 very slow in common cases

[rename 'rebase changes' to 'rebase log'
Ganesh Sittampalam <ganesh@earth.li>**20141212224641
 Ignore-this: 3533e77b61cb268b2a65dbeb084d9db7

[Rename the 'utf8' test to 'latin9-input'
Ganesh Sittampalam <ganesh@earth.li>**20141211110032
 Ignore-this: e62ae011b219ec2550ab438f189ed868
 This better describes what it does, as it is checking that patch
 metadata input in a latin9 locale is correctly handled by darcs.

[patch index: change order of on-disk pids
Guillaume Hoffmann <guillaumh@gmail.com>**20141212002647
 Ignore-this: d235bb1c0430aa236e980e348b40d533
 this way we don't have to reverse the pids list all the time

[check on-disk version of patch index at right place
Guillaume Hoffmann <guillaumh@gmail.com>**20141211223832
 Ignore-this: 1cb94e9c6681a522d30e1f6aeb58a6e4

[patch index: adapt removePidSuffix to the new order of pids
Guillaume Hoffmann <guillaumh@gmail.com>**20141212000103
 Ignore-this: 9cc04dd01cc91e84230abc36a30d01ff

[need to un-reverse the pids for the patch-index-test
Ganesh Sittampalam <ganesh@earth.li>**20141210230343
 Ignore-this: aeeaa4aa510dff411da46c4cb496bf41

[remove execSSH unused since removal of the put command
Guillaume Hoffmann <guillaumh@gmail.com>**20141209233636
 Ignore-this: 89630f7d9d60a0eb5b3edd18fef16a1c

[always compile with mmap support
Ganesh Sittampalam <ganesh@earth.li>**20141205182132
 Ignore-this: 43ead403f9da3fa8c8d2c0ab3d134396
 hashed-storage was requiring it unconditionally anyway

[remove redundant import
Guillaume Hoffmann <guillaumh@gmail.com>**20141127233908
 Ignore-this: ea27a5f6c5c6e69482d761215027e97

[Use darcsdir instead of literal "_darcs"
Lancelot SIX <lancelot@lancelotsix.com>**20141125224118
 Ignore-this: b4be170e22c07f33c237ab3cc0979246

[Suggest creating the initial git.marks in the incremental fast-export
 Ignore-this: 6fecd0d21200afdf8735301fbcf0167f
 Otherwise the first run fails because git complains with a fatal error,
 "cannot read 'git.marks'" (but it creates it anyway...).

[Use a double end-of-line to separate the patch name from the log in
 Ignore-this: d822ff7893e4b105acecad12a0d6a6c
 Git assumes that the "first line" of the changelog (i.e. what it shows
 with `git log --oneline') is separated from the long description by a
 double carriage return.

[Fix the git fast-import options in the incremental example
 Ignore-this: dcfe88a59284e09f810db8901dda3b60
 As of git 2.1.3 the git-fast-import command implements its own
 simplicistic command line options parser: it does not recognize
 the "--import-marks foo" but only "--import-marks=foo".

[resolve issue2422: drop unneeded LambdaCase extension
Ganesh Sittampalam <ganesh@earth.li>**20141125184441
 Ignore-this: b51e88d25f252288f072219df5f7b2ed
 It's not supported by GHC 7.4

[use the strict state monad for working with PatchIndex
Ganesh Sittampalam <ganesh@earth.li>**20141124180820
 Ignore-this: 4e3e8ce4fbfbbbb28565e0a6e5ebca88
 This allows applyPatchMods to consume a list of patches incrementally,
 otherwise the entire list of patches is kept around until it finishes.
 It also seems like a reasonable change for any other code that works
 on a PatchIndex, as there's no particular value in it being lazy.

[maintain the list of PatchIds inside the PatchIndex structure
Ganesh Sittampalam <ganesh@earth.li>**20141124180739
 Ignore-this: 8465a8a5a97290fd71ba75cac1df0171
 This should make it easier to build the two together incrementally

[Keep the PatchId list in reversed order in memory
Ganesh Sittampalam <ganesh@earth.li>**20141124175958
 Ignore-this: 49413e97f41767484e8f3112aa7f7f65
 This is preparatory for a further patch that builds it up

[Move the handling of individual PatchMods into applyPatchMods
Ganesh Sittampalam <ganesh@earth.li>**20141119174506
 Ignore-this: ef3351adf910257bc02ca33d2ad22d35
 This also pushes the 'nubSeq' call to only operate on the [PatchMod].
 This should make no difference as the PatchIds would be unique anyway,
 and it makes the behaviour of applyPatchMods more compositional with
 respect to individual patches.

[make Darcs.Util.Path.normPath cheaper on well formed paths
Guillaume Hoffmann <guillaumh@gmail.com>**20141119201803
 Ignore-this: 86f2dba444f0ddb14eeccd319aaa4552

[make Darcs.Util.Path.decodeWhite cheaper on paths that do not need it
Guillaume Hoffmann <guillaumh@gmail.com>**20141119174003
 Ignore-this: e8dfc09a74ca649f62afe50daab68a78

[remove unused FileName related function
Guillaume Hoffmann <guillaumh@gmail.com>**20141119170914
 Ignore-this: c5ca9d7e502ac429bdb4e150e68cc85a

[In CommandControl, push the existential down into the alternatives
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141114182940
 Ignore-this: 93cb87e52bb4e5a8b4ec12642ecc0b3c

[resolve conflicts
Ganesh Sittampalam <ganesh@earth.li>**20141118071131
 Ignore-this: f5d18b600ef7e3b68758ef605ff9b248

[Make the options type used by a command into a type parameter.
Ganesh Sittampalam <ganesh@earth.li>**20141114061820
 Ignore-this: 5f567fac30cf0567ed9a67345bb2ae0b
 The default for commands that haven't been migrated to the new
 options system is [DarcsFlag].
 The explicit parse step this change introduces provides a
 convenient point to normalise the [DarcsFlag] list for unmigrated
 commands, to avoid any problems caused by default values for
 options that are overridden by later choices appearing in the list.

[fix the --to-patch and --to-match flags
Ganesh Sittampalam <ganesh@earth.li>**20141119064824
 Ignore-this: 4b2a4ea7a2ba0d03f2e0ebb405c28ce1
 Before the options rewrite, clone used to treat these flags
 as if they were --patch and --match, and other commands treated
 them normally. In the rewrite, the clone behaviour accidentally
 got extended to the other commands.
 This fixes them to behave as expected, and explicitly translates
 them in the case of clone.

[fix: in utf.sh, add --skip-long-comment else an editor is opened
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141119064900
 Ignore-this: 196362b749e363ca05ac6b90b481181b
 This is due to the new behavior of Darcs record which opens an editor by
 default. I guess this didn't come up before because people who ran the
 don't have the ISO-8859-15 on their system (in which case the test silently

[Abstract out some common code in UI/Options/Util
Owen Stephens <darcs@owenstephens.co.uk>**20141115125051
 Ignore-this: 62d7c37782e022cf24f671957c1f4c2c

[Use fromMaybe d x instead of maybe d id x
Owen Stephens <darcs@owenstephens.co.uk>**20141115125051
 Ignore-this: 6a2cbf3e1909d082717f195f18130848

[Improve --not-in-remote, allowing multiple repos and use default
Owen Stephens <darcs@owenstephens.co.uk>**20141115125047
 Ignore-this: bbcced3d7fd0d44371cd6869bfec928c
 Handle multiple repos, and use the default push/pull repo if no arg 
 is passed

[Remove some trailing spaces
Owen Stephens <darcs@owenstephens.co.uk>**20141115114944
 Ignore-this: 6d7cd7254c02453bed78648e7ec41784

[Uncouple the --mail and --sendmail-command options
Ganesh Sittampalam <ganesh@earth.li>**20141117210357
 Ignore-this: 7969d6ac4a82d5fb19d116022814d3a4
 They were coupled together in the options rewrite, but it
 seems that some of the tests actually call --sendmail-command
 without --mail. This may be a hangover from the issue2204 changes,
 or it might be deliberate and I'm having trouble working out how
 things *should* behave.
 So for now I think it's best to go back to having them be
 independent options, and figure this out properly separately.

[use decodeString to convert command line args up front
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141117221114
 Ignore-this: be726db2d824843f614fbc070bce04f3
 Also make it return IO String, thus saving an unsafePerformIO. This is
 possible because decodeString is no longer used in pure functions.

[resolve issue2414: use parseFlags instead of toMatchFlags where needed
Guillaume Hoffmann <guillaumh@gmail.com>**20141117205032
 Ignore-this: cf0d8b7f5d939a0a9663a3eb51e4dc03

[resolve issue2418: add and check on-disk patch index version
Guillaume Hoffmann <guillaumh@gmail.com>**20141117000605
 Ignore-this: c5d4418b0782a5a2f3b13f60a60411e3

[no longer use indexing for on-disk patch index, make infomap a bloom filter
Guillaume Hoffmann <guillaumh@gmail.com>**20141116235354
 Ignore-this: df6139ad951490a744a052fec2b234c8

[reimplement getPatches with less code
Guillaume Hoffmann <guillaumh@gmail.com>**20141113210742
 Ignore-this: d28c8a5a5da25c666b8d26bf814cefe

[cleaned up some duplicate build-depends in darcs.cabal
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141113224322
 Ignore-this: 85d2687c8c92c6be03fca082e282a53a
 These were, I think, left-overs from pasting the hashed-storage stuff.
 There are more of these duplicate entries but I don't feel too confident
 messing around with the cabal file.

[removed a wrong comment in Darcs.UI.Options.All
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141112161047
 Ignore-this: a581a8ad433602d6c224c6be43da1e62

[added some empty lines and fixed a comment typo in Darcs.UI.RemoteApply
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141109222731
 Ignore-this: e8bba5baf0164d94ec3c87da2ba1534e

[move Iso and IsoFunctor from Darcs.UI.Options.Core to Darcs.UI.Options.Iso
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141113014619
 Ignore-this: a0c3f908fabd9bbec54bbb14129a2107

[minimise imports of DarcsFlag's constructors
Ganesh Sittampalam <ganesh@earth.li>**20141112072539
 Ignore-this: 6c4e42f670c6f49eda0a9eba3415c556

[update messages mentioning darcs optimize --patch-index
Ganesh Sittampalam <ganesh@earth.li>**20141113070114
 Ignore-this: 7cdc9f1b64cb6d7c341ab409712f5cf
 optimize is now a supercommand rather than having lots of flags

[make the help message for --ask-deps generic
Ganesh Sittampalam <ganesh@earth.li>**20141105191341
 Ignore-this: 54ed63f79857a40f1b02ff7c9e5d3f96
 It now makes sense for both record (default dependencies are
 minimal) and tag (default dependencies are everything).
 Update the record and tag help to clarify the behaviours.

[fix warnings
Ganesh Sittampalam <ganesh@earth.li>**20141105210202
 Ignore-this: 42d9f7bb61c74f2e8b4fd78ef741c60d

[removed tests for flag membership in Darcs.UI.CommandsAux
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141109222322
 Ignore-this: acb4d57b21d492e3c30c5e818a3f8853

[fix the convert command (convert.sh test failed)
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141108232406
 Ignore-this: 7b34917128cce054847247ee96d710b4
 This patch demonstrates how to get rid of explicit flag testing in command
 implementations as well as how to handle the cases where flags are add to
 the flag list. Here, we remove flag testing and insertions for the
 UseFormat1 and UseFormat2 flags.

[use bytestring functions dropWhile and break instead of ours
Guillaume Hoffmann <guillaumh@gmail.com>**20141112184534
 Ignore-this: fa2be34fea3b4fb4547ba980e00acb72

[directly pass around SHA1 of patches instead of string representation
Guillaume Hoffmann <guillaumh@gmail.com>**20141107110825
 Ignore-this: ba5cffe5bb1237e0342fa71f530e1b6a

[correctly take into account --[no-]edit-description
Guillaume Hoffmann <guillaumh@gmail.com>**20141105200335
 Ignore-this: 53b982d9cd0f592846c25bed0e9d691b

[revert send default to --edit-description
Guillaume Hoffmann <guillaumh@gmail.com>**20141105194524
 Ignore-this: a35c151a85202c13e29cf8bcfdc11f27

[put again as verbose-only the patches pack fail message on cloning
Guillaume Hoffmann <guillaumh@gmail.com>**20141105181711
 Ignore-this: 1b51784b668189a616340a6f9c953e65

[basic test of tag --ask-deps
Ganesh Sittampalam <ganesh@earth.li>**20141105182259
 Ignore-this: 5ceda085bfc09cf690b5740ad918a383

[Disallow "skip all" option in interactive selection for tag --ask-deps
Ganesh Sittampalam <ganesh@earth.li>**20141105180951
 Ignore-this: 92ff8bc82f71b843fee0c2a6bc8e38f
 The default for tags is to depend on all patches. --ask-deps allows some
 to be left out, but the user should explicitly select those. Trying to
 leave out most patches in a large repository is likely to be very slow
 and is probably a mistake.
 The implementation, exposing an 'allowSkipAll' constructor field on
 PatchSelectionContext, is a bit ad-hoc. However the alternative would be
 extending the selectionContextXXX functions with another parameter for
 this one special case. I think in general it makes sense to allow this
 style for overriding defaults.

[Initial implementation of --ask-deps flag to darcs tag
Ganesh Sittampalam <ganesh@earth.li>**20141105180531
 Ignore-this: bdcbee6c246af7c634ecc13d71d3fbfb
 A user may want to tag just a subset of their repo, and this is much more
 convenient than making a separate repo just to tag.
 Note that this initial implementation is quite inefficient - it grabs
 all the patches in the repo in one big list.

[rename the confusing concept of 'Tag' in Darcs.Patch.Choices to 'Label'
Ganesh Sittampalam <ganesh@earth.li>**20141105180246
 Ignore-this: 7682398a50da4b7b71a2fc9a6d64c63f
 They have nothing to do with darcs tags

[push the WhichChanges choice into the PatchSelectionContext
Ganesh Sittampalam <ganesh@earth.li>**20141105180226
 Ignore-this: cde16cab145c1a236dac0e796499782
 This removes the need to pass it around explicitly so much, and seems like
 a natural approach. In particular it demonstrats that the value doesn't
 change during a selection.

[integrate new options subsystem
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20141104223757
 Ignore-this: 9636f6d007ba4241b19b9b964bf886a3
 The conversion is complete in the sense that the old Darcs.UI.Arguments is
 now obsolete and can be removed. Command options are specified using
the new
 "typed" DarcsOption type from Darcs.UI.Options. All available tests
 However, it is incomplete in the sense that there are still many places
 where the list of DarcsFlag is scanned or manipulated directly. Removing
 these direct accesses will be an on-going effort; when it is complete
we can
 replace [DarcsFlag] with an abstract data type.
 This patch contains an almost complete re-implementation of
 Darcs.UI.ArgumentDefaults under the new name Darcs.UI.Defaults. This adds a
 new dependency on regex-applicative, see the comments in the code.
 I have also made the tentative change of using a command specific
 configuration record for two of the commands, namely "record" and "amend".
 It remains to be seen whether this is the right approach and the other
 commands should follow it.
 Rebased by Ganesh Sittampalam <ganesh@earth.li> to integrate with the
 darcs code. Originally in two patches that first introduced and then
 switched to the new code; I merged them into one to make the rebasing

[Work around haskell-src-exts (and hence hlint) parse errors
Ganesh Sittampalam <ganesh@earth.li>**20141029163818
 Ignore-this: 3e77eceae03d2f001b7a98779b9ea88a

[replaced duplicate DiffAlgorithm in Darcs.Repository.Flags with re-export
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20140629235443
 Ignore-this: 8135bf861d054d75f5ee4ce9116ea208

[Darcs.Repository.Flags: added Show instances for all types
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20140629112323
 Ignore-this: 27f18b99ebbc4f09f7c2bf8f6953ff2d

[Darcs.Repository.Flags: added Eq instance for UseIndex
Ben Franksen <benjamin.franksen@helmholtz-berlin.de>**20140613093130
 Ignore-this: 925bd846affdc9566fd4de260b296d39

[Make the rebase changes output more user-friendly
Ganesh Sittampalam <ganesh@earth.li>**20141027222856
 Ignore-this: dc672de6831b6442aad7c686b909e1d4

[resolve conflicts
Ganesh Sittampalam <ganesh@earth.li>**20141025171146
 Ignore-this: 25c380d61a622ecd90f7df9b2e578e01

[add a unit test for RebaseChange
Ganesh Sittampalam <ganesh@earth.li>**20130318073447
 Ignore-this: 77a277e12eba00fda5d4e8e9abb17565
 This also involves adding some infrastructure for rebase unit tests

[resolve conflicts
Ganesh Sittampalam <ganesh@earth.li>**20141025160729
 Ignore-this: ca7a0c3c8b75156587cb4f54fd05342a

[change/add various Show instances to ones that produce Haskell code
Ganesh Sittampalam <ganesh@earth.li>**20130315182033
 Ignore-this: 8d72fc40759b52b142c7c0eaefc836b0
 The existing instances are only used for diagnostic output in the test
 This change helps with using the instances in ghci for debugging and
 The instances aren't always as trivial as deriving Show or the equivalent,
 because of constructors that aren't exposed or whose names are ambiguous,
 but that's the starting point.

[stop using custom Show instance on PatchInfo
Ganesh Sittampalam <ganesh@earth.li>**20130315073603
 Ignore-this: c84214fdace20b0ea4e881c559cf89df

[rebase changes: delegate listConflictedFiles etc instead of using default
Ganesh Sittampalam <ganesh@earth.li>**20130312070543
 Ignore-this: 9228c4cc67f0fd8c5076054f7fa120be
 The default doesn't do the right thing with duplicates so V2 patches
 where the 'fixup' is the inverse of the 'toedit' patch aren't reported
 as conflicts.

[abstract code for treating RebaseChange as a merge
Ganesh Sittampalam <ganesh@earth.li>**20130312070543
 Ignore-this: a615496ba25a19cc3fb3dd67465f74d8

[resolve conflicts
Ganesh Sittampalam <ganesh@earth.li>**20141025160030
 Ignore-this: 7a42ce435cad0afcdad55c8eab3d6599

[initial version of 'rebase changes' command
Ganesh Sittampalam <ganesh@earth.li>**20130311182415
 Ignore-this: dc58615c9d248c61a588ba6e1ab3eab6

[introduce a new type class for patch matching
Ganesh Sittampalam <ganesh@earth.li>**20130221072122
 Ignore-this: 49aa419f3068db87f6faa6a94b7cce86
 The class has more requirements than Patchy, but fewer than RepoPatch.

[resolve conflict (getChangesInfo flag changes and renaming)
Ganesh Sittampalam <ganesh@earth.li>**20141024171839
 Ignore-this: 34f42a171b933c4ca50e97cab013d6cb

[make getChangesInfo take specific flags only
Ganesh Sittampalam <ganesh@earth.li>**20130219005014
 Ignore-this: bc20f1f96d19d465289db26523c79671

[resolve conflicts (getChangesInfo renaming and refactoring)
Ganesh Sittampalam <ganesh@earth.li>**20131201200550
 Ignore-this: 71a1d9bea23a64a9c544cea72e304a65

[resolve conflicts (addition of diff algorithm and getChangesInfo
Ganesh Sittampalam <ganesh@earth.li>**20131128070554
 Ignore-this: efd5658d79aa2acd01d6f688e1d73cfe

[make getChangesInfo take a PatchFilter instead of a Repository
Ganesh Sittampalam <ganesh@earth.li>**20130218234725
 Ignore-this: 96e88fa9f0c4eab1f68080484006c63d

[fix warning
Ganesh Sittampalam <ganesh@earth.li>**20141024071402
 Ignore-this: f8ce2ab8350eddfb9fa4933bec6eb16c

[reduce dependencies for Named/PatchInfoAnd Patchy instances
Ganesh Sittampalam <ganesh@earth.li>**20130225070307
 Ignore-this: 413c0507d6907fedce95f01414e7a0d5

[drop unnecessary UndecidableInstances
Ganesh Sittampalam <ganesh@earth.li>**20130226072849
 Ignore-this: 63b8ba15a26adc7212d1c052e357b5d6

[resolve conflict in improved 'darcs replace' message
Ganesh Sittampalam <ganesh@earth.li>**20141024071412
 Ignore-this: c5af3a23dafe79720e54f19a165b1a23

[improve message from force-replace
Ganesh Sittampalam <ganesh@earth.li>**20130820054735
 Ignore-this: 39cbbd1856a300b766296bd1a40c3e25

[bundle up checking for patch index and using it
Ganesh Sittampalam <ganesh@earth.li>**20130218233321
 Ignore-this: a253261a2b5eefbf7113af27694d6beb

[tweaks to rebase help strings
Ganesh Sittampalam <ganesh@earth.li>**20130220180422
 Ignore-this: b7e2ea4feafe94a5e7d23cfba91d495f

[resolve issue2409: implement darcs rebase apply
Ganesh Sittampalam <ganesh@earth.li>**20141022073448
 Ignore-this: a1c0c535bc3c0a80208d5c0a66f24a3d

[switch applyCmd to use the PatchApplier abstraction
Ganesh Sittampalam <ganesh@earth.li>**20141022005542
 Ignore-this: e4bd8bf03aaaacaf3ab4d56db652ef02

[reuse the standard pullCmd for rebase
Ganesh Sittampalam <ganesh@earth.li>**20141022002250
 Ignore-this: 9dd91d42805e4641bbcbd4d168d4d8a2
 This involves a rather complicated abstraction that would be major overkill
 for the approximately 6 lines of copy and pasted code that it saves.
 However it should extend to applyCmd, which is substantially bigger.

[generalise applyPatchesForRebase along the same lines as applyPatches
Ganesh Sittampalam <ganesh@earth.li>**20141021195533
 Ignore-this: bb7a08b357fa17aaa68f4535c8d24049

[add --no-minimize flag to fix broken tests
Guillaume Hoffmann <guillaumh@gmail.com>**20141023140032
 Ignore-this: 149af1c288010f847090296c7141fc2c

[resolve issue2403: need to avoid moving the rebase patch to the end
Ganesh Sittampalam <ganesh@earth.li>**20141021182411
 Ignore-this: ba2cab618173357056ef8ef071409137
 This bug is a pretty good example of why the "rebase internal patch" is
a rather
 nasty hack - see 'Note [Rebase representation]' in

[Share applyPatches code between pull and apply
Ganesh Sittampalam <ganesh@earth.li>**20141021160825
 Ignore-this: e36dbb1dafe019cd55900b5a76561bc0
 Abstract the applyPatches function from the apply command, and make pull
 use it.
 This means the following changes to apply:
  - The outcome is now displayed using 'putInfo', which means it will
    respect options like '-q' where it didn't before. This seems reasonable.
 It means the following changes to pull:
  - We now call 'setEnvDarcsPatches'. This seems reasonable.
  - We now call 'withSignalsBlocked' when applying patches. I think this is
    harmless or an improvement.
  - The output messages are a bit more generic, but I don't think any
    detail is lost.
  - We now call 'redirectOutput' around the messages. --reply isn't passed
    to pull so this should make no difference.

[clarify naming of applyPatches functions
Ganesh Sittampalam <ganesh@earth.li>**20141021140658
 Ignore-this: 71936b7fbc48182b6c54b106f1603db3

[optimize cache help string
Guillaume Hoffmann <guillaumh@gmail.com>**20141021141336
 Ignore-this: 18a6b564cc56e085d809b081476d9229

[minimize bundle contexts by default, allow ctrl-c or --no-minimize
Guillaume Hoffmann <guillaumh@gmail.com>**20141017174032
 Ignore-this: 3a75c1ef6dce9d8d72e6187f7b6bf91

[pattern-match against Sealed rather than using unsafeUnseal
Ganesh Sittampalam <ganesh@earth.li>**20141016174317
 Ignore-this: 55aaf5c87ef92b21619bcf8f39571247

[comment about fast-export forbidden tag characters
Guillaume Hoffmann <guillaumh@gmail.com>**20141015201430
 Ignore-this: 392e642d7b9fe85edf1b0e98c1628909

[--minimize for obliterate -O
Guillaume Hoffmann <guillaumh@gmail.com>**20141015210534
 Ignore-this: a99c974c6d42d0a27643214b48cb70c9

[resolve issue1514: send --minimize-context flag for send
Guillaume Hoffmann <guillaumh@gmail.com>**20141015210457
 Ignore-this: 486b70607488643e092bb8f46cd046d4

[followup work on garbage collecting of global cache
Guillaume Hoffmann <guillaumh@gmail.com>**20141014121832
 Ignore-this: 6d185d1561f745ca0999d8c6a5d9dbca
 * do bucketting and garbage collection in single command
   'optimize cache'
 * no longer recurse in dot-directories when looking for
 * no longer consider OF repositories
 * when no directory given look into home

[use now -h and --hash as shortcut flags to match on patch hash
Guillaume Hoffmann <guillaumh@gmail.com>**20141008185829
 Ignore-this: a8caae8a4ef50049fae3954867f2e3a7

[remove the broken sigPIPE test
Ganesh Sittampalam <ganesh@earth.li>**20140927143018
 Ignore-this: f75edf3af9a6824c303c08c3ebcac92b
 This test was introduced in 2006 to assert that darcs shouldn't exit
with an
 error if stdout disappears while it's running (e.g. darcs changes | head).
 It looks like at some point this test stopped being useful, because it
 actually producing enough output to actually fail, e.g. because of
 on the other side of the pipe.
 It also seems that at some point darcs did start exiting with an error
in this
 scenario. This may have been due to GHC library changes in the handling of
 EPIPE - see GHC bugs #1619 and #2699 for some context.
 Then the output format of 'darcs changes' was changed by "show patch
hash in UI",
 which tipped the amount of output back over the edge and caused the test to
 In general the typical behaviour for UNIX commands is to exit with an error
 when their output pipe disappears. The exit code is typically 141
because the
 command receives SIGPIPE. In our either darcs or the GHC runtime or
both are
 ignoring SIGPIPE, so the eventual exit code is 2 (see
 I think this behaviour is fairly reasonable so I am just deleting the test.

[Resolve issue2249: Rename isFile to isValidLocalPath and WorkRepoURL to
 Ignore-this: 7273172e1131a0a6870f1d203d241b97

[enable a few tests on Windows
Ganesh Sittampalam <ganesh@earth.li>**20140927231429
 Ignore-this: 7a6c4ee4b1cc72b03cbbe7838135165c

[add a format pragma for the convert.sh and fix the test data
Ganesh Sittampalam <ganesh@earth.li>**20140927225450
 Ignore-this: 122ace385c091a781d3c2d6cda349bda

[skip the issue1739 test on Windows for now as it fails
Ganesh Sittampalam <ganesh@earth.li>**20140927223606
 Ignore-this: 8346a368b26d2584f81350e67b97ab6a

[Control pkgconfig use with a flag, defaulted to off
Ganesh Sittampalam <ganesh@earth.li>**20140927215357
 Ignore-this: 77a55f08986766d8bf2266b8225e08f1
 It causes problems on e.g. MacOSX which doesn't have many pkgconfig files.

[fix the utf8.sh test to reflect the issue2320 changes
Ganesh Sittampalam <ganesh@earth.li>**20140927161419
 Ignore-this: e06d85b49a59eb35ca45d1c27c509d38
 Interactively entered authors now end up in the global prefs file.
 To avoid clobbering the user's prefs if they run the script by hand,
 the test is now skipped if a global authors file exists.

[resolve issue2153: allow skipping backwards through depended-upon patches
 Ignore-this: 2d9870514749ee03396bfd73983cb274

[accept issue2153: allow skipping backwards through depended-upon patches
 Ignore-this: 4ce9dd2c133e43526b052092fa87c110

[fix send-output tests to reflect changes in patch display
Ganesh Sittampalam <ganesh@earth.li>**20140927093249
 Ignore-this: 61a278074b4a8ae1cbe1848a4743296a

[push CPP down into individual modules
Ganesh Sittampalam <ganesh@earth.li>**20140926202605
 Ignore-this: 308504f40c75a82a9593c5f6ea695d5f
 This reduces the time spent preprocessing, cutting the time for a "null"
 cabal build from 17s to 12s for me.

[change test to use a hostname that doesn't resolve
Ganesh Sittampalam <ganesh@earth.li>**20140926192248
 Ignore-this: 3f7fb3bd0905b3f1dea2aa8d72a8cd10
 For some reason 'host' resolves to for me right now, might be
 that something changed in the root zones or some behaviour of Google's DNS

[rename join in the PrimCanonize class to coalesce
Ganesh Sittampalam <ganesh@earth.li>**20140927081710
 Ignore-this: f1f1a8f121bfadc465d130346c544c4b
 This avoids clashes with the Prelude's join and is a better name anyway
 Also rename various tests and utility functions to reflect this name change

[rename coalesce to coalesceRev to free up the 'coalesce' name for the
type class
Ganesh Sittampalam <ganesh@earth.li>**20140927075255
 Ignore-this: e0edba9f8f53965d8e9f7c3edbee9d8d

[AMP for FileModMonad and second copy of "Perhaps"
 Ignore-this: ebf43be6c2d1b8db104d7ce630387087

[AMP for Perhaps and DefaultIO/TolerantIO/SilentIO/TolerantWrapper
 Ignore-this: b1c7980e51326c608b0c1e3e76bb379f

[Remove faulty (>>) in second Perhaps
 Ignore-this: b2bdc2cea564544ce6790dd0396f9b7d

[Perhaps was not a valid Monad
 Ignore-this: afea2e316df1ff8dc5625e31eb77130a

[fix some warnings that show up with -DHAVE_HTTP
Ganesh Sittampalam <ganesh@earth.li>**20140927061930
 Ignore-this: b48c8d9087d582f39929d9817a00fffc

[hack to appease GHC 7.8 warning about patterns that don't bind anything
Ganesh Sittampalam <ganesh@earth.li>**20140926200333
 Ignore-this: 3239a66df17dbd406b343665585220c1

[GHC 7.8 is a bit more picky about unused imports
Ganesh Sittampalam <ganesh@earth.li>**20140926200301
 Ignore-this: b6f89de0e29ab6c80329ec1951b83d96

[Fix some Windows-specific warnings
Ganesh Sittampalam <ganesh@earth.li>**20140926165949
 Ignore-this: bb5603c276c55a8b1d8468a98195e914

[switch from deprecated System.Cmd to System.Process
Ganesh Sittampalam <ganesh@earth.li>**20140926163517
 Ignore-this: 5a05007a7e868cebe16252262337756

[switch from deprecated Data.AttoParsec.Char8 import
Ganesh Sittampalam <ganesh@earth.li>**20140926125754
 Ignore-this: 57d83400f7401998618bc66438f4ef9e

[respect -fwarn-as-error in hashed-storage-test and fix warnings
Ganesh Sittampalam <ganesh@earth.li>**20140926122411
 Ignore-this: 72a15de1e0766e7c8dc810ad7dbfcac2

[support random 1.1
Ganesh Sittampalam <ganesh@earth.li>**20140926155749
 Ignore-this: a68412583402594b707f7d1ccc2311d5

[support text 1.2
Ganesh Sittampalam <ganesh@earth.li>**20140926155741
 Ignore-this: 1bcd8f776dcadb2f174883c34873b148

[support mtl 2.2
Ganesh Sittampalam <ganesh@earth.li>**20140926155729
 Ignore-this: 868ab98d5f71b026ba87f0053f67c69d

[switch curl config to use pkgconfig
Ganesh Sittampalam <ganesh@earth.li>**20140829210652
 Ignore-this: 75e8c9ebceba99e94247b6e6652db688

[remove creator-hash flag unused since annotate rewrite
Guillaume Hoffmann <guillaumh@gmail.com>**20140825195932
 Ignore-this: 2a857b399a1815d78ef95b5d18f8ba2a

[Fixed file does not exist error when using darcs optimize global-cache.
Marcio Diaz <marcio.diaz@gmail.com>**20140729121724
 Ignore-this: 33e4d97a15de60fca6c61e0fc08b56b8

[restore import
Guillaume Hoffmann <guillaumh@gmail.com>**20140731182406
 Ignore-this: 44d0237af20ee3c3b9dd13e54eb9bd9d

[use makePatchID
Guillaume Hoffmann <guillaumh@gmail.com>**20140730201517
 Ignore-this: 4a6f189d00c423686698caf05ca77433

[print an informative message after rollback
Ganesh Sittampalam <ganesh@earth.li>**20140725204057
 Ignore-this: dc5d37deeb3cc5455ff10920a531dd38

[Garbage collection of global cache.
Marcio Diaz <marcio.diaz@gmail.com>**20140723173005
 Ignore-this: 52b3557bc6237b17de2e05bde10729bd

[enable to match on patch hash prefix and ignore case
Guillaume Hoffmann <guillaumh@gmail.com>**20140724132850
 Ignore-this: d0e43fceb3682dff95b51e51d84729e8

[show patch hash in UI and put author and date on separate lines
Guillaume Hoffmann <guillaumh@gmail.com>**20140724131644
 Ignore-this: 225478cb9a7a1c82c73668ed12e27a46
 some cleanups:
 * use correctly makePatchname instead of makeFilename in other
   places of the code
 * remove unused RepoPatchInfo
 * remove unused idpatchinfo
 * remove unused makeAltFilename
 * remove unused HTML class instance of PatchInfo 

[document pull --reorder
Guillaume Hoffmann <guillaumh@gmail.com>**20140721131956
 Ignore-this: f8a4557515c314f5dac855d3d57e267f

[Add failing test for issue2403: darcs rebase pull --reorder crashes in
Ale Gadea <alex.aegf@gmail.com>**20140709003620
 Ignore-this: 80d4de03dc3500ac18bf63594a913ab4

[New option "--reorder" for the command rebase pull.
Ale Gadea <alex.aegf@gmail.com>**20140709003350
 Ignore-this: cf17849e0ff84b4dd72f3bac47572e2
 The option --reorder moves to the top the uncommon set
 of patches between the current repository and remote

[New option "--reorder" for the command pull and apply.
Ale Gadea <alex.aegf@gmail.com>**20140709003342
 Ignore-this: e2b2d705d2d515dc5b54201be4f7c76f
 The option --reorder moves to the top the uncommon
 set of patches between the current repository and remote

[Some files are not being written to the bucketed cache because there is 
Marcio Diaz <marcio.diaz@gmail.com>**20140717202711
 Ignore-this: 9cea752ee9e2593ea5019c3b21ca3589
 no bucket folder. This patch fixes this bug.
 If the global cache doesn't exist (the directory ~/.cache/darcs) and 
 we clone a repository that is already in our file system, the first 
 inventory (which appears in hashed_inventory) is not being copied 
 to the global cache.

[resolve issue1624: bucketed cache.
Marcio Diaz <marcio.diaz@gmail.com>**20140716102401
 Ignore-this: 2d077f5c10156e4a00631fbc4f8c3119

[update issue2388 test to optimize supercommand
Guillaume Hoffmann <guillaumh@gmail.com>**20140624235514
 Ignore-this: 7cf20a06983ae402012a69e099304d41

[Resolve issue2388: check if inventories dir has been created
Owen Stephens <darcs@owenstephens.co.uk>**20140511161049
 Ignore-this: 9ae9fa01025cb679aa559324853e8d9e

[Accept issue 2388
Owen Stephens <darcs@owenstephens.co.uk>**20140511161040
 Ignore-this: 416091ad226d7d302948931599233ddd

[explain commandProgramName
Guillaume Hoffmann <guillaumh@gmail.com>**20140618195836
 Ignore-this: 572f8e16d8ce0266b4012b9dec01ca3c

[Move previously failing issue2382 test
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: 8eb3fcfc1fdfa894ebca285d97fb9342

[Tweak renameHelper - add trailing EOL in files and remove unnecessary $
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: 4cd37c20ad3f076ce7a5f4e841e6cc9c

[Always use MyersDiff when removing a file - the diff will be identical
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: 5d81f5802cca1fd0f9d9b61f7e3500d3

[Use addPendingDiffToPending to add move patch and deps to pending
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: 78fde0a2999659291934c53f9333fe75
 We used to add an explicit addfile/adddir patch that was a hacky way to get
 around the implementation of addToPending (the diff to working would
notice the
 rmfile, which would be cancelled-out by the addfile). Now we can just
add the
 move patch and its dependencies (e.g. removing an existing target) by
 a patch that starts at pending

[Add addPendingDiffToPending function and comment addToPending
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: fa962259799b0c7627c98f52d416dc06
 The new function allows us to add a patch to pending that is based on the
 pending state of the repo, not working (as per addToPending). 

[Implement moveToDir and simpleMove with common function
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: bb5705b797e2421716c12f7fe006294
 Ensuring that move patches are not applied if the move is post-hoc

[Fix a rename testcase marked as ok when it shouldn't be
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: 699d9ed011971bf8f9069356176df89

[Make renameHelper much more efficient
Owen Stephens <darcs@owenstephens.co.uk>**20140511150625
 Ignore-this: 115949fb3a276930c5ca3386c5ebc6b2
 Add/record all initial state up front, rather than one file/dir at a time.
 Avoid extra system calls by using && to join multiple commands

[Give user more feedback when doing a move
Owen Stephens <darcs@owenstephens.co.uk>**20140511150615
 Ignore-this: 6e5150f600c7ef722a970414c74c9d7a

[Allow diff to handle a file changing to a dir or vice-versa
Owen Stephens <darcs@owenstephens.co.uk>**20140511115323
 Ignore-this: c4425d9c731c06d7060770cf983359a0
 It'll return a removal hunk ; rmfile ; adddir for the file dir case

[Prevent updateIndex failing if a file is moved to a dir or vice-versa
Owen Stephens <darcs@owenstephens.co.uk>**20140511115323
 Ignore-this: f0bfed8c84f9339e4f7a9717bdc172d5
 Now, if a file becomes a dir, trying to readFile (to update the index)
 the file as missing.

[Accept issue2382: darcs is confused if a dir is moved inplace of a file
Owen Stephens <darcs@owenstephens.co.uk>**20140511115323
 Ignore-this: 628eb332bc70017fbe18a0f47e0dd71f

[renameHelper now tests all combos of path status and path type
Owen Stephens <darcs@owenstephens.co.uk>**20140511115322
 Ignore-this: a3c013bf743e5a81c668adbb4f7f7be5
 (missing/unknown/known/shadow) for status and file/dir for type

[Tidy up of Move - refactor out some common code
Owen Stephens <darcs@owenstephens.co.uk>**20140511115159
 Ignore-this: 270727265518e70b6c2849e7b2db3366

[Allow post-hoc moves to known paths
Owen Stephens <darcs@owenstephens.co.uk>**20140430023525
 Ignore-this: f5f0b4d7a90e32b8f4e8a0eed47d2022
 The new behaviour is to record patches that first delete the original
 before adding the move patch 

[renameHelper should not record all changes
Owen Stephens <darcs@owenstephens.co.uk>**20140430023525
 Ignore-this: d5ef08d71471ec5368c7018f62ff0f23
 We were accidentally recording patches that removed files that we wanted to
 appear as shadow files (recorded as present, but missing in working)

[Resolve issue2380: allow darcs mv into known, but deleted in working, file
Owen Stephens <darcs@owenstephens.co.uk>**20140424211940
 Ignore-this: 8c4f8d77480dd360d051b944dc22c6d

[Tidy up checkNewAndOldFilenames in the Move command
Owen Stephens <darcs@owenstephens.co.uk>**20140422235835
 Ignore-this: f5c0fb784b1d9a69f7d2641f9111e580

[fix darcs convert import, enhance help string
Guillaume Hoffmann <guillaumh@gmail.com>**20140624191320
 Ignore-this: e59dddbd5bc3c036ef0d404dc475b7e4

[Documentation of function Darcs.Repository.Internal.misplacedPatches .
Ale Gadea <alex.aegf@gmail.com>**20140611054743
 Ignore-this: 8c388563d9d269ffd723cf67aad3c839
 misplacedPatches is the new name of the function called chooseOrder.

[remove patch index flags from rollback command
Guillaume Hoffmann <guillaumh@gmail.com>**20140612170904
 Ignore-this: 342ccf1ce50dd76b5af334df2298f63

[resolve issue2396: make convert a supercommand and enhance help strings
Guillaume Hoffmann <guillaumh@gmail.com>**20140610210546
 Ignore-this: 41493c28dab5a745b1d2c7107212724e

[Documentation for Darcs.Patch.Witnesses.Sealed module.
Ale Gadea <alex.aegf@gmail.com>**20140610190035
 Ignore-this: 9618a5fadfff84f05fdbd1746345ca52

[Documentation for Darcs.Patch.Witnesses.Ordered module.
Ale Gadea <alex.aegf@gmail.com>**20140610185240
 Ignore-this: e4f610d286b5caafdefc49ba83cb8c7d

[marksfile support for convert --export
Guillaume Hoffmann <guillaumh@gmail.com>**20140609190214
 Ignore-this: 154f9a34ec7c65eaa64ab42462c60705

[conditionalise replHook using Template Haskell
Ganesh Sittampalam <ganesh@earth.li>**20140603061639
 Ignore-this: 579c7064a7e74cce4bd992c527aa1ba

[Resolve Issue2361: optimize --reorder runs forever with one repository
Ale Gadea <alex.aegf@gmail.com>**20140605210012
 Ignore-this: b18bc37e5d6668df62f05679c629e08c

[factorize boilerplate of optimize subcommands
Guillaume Hoffmann <guillaumh@gmail.com>**20140605174035
 Ignore-this: 13cc1ac6f5a70fd96815dca2ab12f76c

[resolve issue2394: make optimize a supercommand
Guillaume Hoffmann <guillaumh@gmail.com>**20140603201207
 Ignore-this: 841fbf0c5e0017eaff8b87b75ad80a37

[adapt testsuite to new optimize supercommand
Guillaume Hoffmann <guillaumh@gmail.com>**20140603191624
 Ignore-this: 83ae766c19b58c215adf9f4ec72f08bd

[Use DeriveFunctor instead of manual instance for PatchMod
Owen Stephens <darcs@owenstephens.co.uk>**20140430023826
 Ignore-this: 14f21fae95a81cdec9cf74c44b3d26c6

[indentation fix for Windows-only module
Ganesh Sittampalam <ganesh@earth.li>**20140530060239
 Ignore-this: 4b53307163b44e11e9febcd8c49a7125
 This is required by the Haskell2010 change (or we'd
 have to enable NondecreasingIndentation)

[fixed a typo in a comment in Darcs.Util.Diff.Patience
 Ignore-this: ed08722291d80e441f601244ef15e7ab

[make optimize command respect --quiet by using putInfo
 Ignore-this: f4a139619c68470fe821929958a910b

[darcs.cabal: make Haskell2010 the default-language for all stanzas
 Ignore-this: 44afc0f4c5b5de0751edd2f99764dc20
 This implied some more changes: we must demand cabal version >= 1.10, and
 change the extensions fields to default-extensions; in the
implementation of
 some of the commands, needed to fix the indentation of do blocks.

[re-advertise GHC 7.8 support
Ganesh Sittampalam <ganesh@earth.li>**20140529221736
 Ignore-this: 457971dce069111801eeb10fa3b5668e

[clean out some obsolete conditionalisation
Ganesh Sittampalam <ganesh@earth.li>**20140427175352
 Ignore-this: c1adbafd4846134551b407d9cb176e20

[bump version to 2.9.9
Ganesh Sittampalam <ganesh@earth.li>**20140427175310
 Ignore-this: 6f94d6f638e6f3fbc6025e02cbf095b1

[rm latex2html file
Guillaume Hoffmann <guillaumh@gmail.com>**20140519171502
 Ignore-this: 1b9dbcca5c360bfda280325b78a9736f

[implement doFastZip to create zip archive from pristine tree
Guillaume Hoffmann <guillaumh@gmail.com>**20140516190946
 Ignore-this: 483ef7fffc417a4811d2d8cd90885e18

[resolve issue2364: don't break list of 'bad sources'
Sergei Trofimovich <slyfox@community.haskell.org>**20140513190719
 Ignore-this: d68861b39305be9b7c77e9a6fca89601
 This time the bug manifested on a simple operation:
 $ darcs record -a -m "something"
 Attempt to write a patch resulted in something like:
   Failed to record patch 'hello'
   HINT: I could not reach the following repositories:
       If you're not using them, you should probably delete
 The sequence should be the following:
     1. store patch to inventory/foo
     2. try to store to a writable cache (say, ~/.darcs/cache/patches)
     3. fail to write
     4. filter out bad caches
     5. try again
     6. copy from cache to patches/
 Due to missing NOINLINE step 4. led to
 all caches treated as writable, thus step 5
 failed without a chance for patch to
 go to 'patches/'.
 As a side-effect building darcs with -O0 produced seemingly working darcs.
 Reported-by: Ivan Miljenovic

[Accept issue2386
Owen Stephens <darcs@owenstephens.co.uk>**20140511111624
 Ignore-this: 1cb3f4f24b17211126a74f0c1870b3d9

[fixed missing option for author in rebase-nochanges.sh test
 Ignore-this: d645456182ae0ae607af3acfa802c53c

[added _test_playground to boring file
 Ignore-this: 924245bbd59fb4cf4538554755d2c18b

[added cabal sandbox generated stuff to boringfile
 Ignore-this: b665885b27d2ffc12bba5c18d1b8b42a

[avoid a syntax error with haddock-2.13.2
 Ignore-this: 4b474731a3618ce0aeed031aa87b4526

[Accept issue2382: darcs is confused if a dir is moved inplace of a file
Owen Stephens <darcs@owenstephens.co.uk>**20140427225132
 Ignore-this: b4fef46928598bbc44c61325f6dc11b2

[Accept issue2383
Owen Stephens <darcs@owenstephens.co.uk>**20140429162716
 Ignore-this: c994e1caeea21fe4db3db540c23c01fb

[Accept issue2380: darcs wont rename a file to the name of a deleted file
Owen Stephens <darcs@owenstephens.co.uk>**20140422120300
 Ignore-this: e80d38d9a8a99e5992f65c9728783a62

[Resolve Issue2244: darcs tag should warn about duplicate tags
Ale Gadea <alex.aegf@gmail.com>**20140507183109
 Ignore-this: 8d25e1130bff79907d3db39d02f40197
 Make darcs tag t, with t already an existing tag, cause a warning message.

[Use custom replHook to fix cabal repl
Owen Stephens <darcs@owenstephens.co.uk>**20140503161130
 Ignore-this: 6cc22760b85225d3d1ea101106ab7797

[resolve issue2364: fix file corruption on double fetch
Sergei Trofimovich <slyfox@community.haskell.org>**20140429134020
 Ignore-this: 9b069f38724673da4ff427f538132c24
 The bug is the result of attempt to fetch the same file
 (say F) by the same URL (U) multiple times concurrently.
 First time U gets fetched by speculative prefetch logic.
 Second time as an ordinary file (while first fetch is not finished).
 The function 'copyUrlWithPriority' sends download request
 to 'urlChan' both times (it's already not a nice situation,
 fixed by this patch).
 Later urlThread satisfies first request, notifies receiver,
 and starts downloading exactly the same U again.
 I don't know exact data corruption mechanics yet, but it has
 to do with non-random intermediate file names of downloaded
 files and 'truncate' call when temp file is opened for a new
 downlaod job.
 All temp names are completely non-random for a single darcs run:
   urlThread :: Chan UrlRequest -> IO ()
   urlThread ch = do
     junk <- flip showHex "" `fmap` randomRIO rrange
     evalStateT urlThread' (UrlState Map.empty emptyQ 0 junk)
   createDownloadFileName :: FilePath -> UrlState -> FilePath
   createDownloadFileName f st = f ++ "-new_" ++ randomJunk st
 My theory is next download manages to step on toes of previous job.
 I'll try to make file names truly random in other patch.
 That way such errors should manifest as read erros instead of data

[Use DeriveFunctor instead of manual instance for PatchMod
Owen Stephens <darcs@owenstephens.co.uk>**20140430003438
 Ignore-this: 1a55af9820c6d5470443794ea0c71e91

[Allow options with path arguments to be specified in defaults file
 Ignore-this: ff2ff9e6d96a06c4a8df29b3c9819b22

[fixed cut-n-paste error in haddock comment
 Ignore-this: 7e5b9fe7bbecbb52d8b639772b0fd208

[resolve issue2314: output-auto-name in defaults file
 Ignore-this: 6dbd187b78bc2b108920cc0eaabfa5af

[update packs tests to new strings
Guillaume Hoffmann <guillaumh@gmail.com>**20140425211832
 Ignore-this: d7123c21b273b91a2ce79007f70ee37f

[resolve issue1268: enable to write darcs init x
Guillaume Hoffmann <guillaumh@gmail.com>**20140425200752
 Ignore-this: 2586d59ba17f94b655c3a48df80b5d66
 Original patch by Radoslav Dorcik 

[rename get to clone
Guillaume Hoffmann <guillaumh@gmail.com>**20140425175210
 Ignore-this: 2c27cb2bc6a9978988386743b241c0b3

[remove Put since Get can clone to ssh destination faster
Guillaume Hoffmann <guillaumh@gmail.com>**20140425063225
 Ignore-this: c0dbc05fc7511977381abba47728810a

[resolve issue1066: clone to ssh URL by locally cloning then copying by scp
Guillaume Hoffmann <guillaumh@gmail.com>**20140425060647
 Ignore-this: 2778bc4774fe8d5c53d0011b2193c1c2
 Introduce an internal flag ForgetParent that enable to clone
 repositories while forgetting about their source (do not copy
 sources nor caches).

[do not tolerate ctrl+c when --complete is passed
Guillaume Hoffmann <guillaumh@gmail.com>**20140425053440
 Ignore-this: 856378499c61de4e4281d1ed966ede76

[do not print message twice when patches pack grabbing fails
Guillaume Hoffmann <guillaumh@gmail.com>**20140424165929
 Ignore-this: 148f8ca132725e81dd52d64f00cbd24b

[create inventories subdir at darcs init
Guillaume Hoffmann <guillaumh@gmail.com>**20140421133938
 Ignore-this: 5ace4beaf6c27c8a5105d74db977f61a

[TAG 2.9.9
Ganesh Sittampalam <ganesh@earth.li>**20140424063828
 Ignore-this: ae3cb4369f15af8cb2f19d6f5603d935

Compiled with:


4. What operating system are you running?
Date User Action Args
2015-12-24 08:39:58imzcreate