[darcs-devel] incremental rebuild segfault

Ganesh Sittampalam ganesh at earth.li
Tue Aug 27 10:18:26 UTC 2019


Updates:

- I can reproduce it with GHC 8.6.5
- This is on Windows in case you didn't guess :-) I haven't tried Linux yet.
- I narrowed down the patch1891 to the single patch "remove
Darcs.Util.Graph.bk and some minor refactors", which invalidates my
hunch that it was cabal file related.

Attached are the contexts to reproduce it, tags base3 and breaks3 (I got
the naming convention confused in the pair of tags in my last mail, but
they can just be ignored now).

-------------- next part --------------
2 patches for repository urchin.earth.li:darcs/screened:

patch b5709d5630e25b9be3268654e75e8b45593fab41
Author: Ganesh Sittampalam <ganesh at earth.li>
Date:   Tue Aug 27 11:00:04 GMT Summer Time 2019
  tagged base3

patch 242a5a8e8f6f34fe31c1392c4fef1158c4a33eb7
Author: Ganesh Sittampalam <ganesh at earth.li>
Date:   Tue Aug 27 11:02:56 GMT Summer Time 2019
  tagged breaks3

New patches:

[TAG base3
Ganesh Sittampalam <ganesh at earth.li>**20190827100004
 Ignore-this: 4ea2d953d3bc88257754c14aecea5e5c
] 
<
[replace quickcheck with leancheck for testing Graph properties
Ben Franksen <ben.franksen at online.de>**20190825133104
 Ignore-this: 6ef50b2fd5c131b28df5584f650b525b1e8ed1c5af17dc0a6c0ff4ecfb11022c3286e182fc8fffcd
 
 Calculating graph properties scales very badly because the specifications
 aren't optimised (naturally). Exhaustive testing with leancheck is a lot
 more effective here because we avoid testing with (too) large graphs.
 Unfortunately test-framework is a bit limited in that it doesn't allow to
 scale the number of tests, just to set them to a fixed value. We opt to
 set it to 0x8000 which covers all graphs up to size 6.
] 
[harness: properly translate env script on Windows
Ganesh Sittampalam <ganesh at earth.li>**20190826201843
 Ignore-this: 8aeec4ecdcfce78075c5be4debfe286f
 
 We have Windows paths in Haskell but we need
 Unix style paths in the env script
 
] 
[tests: add a utility function for unpacking tarballs
Ganesh Sittampalam <ganesh at earth.li>**20190826173326
 Ignore-this: 46817210f07a4253cf4589bffa12811f
 
 This should make it less likely that someone will write
 something that doesn't work on Windows.
 
] 
[get rid of pointless (>>)
Ganesh Sittampalam <ganesh at earth.li>**20190826165654
 Ignore-this: 6c401ff91f56f41a8f97967e0d4c3771
 
 It may have been put there with the intention of having
 the exception handler scope over just the last statement,
 but it actually scoped over the entire do.
 
 That scoping seems better anyway since we should still
 tell the user about the mail body even if getSendmailCmd
 fails.
 
] 
[add the darcs executable as a build-tool-depend of darcs-test
Ganesh Sittampalam <ganesh at earth.li>**20190826144023
 Ignore-this: d6e797d692e92855074e77520dc052cb
 
 This means we can use cabal to run the tests and be sure that the
 darcs executable they test will be up to date.
 
 Without this change, 'cabal v2-run test:darcs-test'
 (needed to run the harness with custom options) doesn't build the
 executable.
 
] 
[tests: always use 'tar -f -' to work with stdin/out
Ganesh Sittampalam <ganesh at earth.li>**20190826141856
 Ignore-this: 8a6371c7b48b0109324098429c5346cd
 
 tar on msys has taken to defaulting to \\.\tape0 instead
] 
[harness: windows fixes for env file
Ganesh Sittampalam <ganesh at earth.li>**20190825133243
 Ignore-this: 90f2ef59c1f45c5c46d180b3ceeb75d1
 
 This corrects issues on Windows introduced by
 "harness: create an environment file and source it
 from tests/lib"
 
] 
[TAG 2.15.1
Ben Franksen <ben.franksen at online.de>**20190821065908
 Ignore-this: 4e9190f24c0c02b97865896d38e42743f7276dc9a3b28e0fa2a90086da5d6734cae6224e1a3141b5
] 
[Darcs.Util.Graph: add properties and test them
Ben Franksen <ben.franksen at online.de>**20190821104132
 Ignore-this: 51c2f7127ec6bf9366b0afc8a5aee83e602505c16a12d9d69623369cff58365cccef73d31b3bd3b5
] 
[Darcs.Util.Graph: add hadocks
Ben Franksen <ben.franksen at online.de>**20190821084048
 Ignore-this: 7b7931bdd919da44e34ae60340f446783e1b5343dfe3aeca2b241d4b1ee25c7e514c35907bdc60ca
] 
[Darcs.Util.Graph: make helper functions local to ltmis
Ben Franksen <ben.franksen at online.de>**20190821083917
 Ignore-this: 7869236b4f6e283050b2195f54c2465091194278a9b32f210de5c6cb24b2a2f11b1f8b2a402084c6
] 
[bugfix for darcs send on Windows with GHC>=8.6
Ganesh Sittampalam <ganesh at earth.li>**20190824174904
 Ignore-this: fd8afd37d693d7a06431cf696d030c63
] 
[include all the information from exceptions in darcs send
Ganesh Sittampalam <ganesh at earth.li>**20190824174854
 Ignore-this: be7288c5a261d4bfd5249bfdb9f1322f
 
 The previous code was stripping away the filenames from
 "does not exist" errors.
 
 This change also means that all exceptions are guarded by
 'warnMailBody', not just IO exceptions. As the purpose of
 that is just to tell the user where their mail body was
 preserved, this seems sensible.
 
] 
[make scope of exception handler explicit
Ganesh Sittampalam <ganesh at earth.li>**20190824174656
 Ignore-this: 4a9b69f37126e727d4c1ef5ca776df1b
 
 It wasn't obvious to me from reading the code how the
 precedence would work.
 
] 
>

[TAG breaks3
Ganesh Sittampalam <ganesh at earth.li>**20190827100256
 Ignore-this: ddb18cea7a50776698f2a7a393ef550d
] 
<
[remove Darcs.Util.Graph.bk and some minor refactors
Ben Franksen <ben.franksen at online.de>**20190825123225
 Ignore-this: b3e8e66874b3692e2f417ba3c877d9573b6fc8b39507b1d28aacd80a087cd35705c524039ac64731
] 
[TAG base3
Ganesh Sittampalam <ganesh at earth.li>**20190827100004
 Ignore-this: 4ea2d953d3bc88257754c14aecea5e5c
] 
>

Context:

[remove Darcs.Util.Graph.bk and some minor refactors
Ben Franksen <ben.franksen at online.de>**20190825123225
 Ignore-this: b3e8e66874b3692e2f417ba3c877d9573b6fc8b39507b1d28aacd80a087cd35705c524039ac64731
] 
[replace quickcheck with leancheck for testing Graph properties
Ben Franksen <ben.franksen at online.de>**20190825133104
 Ignore-this: 6ef50b2fd5c131b28df5584f650b525b1e8ed1c5af17dc0a6c0ff4ecfb11022c3286e182fc8fffcd
 
 Calculating graph properties scales very badly because the specifications
 aren't optimised (naturally). Exhaustive testing with leancheck is a lot
 more effective here because we avoid testing with (too) large graphs.
 Unfortunately test-framework is a bit limited in that it doesn't allow to
 scale the number of tests, just to set them to a fixed value. We opt to
 set it to 0x8000 which covers all graphs up to size 6.
] 
[harness: properly translate env script on Windows
Ganesh Sittampalam <ganesh at earth.li>**20190826201843
 Ignore-this: 8aeec4ecdcfce78075c5be4debfe286f
 
 We have Windows paths in Haskell but we need
 Unix style paths in the env script
 
] 
[tests: add a utility function for unpacking tarballs
Ganesh Sittampalam <ganesh at earth.li>**20190826173326
 Ignore-this: 46817210f07a4253cf4589bffa12811f
 
 This should make it less likely that someone will write
 something that doesn't work on Windows.
 
] 
[get rid of pointless (>>)
Ganesh Sittampalam <ganesh at earth.li>**20190826165654
 Ignore-this: 6c401ff91f56f41a8f97967e0d4c3771
 
 It may have been put there with the intention of having
 the exception handler scope over just the last statement,
 but it actually scoped over the entire do.
 
 That scoping seems better anyway since we should still
 tell the user about the mail body even if getSendmailCmd
 fails.
 
] 
[add the darcs executable as a build-tool-depend of darcs-test
Ganesh Sittampalam <ganesh at earth.li>**20190826144023
 Ignore-this: d6e797d692e92855074e77520dc052cb
 
 This means we can use cabal to run the tests and be sure that the
 darcs executable they test will be up to date.
 
 Without this change, 'cabal v2-run test:darcs-test'
 (needed to run the harness with custom options) doesn't build the
 executable.
 
] 
[tests: always use 'tar -f -' to work with stdin/out
Ganesh Sittampalam <ganesh at earth.li>**20190826141856
 Ignore-this: 8a6371c7b48b0109324098429c5346cd
 
 tar on msys has taken to defaulting to \\.\tape0 instead
] 
[harness: windows fixes for env file
Ganesh Sittampalam <ganesh at earth.li>**20190825133243
 Ignore-this: 90f2ef59c1f45c5c46d180b3ceeb75d1
 
 This corrects issues on Windows introduced by
 "harness: create an environment file and source it
 from tests/lib"
 
] 
[TAG 2.15.1
Ben Franksen <ben.franksen at online.de>**20190821065908
 Ignore-this: 4e9190f24c0c02b97865896d38e42743f7276dc9a3b28e0fa2a90086da5d6734cae6224e1a3141b5
] 
[harness: create an environment file and source it from tests/lib
Ben Franksen <ben.franksen at online.de>**20190817164343
 Ignore-this: aabad73ab79e89f458d58c241be69a9af3690f856c583be77cdd2f09610733853b6fc760e88aa8d3
 
 This fixes a long-time problem with the test harness: when you run the tests
 in a specific directory, then cd there and try to run one of the scripts
 manually, you didn't have the same environment as the original test run. So
 you had to set PATH, EMAIL, TESTDATA, etc manually on the command line. We
 now create a file named env that gets sourced by lib in addition to setting
 the environment before we run the test.
] 
[Darcs.Util.Graph: add properties and test them
Ben Franksen <ben.franksen at online.de>**20190821104132
 Ignore-this: 51c2f7127ec6bf9366b0afc8a5aee83e602505c16a12d9d69623369cff58365cccef73d31b3bd3b5
] 
[Darcs.Util.Graph: add hadocks
Ben Franksen <ben.franksen at online.de>**20190821084048
 Ignore-this: 7b7931bdd919da44e34ae60340f446783e1b5343dfe3aeca2b241d4b1ee25c7e514c35907bdc60ca
] 
[Darcs.Util.Graph: make helper functions local to ltmis
Ben Franksen <ben.franksen at online.de>**20190821083917
 Ignore-this: 7869236b4f6e283050b2195f54c2465091194278a9b32f210de5c6cb24b2a2f11b1f8b2a402084c6
] 
[bump version to 2.15.1 in cabal file
Ben Franksen <ben.franksen at online.de>**20190821065816
 Ignore-this: a8abfac339dcc7f5328f4999a1c61e1916c7b59d5926b22f20963a6d0b977f73d6f45e6bad8cdb66
] 
[tests/conflict-fight-failure.sh: allow 10% overshoot margin
Ben Franksen <ben.franksen at online.de>**20190815173438
 Ignore-this: d537320db0cfa2e9774346b93b0f95f18f67496adb947ee0b9e4fba490a2aeb55a100a101e1d9487
 
 This makes the test more robust against small fluctuations in timing.
] 
[extend test script for pristine conversion
Ben Franksen <ben.franksen at online.de>**20190818084841
 Ignore-this: 3148a5952f4cf47206797176476956e578a28f7a2b9c9482dd1f919a8f8cae0882fbc5df123b8000
] 
[harness: use die instead of fail
Ben Franksen <ben.franksen at online.de>**20190817091845
 Ignore-this: ddc852e0693796d21aef4ce08dec24646364e305247ae67d6fda7de813df804ca7d86b5741d29a95
 
 We don't wrap the test harness in the top-level exception handler as we do
 with darcs proper, so fail prints "user error" which I think is misleading.
] 
[fix in add command: fail unconditionally when no files were added
Ben Franksen <ben.franksen at online.de>**20190711171606
 Ignore-this: 22469c4fdb49a0ab3eb7212a0fa24b1a2c7dfdc741af95ac251da24817b0bdeaba1aa7ce4345846b
 
 Whether a command fails should not depend on verbosity.
] 
[apply: print "reading from stdin" unless --quiet
Ben Franksen <ben.franksen at online.de>**20190815082343
 Ignore-this: 61151902ba9302aeb2b64099a809e74b371c07aa30f43cda5d744af4cd36e4e69b2e35812c89cc36
 
 The message is indeed useful to users, since with no arguments 'darcs apply'
 will "hang" waiting for input from the terminal. But printing it only if
 --verbose is in effect defeats the purpose.
] 
[get rid of unused exports/functions from D.P.W.Show
Ganesh Sittampalam <ganesh at earth.li>**20190817153547
 Ignore-this: 6eab7be9c8f64f926340270912feb4e3
] 
[get rid of unused ShowDictRecord
Ganesh Sittampalam <ganesh at earth.li>**20190817152325
 Ignore-this: 8b118125be4f92201cf68c2e19582d2d
] 
[bugfix in optimize compress
Ben Franksen <ben.franksen at online.de>**20190817092346
 Ignore-this: ebe87b8bc6e4f46d4a4d5858fe01bc526eb4297d6dedc07028fb2fdc8f997669393126cebd30a319
 
 We must not compress special patches such as pending or unrevert.
] 
[cleanup applyCmd
Ben Franksen <ben.franksen at online.de>**20190815082300
 Ignore-this: 99f481d07d2d7f30aae7e597948c0a3d35dc30a4ac7760c5446bee6ecc07db63eab97a2083b6108b
] 
[re-unify finished messages in PatchAppliers
Ben Franksen <ben.franksen at online.de>**20190808082651
 Ignore-this: 8fd84aafcea0481bac63b49c3258b2a7ab033d83acad888666df1fc3ce5f2f40c2f46563600d1107
 
 We make a small simplification in the process: fetchPatches already reports
 if there are no patches to pull, so we needn't repeat that.
] 
[suspend reify: give reified fixup patches a real author
Ben Franksen <ben.franksen at online.de>**20190802175108
 Ignore-this: c4214a716405b78fe15261b85c0208590fc2303964c7c942ff065288f9a4a5cfc9fd3352fbf382e6
 
 Instead of "Invalid <invalid at invalid>" we now call getAuthor and pass that
 down to reifyRebaseSelect.
] 
[turn an error call into a proper failure when cloning
Ben Franksen <ben.franksen at online.de>**20190802170648
 Ignore-this: 4faf657a56acd5ff5e815b438396ed6c9d1b7ab6441885913aadd5fa0033849347f554a343bd191c
 
 This patch also cleans up the surrounding code:
  * find uncommon patches only once instead of twice
  * replace repeated calls to lengthFL with a let-bound variable
  * rename some variables
  * remove unneeded calls to hopefully and effect
 Regarding the last change, note that (apply . effect) is strictly inferior
 to the plain apply, since the latter is hopefully optimized via applyPrimFL.
] 
[remove unused function filterFilePaths
Ben Franksen <ben.franksen at online.de>**20190808082958
 Ignore-this: c8870127c48c5e129dd0259a00b4851717457412808fdf81d6dd0be47275cd13695a72e99d57e021
] 
[fix call to anchorPath in Darcs.Repository.Diff.treeDiff
Ben Franksen <ben.franksen at online.de>**20190804213945
 Ignore-this: 66f4b7d409afcacbcfa6039c7faccc8fb261f229c4eceb2143c855fc597df3956f3e683b604a1524
] 
[eliminate a few redundant constraints in D.P.Rebase.Fixup
Ben Franksen <ben.franksen at online.de>**20190802173309
 Ignore-this: 22141b307a756368edb41ac6447e06b21bcc0df6c5a69bdee3440ca004981a496be9f752d977f59c
] 
[fix layout in parts of D.P.Rebase.Viewing and D.UI.Commands.Rebase
Ben Franksen <ben.franksen at online.de>**20190802172459
 Ignore-this: 87f5e93e3f3d78674867cc8866f30fa2e5e5be889100c5a3b897f78f04e9a09051086fc611176427
 
 This is to avoid extremely long code lines.
] 
[replace parseFlags with operator '?'
Ben Franksen <ben.franksen at online.de>**20190802163034
 Ignore-this: c70887ea5d8910d0956812124484e3176d278a9cbd0b05c3520901c4e8d21f6c5f8a401bc1c098d6
] 
[remove redundant Functor superclass constraints when we already have Monad
Ben Franksen <ben.franksen at online.de>**20190802095907
 Ignore-this: 23096a86e8b4e713827bb31df9274161b14784b5002b00a0e9d1bd1ff4359d8ae1f07b54f01f7454
] 
[RepoPatchV3: optimize apply using applyPrimFL as for V1 and V2
Ben Franksen <ben.franksen at online.de>**20190801180422
 Ignore-this: aea1e0874eeb0a6d291f0a68ea87aa20688821b13e87f6abc6f8dd234595bfd9bb2562b59bef1e67
] 
[v3: re-add two optimisations for Contexted patches
Ben Franksen <ben.franksen at online.de>**20190730191941
 Ignore-this: b93f07d01c0128a4b26050492f0b5931553957f8b08d36dae669c57965af5edcf96f4e4e34db7d83
 
 I had them in my original version but removed them due to confusion about
 fold combinators from D.P.Witnesses.Ordered. We no longer use these
 combinators here because the simple recursive definitions are easier to
 understand.
] 
[regard explicit dependencies as resolving conflicts
Ben Franksen <ben.franksen at online.de>**20190720115158
 Ignore-this: 736f3f54fc3b8b6c62890b1b1026e9f095168ef3a5499b975cb94c10a0a38019e619f2a24620ea20
 
 This is necessary to allow users to resolve a conlfict in favour of what
 darcs does by default (i.e. apply neither of the conflicting changes). The
 implementation is mostly in Darcs.Patch.Named which now has an instance
 Conflict. The PatchInfoAnd instance only delegates to the contained Named 
 patch. A subtlety here is that for efficiency and correctness in the face of
 lazy repos, we must make sure that hopefully is lazy in its patch argument.
] 
[tests/look_for_moves_and_replaces.sh: remove repo dir before creating it
Ben Franksen <ben.franksen at online.de>**20190808083027
 Ignore-this: a50798bf111b92fddb5969e6c7fbe0c1836cb02758fdaca287b348daec0e25a9986b133666f1e98c
] 
[disable tests/conflict-fight-failure.sh for darcs-1/2
Ben Franksen <ben.franksen at online.de>**20190801222645
 Ignore-this: 9ffb4618d824e8c76e500ea1966b31703b6381830b14db1da50c79afa61a3e8f3c476aabf21a8617
] 
[tests: conflict-fight-failure now tests that we scale reasonably
Ben Franksen <ben.franksen at online.de>**20190801212344
 Ignore-this: b598ff6b7db6bc93e196e8ab4e089b2e51a9c08de2ce7daad100210fea77a9153c34a14d616e6673
 
 We take the time of the first test run and then check that subsequent runs
 take no more than the quadratic amount of time. So the test again fails
 miserably for darcs-1 (after about 11 test runs) and for darcs-2 (after
 about 6 runs). The new darcs-3 format succeeds with at least 200 runs.
] 
[add tests/dependent-conflict-resolution.sh
Ben Franksen <ben.franksen at online.de>**20190707192250
 Ignore-this: 46cf6ac87284f78caab3d96c650d9c489bf642ed5306bcd2e271da03417cf01633f1d7ec73adc2db
] 
[tests: make ssh test more robust
Ben Franksen <ben.franksen at online.de>**20190719215006
 Ignore-this: aec456aa395036732466af8884109494631ac1ea1eb431b4c9c4c2d569f158264fd612cefe0378ab
 
 This means we set the remote PATH so that it uses the darcs we are testing,
 and also set --remote-darcs to that when pushing.
 Also replace use -a option instead of piping ys.
] 
[slightly extend and cleanup test for issue154
Ben Franksen <ben.franksen at online.de>**20190709163358
 Ignore-this: 2b29314c78fe5d79dbc3199306510411fb6aa054b948663492fbeb79ae4103bbef4cd1fa807aae8d
 
 The test did not test that the previously added file d/moo can still be
 found somewhere after we pull 'rmdir ./d'.
 
 BTW, I wonder why the file d/moo gets deleted at all by the pull.
] 
[fill in the placeholder "issueXXXX" with a proper reference
Ben Franksen <ben.franksen at online.de>**20190814095935
 Ignore-this: 49f08cfdaf5740afa2b280df627ba2e425c883810606e6078b6b13fef3e3d8003f71b124fa87fb4f
] 
[store the raw unmangled parts of a conflict in StandardResolution
Ben Franksen <ben.franksen at online.de>**20190808230408
 Ignore-this: 583df8e5561e32d213b981e01a9b7a8047f352d638a9c68ffee664a17341fdcd73501f7839918220
 
 This allows client code to display them in any form they wish, not
 necessarily using ePutDocLn. We do provide warnUnmangled as a convenience
 function, but also showUnmangled and even more low-level showUnravelled.
] 
[move announceConflicts from D.R.Merge to D.R.Resolution
Ben Franksen <ben.franksen at online.de>**20190716194645
 Ignore-this: 652d313b6319ef2372237828c8a8ace75112b14eed65c64cf6339043f9fe1f28b018deb945f21643
] 
[tests: adapt conflict-doppleganger.sh
Ben Franksen <ben.franksen at online.de>**20190716192052
 Ignore-this: dd375448c07895247ffeeb96929a95b9233219ef83e47ad880e4a53d89581be11f1988d2a6708962
 
 A conflict involving 'addfile' prims cannot be cleanly mangled. This means
 that there is nothing to record after the pull and the test therefore fails.
 But this isn't what we want to test, so we record the 'addfile' separately
 and share it.
] 
[resolve issue2550: apply only properly mangled resolutions, warn about any others
Ben Franksen <ben.franksen at online.de>**20190716193444
 Ignore-this: f63dd3fe64a45fde5ce550734183b63968e968390625870fbd2bb944f87ede1cea563a6ab84c34f8
 
 To support this change we add the new data type StandardResolution and
 return that from standardResolution. It contains a summary of the data we
 gathered from calling resolveConflicts: the mangled resolutions, merged into
 a single FL, the list of conflicted paths, and an IO action to warn about
 and display any (unravelled) conflicts that we couldn't properly mangle. The
 warning is normally only displayed if we actually want mangling to happen
 i.e. if --mark-conflicts is in effect (except for the mark-conflicts command).
] 
[pass a PrimCanonize dictionary explicitly when needed
Ganesh Sittampalam <ganesh at earth.li>**20190812142441
 Ignore-this: 377a198414a29a79b2fee197920a5cab
 
 This allows us to get rid of the dummy instance for
 PrimCanonize (NamedPrim prim)
 
] 
[use new TestablePrim alias in the harness instead of PrimPatch
Ganesh Sittampalam <ganesh at earth.li>**20190812141315
 Ignore-this: c9ab451d95db338f8e9ff6c3a57364ef
 
 This allows the removal of a bunch of dummy instances for NamedPrim
 
] 
[enhance security of --inherit-default
Ben Franksen <ben.franksen at online.de>**20190618212734
 Ignore-this: 125496b40e9f1d9bea35724d38caa066df530d96b699410e94bcbecad2a7e50705005322c0c8d5b7
 
 We now check that the remote repo (dir) has the same owner as ".", reducing
 the danger of using a corrupt defaultrepo due to encoding mismatches between
 the remote and local repo.
] 
[bugfix for darcs send on Windows with GHC>=8.6
Ganesh Sittampalam <ganesh at earth.li>**20190824174904
 Ignore-this: fd8afd37d693d7a06431cf696d030c63
] 
[include all the information from exceptions in darcs send
Ganesh Sittampalam <ganesh at earth.li>**20190824174854
 Ignore-this: be7288c5a261d4bfd5249bfdb9f1322f
 
 The previous code was stripping away the filenames from
 "does not exist" errors.
 
 This change also means that all exceptions are guarded by
 'warnMailBody', not just IO exceptions. As the purpose of
 that is just to tell the user where their mail body was
 preserved, this seems sensible.
 
] 
[make scope of exception handler explicit
Ganesh Sittampalam <ganesh at earth.li>**20190824174656
 Ignore-this: 4a9b69f37126e727d4c1ef5ca776df1b
 
 It wasn't obvious to me from reading the code how the
 precedence would work.
 
] 
[force PatchSet to always start at Origin
Ganesh Sittampalam <ganesh at earth.li>**20190812221156
 Ignore-this: 828e8b1f3d20df6fb2da47be561ce866
] 
[refactor the "darcs log" code to accept a list of patches
Ganesh Sittampalam <ganesh at earth.li>**20190812221152
 Ignore-this: d7976ffbb208df3c63d257f096315b90
 
 "rebase log" was faking a PatchSet to call it, which
 violated the invariant observed elsewhere that all
 PatchSets should start from Origin.
] 
[improve doc comments for Rotcilfnoc
Ganesh Sittampalam <ganesh at earth.li>**20190811165258
 Ignore-this: 35c95b9e7ce666ebe2d48ac6736775d
] 
[remove our own optimisation settings in darcs.cabal
Ben Franksen <ben.franksen at online.de>**20190719155514
 Ignore-this: f3706669b85fb34a4ec24ae430947855560cdf0e924b6834dcf3daa4849708da50d7a758758781da
 
 Letting cabal be aware of optimisation makes it easier to switch between
 optimised and unoptimised builds, since cabal nowadays puts unoptimised
 builds in a separate directory.
 I tested with a number CPU-intensive test runs (darcs-test -t conflict) that
 this causes no performance regressions: the default optimisation level
 chosen by cabal (-O1) gives the same or better results than the -O2 we
 passed explicitly.
] 
[eliminate Darcs.Patch.Dummy
Ben Franksen <ben.franksen at online.de>**20190812152620
 Ignore-this: ccbaf006bd8b8ff0c617e886293caccfad1e973e923e14cd5490872173f4b1f79a962fca24208606
 
 This is possible since Darcs.Patch.Match no longer needs it. The few
 remaining ocurrences were easily refactored to avoid its use.
] 
[clean up the Matchable mess
Ben Franksen <ben.franksen at online.de>**20190812152453
 Ignore-this: c80c99da5e05957f138ce0fc802aff931e64ba4d7b7f79d39623a86c8360f7e53123f8a93bf4718a
 
 This is a large refactor. Matchable is no longer a class but a constraint
 synonym. This means we don't have to define instances and can therefore
 defined it in Darcs.Patch.Match. Darcs.Patch.Matchable has been deleted.
 
 MatchFun, Matcher, and PatchSetMatch no longer get the patch type or repo
 type as parameter. Instead, MatchFun is now a data type that contains the
 polymorphic match function (constrained to work only on Matchable patches).
 
 Matchable p now also requires Ident p and PatchId p ~ PatchInfo, so we have
 access to the PatchInfo (using ident). The goal here was to generalize
 matching functions from PatchInfoAnd to any Matchable patch type. Since some
 of the matching functions work on PatchSets, which have PatchInfoAnd
 hard-coded, we add a new constraint synonym for RepoPatches p such that
 PatchInfoAnd rt p becomes Matchable.
 
 Darcs.UI.SelectPatches no longer has PatchInfoAnd in any of its type
 signatures.
] 
[replace some undefineds with TypeApplications
Ganesh Sittampalam <ganesh at earth.li>**20190812134126
 Ignore-this: 67ab11c1b41ff8ffca3027493ebc923b
] 
[replace commenting out with if False in qc_V1P1
Ganesh Sittampalam <ganesh at earth.li>**20190812133057
 Ignore-this: 807001bd1d8c8d8ddce51135e7d598a1
 
 Predictably the code had rotted a bit, but it looks like
 from history that commute_properties is now pair_properties
] 
[add V3INTEGRATION comments about the NamedPrim representation
Ganesh Sittampalam <ganesh at earth.li>**20190809153535
 Ignore-this: 2312bd732fdc7a1e6868dfc732c8fb45
] 
[add V3INTEGRATION TODO to the comment on forceCommutePrim
Ganesh Sittampalam <ganesh at earth.li>**20190807165746
 Ignore-this: d3657ba813e2b31ee1e1ac3a4ced9a64
] 
[V3 integration comment about fromPrim default
Ganesh Sittampalam <ganesh at earth.li>**20190807165618
 Ignore-this: 278befc4369058a70c835d649f7052d4
] 
[use the old test case generator for most RepoPatchV2 properties
Ben Franksen <ben.franksen at online.de>**20190801211751
 Ignore-this: 1078a32e6e47edba95e4595ebe3db99f76c4203ef2a74c9e9360d7cf9393b8165622ddfd26f3b6da
 
 With the new test case generator many properties fail for RepoPatchV2, so we
 go back to the simpler generator that does not record patches after
 conflicts. This required re-adding merge_properties and also adds
 triple_properties (for permutivity). While we're at it, also test the
 triple_properties for prim patches.
] 
[harness: simplify type signatures and superclass constraints
Ben Franksen <ben.franksen at online.de>**20190717152157
 Ignore-this: 8bc80efd13a66a248f82571add8a91d8828340395f600dc0e2a09a148aca34706ad93a05eb410a39
] 
[harness: add propConsistentReorderings and test it
Ben Franksen <ben.franksen at online.de>**20190717152018
 Ignore-this: 5320df5208bfb482142ecc6768dcecce8c5c756c86e1caa4e3d2a6fb0b06890cf78a904d617bbaf2
 
 This property is similar to propConsistentTreeFlattenings but takes an RL
 RepoPatch and a start state as input. This allows us to test it more
 thoroughly by using the new test case generator for RL RepoPatch.
] 
[harness: simplify constraints in D.T.Patch
Ben Franksen <ben.franksen at online.de>**20190716174132
 Ignore-this: b974317bad52331d8edb4091e4ed727f5b52092f04c6a114a5f62338a1f91d04c24c64b781975f5c
] 
[harness: test all patch formats by default
Ben Franksen <ben.franksen at online.de>**20190720120137
 Ignore-this: ac32075f63af58f0b54521ffc4e1b0d8712462c95ee543abef52db4978a39d348633a7b033256c44
 
 Now that we are moving towards darcs-3 format, better make sure we test that
 by default. And testing darcs-1 is good to avoid regressions.
] 
[use TestOnly for the constructors of RepoPatchV3
Ganesh Sittampalam <ganesh at earth.li>**20190809182248
 Ignore-this: 6a51e1baadcad20103eb191863197b7d
] 
[introduce TestOnly class
Ganesh Sittampalam <ganesh at earth.li>**20190714180507
 Ignore-this: a9b4473e70f5e2c40b07b0aa5cec41c9
 
 This allows us to explicitly flag test-only code in the
 main darcs library.
] 
[make sure patch context witnesses have role nominal
Ganesh Sittampalam <ganesh at earth.li>**20190611060602
 Ignore-this: b3d0e5756a227f629e659952f0853493
 
 This makes sure calling code can't use coerce to change the
 witnesses.
 
 We only need to do this for the low-level types. Higher-level
 ones that take other patches as parameters will have this role
 inferred anyway.
] 
[drop Darcs.Patch.Type and use TypeApplications instead
Ganesh Sittampalam <ganesh at earth.li>**20190806155759
 Ignore-this: 5638518f575a93c0f2757ca4fecfe3f7
] 
[issue1442 test doesn't work on Windows
Ganesh Sittampalam <ganesh at earth.li>**20190806122442
 Ignore-this: 75500d8b2db3e1b2ac5d546344647413
] 
[move preselectPatches and getLastPatches into Darcs.UI.Commands.Util
Ben Franksen <ben.franksen at online.de>**20190805193423
 Ignore-this: a356aac50e659cbb0b1bb5eac5066dd78b95a19892c4b3f7bdf685938995ad8c5951c71ace36f425
] 
[rename withSelectedPatchFromRepo to withSelectedPatchFromList
Ben Franksen <ben.franksen at online.de>**20190805171819
 Ignore-this: ef79b5cdba2cd2f30072ca077419bb524a083423e1986c3fdef41cadab14ba30adc085852b1a645b
] 
[return EqCheck instead of Repository from requireNoUnrecordedChanges
Ben Franksen <ben.franksen at online.de>**20190805171036
 Ignore-this: 1331c8fe46c432e186876cbe49978dca45f2cc7bcfbc483a960a890c40b6f35bed3315f08fe23165
] 
[eliminate spurious superclass constraint Eq2 p => Ident p
Ben Franksen <ben.franksen at online.de>**20190729130835
 Ignore-this: 93bce7a66ca3d4fc31228dd955c54dee71e2c81bc9be09f6cd2946a61d305c6c6a74336b5dcb362
 
 This change allows us to remove /lots/ of unneeded Eq2 constraints, and
 consequently a number of Eq2 instances under Darcs.Patch.Rebase.
] 
[whatsnew: print via pager (unless --xml or -s is active)
Ben Franksen <ben.franksen at online.de>**20190719181322
 Ignore-this: 25709b1fc6c599fdf814a96bc9a48d3f5ea169078295f9a737dcbad0f8a57cdb12c1f47ffc0b3146
] 
[tests: expect conflicts warning on stderr
Ben Franksen <ben.franksen at online.de>**20190711170719
 Ignore-this: bc842ad448596756f338cd3f0f608c3fc2d0d313a96f3d52ed0884f462f2937bdc3786fc701b4fd0
] 
[factor two functions used for --not-in-remote into Darcs.Util.English
Ben Franksen <ben.franksen at online.de>**20190719143757
 Ignore-this: d0b06424502d5706797124faed23c7cba410d4e5bc98d76371859b9d3848fd4509245ada6be2c942
] 
[add --not-in-remote option to amend and rebase unsuspend
Ben Franksen <ben.franksen at online.de>**20190719091819
 Ignore-this: 5d2087cef489c40c9c347f5103713ec38263c3759ba4a2412d24d301e9b73162455e6cb7b011f521
] 
[refactor withSelectedPatchFromRepo
Ben Franksen <ben.franksen at online.de>**20190719081252
 Ignore-this: 768bed4a27cfd0079d7e9d281c71c94515c16a93227297f39b4422061aa8c507b7876fd7789973fb
 
 It now gets an RL of patches instead of a Repository. At the place of use in
 the amend command we do the readRepo and patchSet2RL ourselves. This
 prepares for adding --not-in-remote option to amend but makes sense
 independently.
] 
[colorize warnings
Ben Franksen <ben.franksen at online.de>**20190711162535
 Ignore-this: d9d0a17896588a7132e5e18ab6702a8e122ddb8c57b7beda0f99c8de86907ed59d50810520fdbc1e
] 
[add a constant for the progressRate
Ben Franksen <ben.franksen at online.de>**20190729165630
 Ignore-this: 2fc3c9b9a98d600fa6d3bacbe28f1634099edaef2fa2d59f65733326943dd80a8032714406fae606
] 
[demote errors in defaults file and commandline to warnings
Ben Franksen <ben.franksen at online.de>**20190705213001
 Ignore-this: 4fda8b31bb458925104e60ddacade991dab423840242a377b5ed928779dd1f8fe1cc9ed536fdc4dd
 
 When we change the UI by e.g. adding a new command line option, we want the
 user to be able to use these switches in their defaults file without this
 giving an error when they use an older version of darcs. So this change
 improves forwards compatibility.
] 
[some code cleanups for unsuspendCmd
Ben Franksen <ben.franksen at online.de>**20190713092534
 Ignore-this: 3c48c309d9d772434ba1b8a4533c6da0b62460b1f1dee1483c3c182539dedee919510a435621f61a
 
 This factors out the check that there are no unrecorded changes into a local
 procedure that returns a Repository with new witnesses if successful, or
 else dies. We also pass the command name to 'unsuspendCmd' to improve the
 error message for the reify command and remove a number of pattern type
 signatures that are no longer needed.
] 
[rename data constructors of FileNameFormat
Ben Franksen <ben.franksen at online.de>**20190728193806
 Ignore-this: 904eb9f11c33c767e4df8129bded6f5bbfc1ca48eaadaf400704ddd989f28f428003ef79b7ba72c8
] 
[simplify D.P.V1.Prim and D.P.V2.Prim
Ben Franksen <ben.franksen at online.de>**20190728192427
 Ignore-this: ba8091a3d97f27567fb026613c549ef6327821e77cdcbe5bd4603daee22dbd2ce86a586888031637
 
 GeneralizedNewtypeDeriving can nowadays derive more instances: Apply,
 CommuteNoConflicts, and Show. Also remove unused extension
 StandaloneDeriving, simplify instance ReadPatch for V1 (similar to the one
 for V2), and uniformly rename FileNameFormat parameter to 'fmt'.
] 
[cleanup layout of doActualRecord
Ben Franksen <ben.franksen at online.de>**20190720122530
 Ignore-this: 67e8dbdd230ce3163bb9b12bd7c32e8862040fa7756544c08fa4f846e394dbea8b8c4dfcbc723f8d
] 
[amend: make options local to definition of DarcsCommand
Ben Franksen <ben.franksen at online.de>**20190719074834
 Ignore-this: db814c14334e041dde74e096302b71299afb18badeaa4a72073b130bed1252a75c097a7a8f4ab165
 
 This saves lots of rather verbose type signatures. We did this a while ago
 for most of the other commands.
] 
[cleanup in an import of D.P.TouchesFiles
Ben Franksen <ben.franksen at online.de>**20190718191805
 Ignore-this: 42dcc6a041537775daf8769cf5969ca3b009f4e5efb84b177237051813447f4c01c7e0d0e572d41
] 
[harness: add explanation to an XXX comment
Ben Franksen <ben.franksen at online.de>**20190717153608
 Ignore-this: b0992a0938920157b4b19044105caa6045be2618a59366031b1414a99e0ba232b2f15edc5210e282
] 
[replace Darcs.Patch.Witnesses.Sealed.Stepped with Data.Functor.Compose
Ben Franksen <ben.franksen at online.de>**20190717124405
 Ignore-this: 9bde1f9547a5f07d9589cd90ce6e0e385369013d8d010aa5ade31ef3cc7a857a52b596b617b3de4b
] 
[add 2 TODO items with V3INTEGRATION tag to Darcs.Util.Graph
Ben Franksen <ben.franksen at online.de>**20190716172454
 Ignore-this: 42a7aa4a7aa59224b09211911858c52ebbf9ff7035c39156d2e19367f3880519763b9663c8399fcc
] 
[clean up imports in two modules
Ben Franksen <ben.franksen at online.de>**20190714114534
 Ignore-this: c6baa1d94e49f44c563741c974ccdc42e98148c7641ee3c3c4cd4c7f4db10ffa3983acb9c19a03fc
] 
[tentativelyMergePatches: rename anonpend to anonpw for consistency
Ben Franksen <ben.franksen at online.de>**20190709163254
 Ignore-this: 68a6ae05e425462e10357a416d70cede7832847c2466c707a1d1e90bebc669878defbfd3df37a02a
] 
[rollback 'do white space en/decoding directly on the ByteStrings'
Ben Franksen <ben.franksen at online.de>**20190728134833
 Ignore-this: 33dd1432e564fb45295c5a67faf5f743b76566df8925154bfcb0d108586a3cefed28809491a600de
 
 This change was incompatible with the existing whitespace encoding for file
 paths in that the latter encodes /all/ unicode characters that
 Data.Char.isSpace identifies as space, not only those that are ASCII
 whitespace.
] 
[document Darcs.Util.Hash.sha1Read and explain why it is low-level optimized
Ben Franksen <ben.franksen at online.de>**20190728081024
 Ignore-this: 2d62e08b4e0babd7c1394f9cf71df5ad479d73c1c9eafe5891e61c665ec6cc4d29231ea7e00037fe
] 
[introduce type synonyms Mangled and Unravelled
Ben Franksen <ben.franksen at online.de>**20190712201605
 Ignore-this: 56a50f819d1dbfb2143d6ddc490cebd98e93ad8f9e655c77e61e6d6dfbc0a3575a3fb1ef1ecda75a
] 
[change the return type of mangleUnravelled
Ben Franksen <ben.franksen at online.de>**20190712194311
 Ignore-this: 7c8143c71ca601b1e32ccce142fd40fabf99e268c3fd8063212ff1b63a60bf1bdff7a426fd698698
 
 This makes it clear that mangleUnravelled is unable to deal with conflicts
 involving anything other than hunks. Previously we returned the unmodified
 head of the input list if that was the case, now we return Nothing.
] 
[add an explicit type for the output of resolveConflicts
Ben Franksen <ben.franksen at online.de>**20190712194303
 Ignore-this: b595de1e35192407f2a162f8a3e525fb19bc9bf15527bbcd999589260929c0729d54e05762014db3
 
 This makes it clear that the output contains first the
 'mangled' view followed by all the conflicting parts.
 Currently the mangled view is the conflict markers if
 the conflict is all hunks, and one of the conflicting
 parts if not.
] 
[cleanup and refactor mangleUnravelled
Ben Franksen <ben.franksen at online.de>**20190712182656
 Ignore-this: 58ee0b078c09f1f163de3626ef806869e03ec528ddd54c5e361dde62ac88c6e981d04eb6b67d4e53
] 
[move instance PrimMangleUnravelled for Prim.V1 to its own module
Ben Franksen <ben.franksen at online.de>**20190712172529
 Ignore-this: 47695726193eddf3990a3f3ff1e48c57c8ced7fc355928c84a39ad9c2bc0a1c82ba9a22165014b00
 
 This is a pure code move without any changes to the definitions. It serves
 as preparation for a larger refactor but makes sense in its own right.
] 
[harness: remove code I commented out but kept as a reminder
Ben Franksen <ben.franksen at online.de>**20190716201607
 Ignore-this: ba91a071e73ada1aed2d1239fd7917d1c5d587d4806a3f2f2421427cf3254b7d7f64385773a556b7
 
 The test in question has meanwhile been added as a generic property.
] 
[harness: test prop_ctxEq
Ben Franksen <ben.franksen at online.de>**20190716200452
 Ignore-this: 5748801a2bf402fd13c56c729685681410c9c09169633d3314ee257e6bf0aceaeb2b4d31ab17ff5d
] 
[fix v3 repo property prop_conflictsCommutePastConflictor
Ben Franksen <ben.franksen at online.de>**20190716153400
 Ignore-this: af00b2159f3c691dbd903e510ae1240fe6e6be6bf4f4d5773dd8260e97b0142f352ad0b822e938e
 
 The property as stated before didn't take conflict resolutions into account,
 that is, parts of a conflict could be resolved by recording a patch that
 depends on that part. In this case we can only commute the conflicted part
 past the conflictor if we drag the resolution with us.
] 
[harness: optimize prop_betweenLinesPS
Ben Franksen <ben.franksen at online.de>**20190708160851
 Ignore-this: 46dcc5694c0674f1a0bc6f36400ca2525dce9550dec9b5d916c868c6621e6f08f0150284d02c80a8
] 
[add two properties about conflict resolution and test them
Ben Franksen <ben.franksen at online.de>**20190710174341
 Ignore-this: 3420413c7b20f8cee14c3c68b96b18f1638a20dd7136898191f8768cef03f5f9bfbf4dd525ea5494
 
 This required adding a utility function permutationsRL and factoring out
 mergeList from D.R.Resolution into D.P.CommuteNoConflicts.
] 
[v3: add an important conflictor property
Ben Franksen <ben.franksen at online.de>**20190624101201
 Ignore-this: 1a3903fa83494eca84415faba474a6669aeaba0bf3a2e5d82079b01b4eed811a96e19372ca388f2b
] 
[remove env var DARCS_DO_COLOR_LINES
Ben Franksen <ben.franksen at online.de>**20190619203813
 Ignore-this: 8c9275d2d0914cbbf01d22f4a6d2eafc84821450a0fd2ac9ed868af717f44262987123e53addc0a9
 
 If the user wants colored output we should go all the way and not require
 them to set yet another configuration variable to achieve that. On the other
 hand, if they can't see colors or don't have actual colors in their terminal
 and thus set DARCS_ALTERNATIVE_COLOR then we should not color hunk lines
 since we have no alternative rendering for them.
] 
[turn fancyPrinters into an IO action
Ben Franksen <ben.franksen at online.de>**20190619200647
 Ignore-this: e7e31c16555e928c1408ffafd8c6ad8f5144efc3e7cc58d70ebf67307ade945e41b900ac4535e116
 
 This is what it actually is, via getPolicy. The unsafePerformIO was
 perfunctory, since fancyPrinters (almost) always gets passed to a real IO
 action that does the actual printing. The only exceptions are when we use it
 for tracing and in the harness when converting our TestResult to HUnit or
 QuickCheck. Consequently showDoc has been renamed unsafeRenderStringColored
 (to discourage its use) and a function debugDoc added.
] 
[resolve issue2610: add --inherit-default option
Ben Franksen <ben.franksen at online.de>**20190617131525
 Ignore-this: c5dbfeb384a794d113fa1394e0b71e0c22a1d5460b9cd96ab125b6de350dfe2a36f7885478bf3a33
] 
[overhaul documentation in Darcs.Repository.Merge
Ben Franksen <ben.franksen at online.de>**20190715232339
 Ignore-this: 7b005a975b7c33b12c4b7896023c686edf450b0351e025aaef259f451331f338ad7b0f21c55fb737
 
 It was slightly out of date after the latest changes to the conflict
 resolution API, which means we now take a complete Fork of both repos as
 argument and pass the common part on to standardResolution. It also did not
 reflect that a while ago we changed the witnesses to make it clear that we
 expect to be in an unmodified repo, that is, we start with the tentative
 state equal to the recorded state.
] 
[use neighbors in Darcs.Patch.V3.Core.alternatives
Ben Franksen <ben.franksen at online.de>**20190715154500
 Ignore-this: d7c586c9cf366fd86437e18c93d124b23cff1de6ce8d1d3994f6355921767acbf2678cd5e8d25124
] 
[refactor the interface for creating Named patches from prims
Ben Franksen <ben.franksen at online.de>**20190714091935
 Ignore-this: bb7f0bd1f451d6f0a01cab219dabc57dc5ac0eb3258a2828a5eae49b750b15aa591526ffcc26de30
 
 This uncouples the type family PatchId from class Ident, so we can use it
 for patch types that have no instance Ident. This allows us to change the
 type of method fromPrim to receive a 'PatchId p' instead of the raw
 ingredients of a PrimPatchId. We add method fromPrims so we can delegate
 generating prim patch ids to the implementation of the RepoPatch type. The
 default method definitions for fromPrim and fromPrims ignore their input, so
 we don't even have to create dummy type instances for PatchId.
 
 We add the function positivePrimPatchIds to the interface of NamedPrim to
 support implementation of fromPrims for RepoPatchV3. This hides the serial
 numbers from client code which are now an implementation detail of
 NamedPrim. The function takes a PatchInfo as input, so the fact that we use
 the hash of the PatchInfo underneath is now also an implementation detail. A
 single exception is made with unsafePrimPatchId which we need (only) in the
 harness to define an instance Arbitrary.
] 
[add LambdaCase to default-extensions for the library
Ben Franksen <ben.franksen at online.de>**20190618212502
 Ignore-this: b638d8398bfdf7b59154f1bd069d983fe7f5c48d1c8d3b308db3839487138efcaa869fcc29bab512
 
 I like to use this simple but useful syntactic extension which exists since
 ghc-7.6.1.
] 
[v3: fix and restructure conflict resolution
Ben Franksen <ben.franksen at online.de>**20190710211725
 Ignore-this: 648fc16081d495f7067b6e2a3b7d42f905bb29a7053ee952447bb1e3023e1034a6fc651c00330f79
 
 It probably doesn't make much sense to view the diffs here, since I really
 restructured things a lot, re-wrote the documentation comments, and renamed
 and reordered functions.
 
 The main semantic changes are:
 - fixed the 'components' function which was buggy
 - fixed and cleaned up the history traversal to find vertices
 - throw out the no longer needed 'dropDominated'
 - calculate conflicts between vertices freshly
 
 The last point was crucial. In my original version I made the mistake to
 think that we can read off conflicts between vertices, i.e. contexted prims,
 directly from the conflictor. This is only so in the simplest case of two
 conflicting prims. In general it is false: the contexted patch represented
 by a conflictor need not directly conflict with all of the conflicts stored
 in the conflictor. This cannot be so, since e.g. a prim can conflict with a
 conflictor simply because it conflicts with one of the conflicts stored in
 the conflictor. The side-conditions in the commuteNoConflict cases make that
 pretty clear.
] 
[move v3 helper functions idsFL and idsRL to harness
Ben Franksen <ben.franksen at online.de>**20190710171914
 Ignore-this: adb91e53426a7602e0422b360e678a5ca64279ed7125bde9275c247ad1a7a4e0334f50bf0cb10a42
] 
[v3: remove debug stuff and other minor cleanups
Ben Franksen <ben.franksen at online.de>**20190710211129
 Ignore-this: a8cf0462f87cb0ec43d7a1766554e810d618f6a347784c650a923906d26de3b93f3fa66c9ff4e85a
] 
[fix the function used internally in v3 to merge FLs
Ben Franksen <ben.franksen at online.de>**20190710182302
 Ignore-this: a961e389d32076bb743fac0c9679e36245ba2320786178eceb40540fef3680583c3fbbe2b1316457
 
 It is used to merge non-conflicting FLs into a single alternative for
 conflict resolution. The bug was that we forgot to call findCommonFL and
 thus mergeNoConflicts could fail.
] 
[colorize --dry-run output
Ben Franksen <ben.franksen at online.de>**20190213092118
 Ignore-this: c803c8f391c358b87c9aeff2760a5f991ebe0adc326ea5477942c56a38efa619f293c4211f8ffa01
] 
[make PrimPatchId opaque and check invariant when constructing it
Ben Franksen <ben.franksen at online.de>**20190708161010
 Ignore-this: c4fe732deebf074a10265e3d85736bc736fe44e158615bc459d81f08614a5c7709e7372e529bbd72
] 
[document and add property for PrimPatchId invariant
Ben Franksen <ben.franksen at online.de>**20190615092033
 Ignore-this: 6e00fdb919775f7ddaec3d98bd0c30a2db2419a5348dbc468a00f28c648c79026e549d63c464eef5
] 
[harness: limit number of flattenings in propConsistentTreeFlattenings
Ben Franksen <ben.franksen at online.de>**20190704202253
 Ignore-this: fe0f3f3dbf999947c131e733ccc18a2c1324f25bd708eeabb6bdb281bf0d11e527cc9d7bc3a07e56
 
 The number of flattenings grows exponentially in the worst case, so this
 helps to keep the test reasonably efficient even if we crank up the number
 of QC tests.
] 
[improved test case generator for RepoPatches
Ben Franksen <ben.franksen at online.de>**20190624063022
 Ignore-this: f238d840b780add48ccd6fb6e7e02221dbf48096ea8e92885ce3dc9bebfd53b7b0bfd8e0dbec673e
 
 We previously generated RepoPatches by merging prims from a Tree. While this
 generates conflictors, it never generates sequences where a patch depends on
 a conflictor. The new generator (which can only be used for patch types that
 have a Merge instance i.e. not prims) directly generates an RL of patches,
 making sure we cover all possible cases.
] 
[harness: never generate empty hunks
Ben Franksen <ben.franksen at online.de>**20190707080008
 Ignore-this: f7b911d55e69510decdc4384df0cf9396a20f7de9fa1c1c5f09eeb8a009341854a7bf013afe560ac
] 
[harness: remove code we no longer need
Ben Franksen <ben.franksen at online.de>**20190707080051
 Ignore-this: 85e284904df4033b106b6403aebe83529bc81b120379594781218d5df0167fbb0bc8c22929817c2
] 
[harness: treat empty hunks specially in checkPatch
Ben Franksen <ben.franksen at online.de>**20190707064300
 Ignore-this: 200de53fa34c3e6c725a6462e46dfe946c08274e59e741fdff573bb4b8f7ee44ffdb7c21a434885a
 
 See the comment in the code. I wonder why this hasn't come up earlier.
] 
[harness: make encoding roundtrip test faster
Ben Franksen <ben.franksen at online.de>**20190628084309
 Ignore-this: c27b51cfbb0e84243ad3c6f9f914a856d9190008c5a6963c55c96494cb09b5e75afea8b7f4ee0aa1
] 
[harness: minor cleanups in D.T.P.A.Generic
Ben Franksen <ben.franksen at online.de>**20190707081544
 Ignore-this: c380a78fdd5013ac229cb76e4a1a039f0995f7a196e5e99532065ad5a9ce73e5df6be2d738114003
] 
[harness: make sure once and for all that generated Trees have enough patches
Ben Franksen <ben.franksen at online.de>**20190707081626
 Ignore-this: f74b5c224e055fc6289096ae2b1e44ce422b50024f6c63adf005988be856431befc67cef3707b1f1
] 
[harness: remove a dirty hack from patch tree generators
Ben Franksen <ben.franksen at online.de>**20190621134136
 Ignore-this: 61e9017bd189f4936c59ab8442f7eb827893b1351d9ff5a3e8ac3877ae012d02e3a83383e1b65da1
 
 This re-adds a slightly modified version of sizeTree which we use to
 calculate the number of pairs in a flattened Tree.
] 
[harness: move nontrivialX conditions to D.T.P.A.Generic and remove dead code
Ben Franksen <ben.franksen at online.de>**20190621194726
 Ignore-this: 425ad9283a3e67720a165a6e6255359dce6daabb54a460ff3f2f033493ac1776e7bdc7a4e10f5987
] 
[harness: minor cleanup in D.T.Patch
Ben Franksen <ben.franksen at online.de>**20190707062607
 Ignore-this: 52f55f7eb704b6b3e19f6bcea8408fbd796eb9aef2ffd609e3e3855ff13ebd50a9e2d30482b0486c
] 
[harness: better failure report for mergeEitherWayValid
Ben Franksen <ben.franksen at online.de>**20190707063753
 Ignore-this: 883bce1d1dc17420ec56e91a8af003fdc7076914dcd2d613edca5d136dcac5e3ab7bb736f024edde
] 
[harness: remove unused sizeTree 
Ben Franksen <ben.franksen at online.de>**20190707114205
 Ignore-this: e43847945cec7c3fad49895260208dcabdc5babf1fffc3ce3d289ea377086b6bb0c64e48a9786f84
] 
[harness: remove some out-commented code from D.T.P.A.Generic
Ben Franksen <ben.franksen at online.de>**20190621133552
 Ignore-this: 4ef0c24e4142c4eb0fa4b83487e592bce0b81f75a6f30351048e83e4c4e0f4bd5b4b71a6c32b0dd3
] 
[make PatchInfoAnd abstract
Ben Franksen <ben.franksen at online.de>**20190630180802
 Ignore-this: cc2cdb8b91b636c3c52c08a90381138e3b319c95ad0d4db04586162f4142e395af3ef32518441b5f
] 
[harness: comment about redundancy of mergeEitherWay
Ben Franksen <ben.franksen at online.de>**20190707064025
 Ignore-this: 49df17c948858bafc47d97888c22f622622c603ba7cbedd55d2baf879c295b6929e35bcf9df8d165
] 
[tests: minor fix and simplification in hidden_conflict2.sh
Ben Franksen <ben.franksen at online.de>**20190705163259
 Ignore-this: 7da879833b56bf53e2e9437cfbd81b3ccc64c6e99168fd6ef64befe30180199904e37a3db241e9a4
] 
[fix in test script for issue2603
Ben Franksen <ben.franksen at online.de>**20190702104601
 Ignore-this: 48657a0e088c7938d1e07986bdec6d2cd8a876ea501f7aeb5590b15daeaf76a9d8f23e00db8ea7d3
] 
[harness: remove two unneeded expression type signatures
Ben Franksen <ben.franksen at online.de>**20190630192439
 Ignore-this: a561be21e2ed8645bd12ef31ac58276ec2b55a07e9e714d6440a9a0f434264c6287af3b98339273e
] 
[simplify instances Eq2 for RebaseName and RebaseFixup
Ben Franksen <ben.franksen at online.de>**20190630181837
 Ignore-this: 1274aa4ac8e5aca8feaa0892cc35ea39aa68c88faa9fecdd7e8bd431124561a4ddcbe11c863764d6
] 
[remove unneeded Eq2 instances from Darcs.Patch.Choices
Ben Franksen <ben.franksen at online.de>**20190630085801
 Ignore-this: 43cfb9339300c8d157ed0e3ff9a896adc1bff88ef6a0d44b7869f0053e140877beb50e64ded04083
] 
[remove unused eqFLRev
Ben Franksen <ben.franksen at online.de>**20190628090000
 Ignore-this: ad6ca2f50567d5422ca0eddf1b7826c49f4f22b4c1c6e5af7cb3d16474d37ed050e93e7cb58d0a30
] 
[eliminate instance Merge for LabelledPatch and PatchChoice
Ben Franksen <ben.franksen at online.de>**20190628082338
 Ignore-this: 8dc6ea5d9723dbc0aead4571677ca78105ba52ab770950805ec4a4012cbb377043b38f7df8d2963f
] 
[break an overlong line in D.R.Merge
Ben Franksen <ben.franksen at online.de>**20190628082123
 Ignore-this: b5bfabc35e7b2a0ebaf982323c74dc181fd515c8b544f1a6bc473fa04a7f690d80c0beaf6a72b748
] 
[cleanup imports in D.P.Prim.Class
Ben Franksen <ben.franksen at online.de>**20190628063924
 Ignore-this: 7a7a83d45e9d4534fc57b18dbc17445bea21e9b88a2622995853863382ab12253d1c928a58ce7bd3
] 
[remove redundant cases for fastRemoveFL/RL
Ben Franksen <ben.franksen at online.de>**20190627145207
 Ignore-this: 947912cd5f0a8a0edfac3e722bedf0b757b213efb47d7f2058691ff7c61aad861f18674a763a1446
] 
[rename a parameter of promptChar
Ben Franksen <ben.franksen at online.de>**20190128123700
 Ignore-this: 1d3aa2e8ae490ae54835a05996d97f5560cc4f65dfa73989af5361ab32bb951726f0aa240bc8137e
] 
[v3: minor cleanups
Ben Franksen <ben.franksen at online.de>**20190624065855
 Ignore-this: fa72c3392c78c066a40980034f1ee70aa45b3889221cfe0679fbf5dbe961a3552dbb8c498a7fe97f
] 
[harness: add some haddocks in D.T.P.A.Generic
Ben Franksen <ben.franksen at online.de>**20190621133803
 Ignore-this: 952a56cf1c647d482af74e3a1749678de3275288d28709ce97d070e92e6573175b8dba8bf5e053f3
] 
[harness: remove unused propFail
Ben Franksen <ben.franksen at online.de>**20190621133040
 Ignore-this: 5a1497663b926b6f1c7b3a2881e480417b4c52d6a5a81f08438619d9d5510b2a919200c9320c0762
 
 While a comment said this is "handy for debugging arbitrary code" I could
 not find an any further explanation or an example. I guess it can be
 re-added easily if needed.
] 
[harness: adapt test names for square commute law
Ben Franksen <ben.franksen at online.de>**20190620171026
 Ignore-this: 171b360f1fb6838892547573b1e64d4450f961f5d42b896d1c28a2116e76c8edbb8de28e0892391a
] 
[fix typo in a comment
Ben Franksen <ben.franksen at online.de>**20190618144234
 Ignore-this: 23f10cd1589fe218c6af93e2d732b7e2d4bd65de373fd7a2a34f66ea656347d1db0f7ac2a4bfb758
] 
[fix a bug in darcs1->darcs-2 conversion
Ben Franksen <ben.franksen at online.de>**20190226222910
 Ignore-this: f65ad0aced1aa6d473b8d59ebc5605daf931c569537214090f541186a967f8bf6b201a89139429b6
 
 The test data for threewayanddep threewayandmultideps were quite obviously
 wrong! The darcs-2 Conflictors are complete bogus, referring to patches that
 don't appear in the repo. This is caused by erroneous calls to
 sortCoalesceFL in the RepoPatchV1 implementation in unravel and in effect.
 The way these functions are normally used (effect when we apply a patch and
 unravel to generate conflict markup) is quite tolerant wrt coalescing.
 However, unravel is also used to convert darcs-1 Mergers to darcs-2
 Conflictors, and here the result is catastrophic. Instead of sortCoalesceFL
 we must merely cancel inverses, just like we do in the darcs-2 and darcs-3
 theory when we construct contexted patches (aka Nons).
] 
[bugfix in V3.commuteNoConflicts
Ben Franksen <ben.franksen at online.de>**20190624080920
 Ignore-this: 21a716babf7079376f4f3c00a9c694b5aeb308994efc51f2d3b455c36acddfb15dc9effc807fa360
 
 I made a logical error when I derived the mixed Rotcilfnoc/Conflictor case
 for commuteNoConflicts from the Conflictor/Conflictor case. This could lead
 to the creation of invalid Conflictors during an unconflicted merge of two
 Conflictors. Specifically, we could create Conflictors that undo prims that
 are already undone by a previous Conflictor.
 The only reason we need this case at all is because mergeNoConflicts
 triggers it when applied to a pair of Conflictors. This means that the
 mirror case Conflictor/Rotcilfnoc is not needed, since we currently have no
 need for an inverse operation to mergeNoConflicts. So this case is now
 replaced with an error call.
] 
[bring help text for 'darcs repair' up to date
Ben Franksen <ben.franksen at online.de>**20190618122635
 Ignore-this: 837460638083e4097ec8d1d5995ed8f0b846e1b648340d0ab92bf3bddf7b2b2e39f5eab892c9bfc2
] 
[remove defunct --set-default option for rebase pull
Ben Franksen <ben.franksen at online.de>**20190617115729
 Ignore-this: 74a836e0e655e3ee350824bb068c4799cb2986e5a6bd2f94e3dd48f25c77aa3717aa47263a34ed9b
 
 The option was never honored by this command.
] 
[streamline the final "Finished ..." messages
Ben Franksen <ben.franksen at online.de>**20190617074953
 Ignore-this: 9de1e70cde9443e5ddcfe3c2c849c09f6242cb8c88c6ec6b89c5ba1fb63ad603144655be83b1c5ce
] 
[remove the (now) unused function 'revertable'
Ben Franksen <ben.franksen at online.de>**20190617065004
 Ignore-this: b318a393e25bcfe7fee081c93dff7a680b81d74254ba985f9a90c4c082c006bfb9166802e39e2e28
] 
[resolve issue2626: treat applyToWorking more uniformly
Ben Franksen <ben.franksen at online.de>**20190617063258
 Ignore-this: a4a3d604838c74302395a77c6e08a66a0d0383d78fac44db36af32be72deb5129ef026cece930b47
 
 This factors catching IO errors into applyToWorking with a generic error
 message that should fit all use cases. In case of the 'convert darcs-2'
 command, the extra clarification that suggests to use --no-workingdir has
 been removed as I find it misleading and cannot see how that could actually
 help: we have created the whole working tree ourselves, so if applying the
 patches fails something really weird (like another process interfering with
 the working tree) must be going on.
 
 It also adds a number of withSignalsBlocked to wrap the calls to
 applyToWorking where they were missing. Where possible, the scope of actions
 under withSignalsBlocked is extended to include finalization and/or updating
 the pending patch. This has previously been the case for some commands but
 not all of them.
] 
[resolve issue2625: catch only IO exceptions from applyToWorking
Ben Franksen <ben.franksen at online.de>**20190616112414
 Ignore-this: 4257807bb86e85058a430f2bb7de25efd96e76dbcb110a8a686e0e85df7d97f1ab1878e76119400
] 
[issue2609 is not a bug but expected behavior
Ben Franksen <ben.franksen at online.de>**20190616101632
 Ignore-this: c99710e9d63a68a945e2b4983c62404196a1e7fde8903f13d4bed99d3dec1c1f93999f080f5a3a45
] 
[test move command properly handles invalid path arguments
Ben Franksen <ben.franksen at online.de>**20190615145035
 Ignore-this: 9dcea32972d437d18752028377e22c6832f71d41d5527a9060041c82ad1929507915581e538a7b68
] 
[accept issue2609: conflicts in unrevert bundle
Ben Franksen <ben.franksen at online.de>**20181115141807
 Ignore-this: bbddf63eeaecd87f4cd3f8e8e064af216f7ab12f117de709a880e802f87ad6f5f827e2cd80b8aa9c
] 
[use explicit imports in Darcs.Util.Tree.Hashed
Ben Franksen <ben.franksen at online.de>**20181116161054
 Ignore-this: b699eccecc3143d89ef95164854813d1ef21d4b067d9f375e17687baeb857d3b7c0855113a510144
] 
[rename module Darcs.Patch.Parse to Darcs.Util.Parser
Ben Franksen <ben.franksen at online.de>**20190217202539
 Ignore-this: 2cd7b62ee5cf6015e9f648cc1ddcf120dd7a9f06b7a6934fa28b7c81f7447f54c6a1b34797a5115
 
 There is nothing specific to patches in this module, in fact we use it for
 inventories as well.
] 
[issue1401 and issue2605 no longer fail, at least for darcs-3
Ben Franksen <ben.franksen at online.de>**20190612171918
 Ignore-this: 8c2a701100bee4d212717dd835cfe4faca118d0d1b0cdf9778a68862813cc5a64b4e42b64b6848e3
 
 They are both instances of the same underlying problem in darcs-1 and
 darcs-2 patches, namely that they cannot distinguish between duplicate prim
 patches. The darcs-3 format allows that and thus does not fail these tests.
] 
[issue2257 fails only for darcs-2 repos and that will never be fixed
Ben Franksen <ben.franksen at online.de>**20190612165459
 Ignore-this: 2d79246dc5334b40f561ceefcf5aa46b7ef9a1e13273fe2ff50559b895743a00cb41e2ce95d4e17f
] 
[Make my previous comment about revert make sense
Ganesh Sittampalam <ganesh at earth.li>**20190615080156
 Ignore-this: 2eae367745cc203d57d46af6ebad3578
 
 Also added a bit more detailed explanation.
 
] 
[add a comment explaining the commuting during revert
Ganesh Sittampalam <ganesh at earth.li>**20190614122900
 Ignore-this: e10f994c016df3ea002e24e30368e992
 
 I also renamed the variables to make things clearer
 
] 
[add comment to explain use of withDelayedDir
Ben Franksen <ben.franksen at online.de>**20190614115801
 Ignore-this: 7404a37c577cefc4f52fa21f60fa806e80d9d69f4f19b3cae11628d788a87d51c11c20a6b856a5cc
] 
[remove unused functions readIntPS and breakSpace
Ben Franksen <ben.franksen at online.de>**20190614113005
 Ignore-this: 357e6d6a3fc0c15573aefd69c9ad74752de2d02536a27b30109f3677e9b63eae1d40c75d3539474b
] 
[fix warning in Darcs.Patch.Merge
Ganesh Sittampalam <ganesh at earth.li>**20190613183959
 Ignore-this: 6944e5e80cf628bc45f690cba84afd0c
] 
[do white space en/decoding directly on the ByteStrings
Ben Franksen <ben.franksen at online.de>**20190217205001
 Ignore-this: 368d7324b584205dd1501e0c0ae9cb471ccbb5291e063e750fcc4891c17c4b55b08e5096400e1265
] 
[harness: more detailed fail output for some properties
Ben Franksen <ben.franksen at online.de>**20190226093418
 Ignore-this: 11a41e9f3c7e5d599ade6794d32422f1995a330891726e740340fd5ccca993a91eafe3b3e7ec3100
] 
[move v3 repo properties to harness
Ben Franksen <ben.franksen at online.de>**20190225091504
 Ignore-this: 8bde91c045669b4d785d9a658b9b52b898c130ae5106e7358d067f685323a3c19d84a228b81730ac
 
 This is so we can use Darcs.Test.Util.TestResult and give better output when
 testing the property fails.
] 
[fix error message in function transferProblem
Ben Franksen <ben.franksen at online.de>**20190302223455
 Ignore-this: 339072d8d5f317ea130a760ea7ab7a10837a55e5a519f32c2c8b69384c72d5974d6d48f7969dc747
] 
[remove unused method isConflicted from class Conflict
Ben Franksen <ben.franksen at online.de>**20190301185825
 Ignore-this: b9b542bbe788194b8c6fdcfb3d7c70edebf34b76227b314df1f3d1fa6bbbff962575bbdf5835fb21
 
 Besides, we already have it as (isNothing . toPrim).
] 
[remove the obsolete PatchInspect superclass of Conflict
Ben Franksen <ben.franksen at online.de>**20190227230137
 Ignore-this: 735d0cdf081ee726b4799d2fc16f4011fdbc899b0c63f6a8b716ff43e1228c421d393a99e3b4cc3
] 
[harness: minor code cleanups
Ben Franksen <ben.franksen at online.de>**20190226091301
 Ignore-this: 900b2daf071d1e0717cf955c39bc86581986ad3b8a7d2c941e642eb5d6dd0c6d33744d28e6051cdb
] 
[simplify type signatures in D.T.P.Properties.Generic
Ben Franksen <ben.franksen at online.de>**20190225142921
 Ignore-this: 4327a0318b7b68c7e41231ac226fc035fa08c67350dc47b18196a4c05a28864fff7dc101b3760b7a
] 
[harness: remove qc_V2P1 and qc_V3P1
Ben Franksen <ben.franksen at online.de>**20190225101544
 Ignore-this: 4c6e5161e8255083ce81f9be1596d42c04630df8058f0ade412f44327cf8d94ec11610b3e67a3035
 
 The properties listed therein do not in any way depend on the prim patch
 being V1. So I generalized the signatures and moved the tests to qc_V2 and
 qc_V3, respectively.
] 
[clean up the foldXX mess in D.P.W.Ordered
Ben Franksen <ben.franksen at online.de>**20190223130000
 Ignore-this: abfd886d46c7eff3d33895e8203b65c22441ce1ead431c0a16cf584e2709828a59dab4a449d34f5a
 
 We now export only the natural folds i.e. the versions that allow lazy
 consumption of the result i.e. the one where the list constructor is
 replaced with the argument function.
] 
[declare instances of IdEq2 for Named, NamedPrim, and PatchInfoAnd
Ben Franksen <ben.franksen at online.de>**20190224080814
 Ignore-this: 89d31c807008dd022dbadff8c514b7d7971cff6658751f9383618f3a8ffdcf2c4621d4b505b7d06
] 
[optimize ctxAdd* by using the better fold
Ben Franksen <ben.franksen at online.de>**20190223110428
 Ignore-this: 71bdde85775dac7f6abfb6c074cedac983e3d5189cb519a2ba9a7a2e6846adc06cad3f1107bbd14
] 
[remove unused function namedEffect
Ben Franksen <ben.franksen at online.de>**20190223100610
 Ignore-this: e7e7e7ddf1ff0a586f56e8eda853022a5c146f9aff1c88effed9d45cb304667ce7dca6735f1f6b03
] 
[fold partialCommuteInverses into property commuteInverses
Ben Franksen <ben.franksen at online.de>**20190223095355
 Ignore-this: 8c999f0c2d0a2167a5e6d89cbfc08b635ea8c38eb463e1889643eea147bad6aa4dfa5f6284bcef09
] 
[fold partialPermutivity into permutivity property
Ben Franksen <ben.franksen at online.de>**20190223094647
 Ignore-this: 567469e46368f0da6e89adaad2f3e33cab5f012b2827b4e9b56e3c402bbabccec1e24cecd056d84f
] 
[add a comment to commutePast
Ben Franksen <ben.franksen at online.de>**20190222140239
 Ignore-this: 119d839f696e97013d7729860fc6ee991a791326331bd7034638c461368e8b52349dc9a563d03141
] 
[break overlong lines in Darcs.Patch.Ident
Ben Franksen <ben.franksen at online.de>**20190222140140
 Ignore-this: e1454dfb406d4c62cc422926ca06bfade135b0de4280cbc5e0d5cef228ddcdae0535b5d2b12e3884
] 
[optimize ctxNoConflicts
Ben Franksen <ben.franksen at online.de>**20190222140025
 Ignore-this: cc8be51d716bea96df1d2300a0987391358c23f6ef75b0e8e72d5b24a46bceea6bae1988f9f63ce8
] 
[restore alphabetical order of modules in darcs.cabal
Ben Franksen <ben.franksen at online.de>**20190217203200
 Ignore-this: d78f8a6987d572564fa6020514a7e7becdea777d289bc7eb6da90f1d9b5e532a5165895019d041fa
] 
[clean up import and export lists in Darcs.Patch.Read
Ben Franksen <ben.franksen at online.de>**20190217162757
 Ignore-this: ce5e9802c05ab65bb39c9f67fd5ade014d976a28780eb75d3647881b65ce433e086b1651631501f8
] 
[replace parseStrictly with parse everywhere
Ben Franksen <ben.franksen at online.de>**20190217162019
 Ignore-this: f0890bc3b9ae2a4bec9f5725361fcd3dcb8fa3b842eed80db97798137c886ddac28e76dabd2b9fda
 
 This is not a simple rename but changes the output type from Maybe to Either
 String throughout.
] 
[take advantage of attoparsec error message for patches and inventories
Ben Franksen <ben.franksen at online.de>**20190217112258
 Ignore-this: ae180e79859662624d99aee431f9378556a677c77b26f39574b17aaa5b21ef8c3db4fff4618ef9ef
 
 This changes the return type of readPatch and parseInventory from Maybe to
 Either String. Attoparsec's error messages are weak but that's still better
 than none at all.
] 
[replace our own patch parser with attoparsec
Ben Franksen <ben.franksen at online.de>**20190217111256
 Ignore-this: c64d383cab9f491eefed0fd899779aeee209a196fb8081454332f595b4d02cc1b0d0539eba3ec02f
 
 We already depend on attoparsec for convert import and its functionality and
 implementation is quite similar to our self-written parser monad. I have
 checked that this does not impact performance negatively.
] 
[optimize parsing of PrimPatchId
Ben Franksen <ben.franksen at online.de>**20190216113744
 Ignore-this: 2cbf157b49fcca77248c240cdca76a9bf65bc7c7210299b5625e492a1b250ede01bb488f2f0fd41c
 
 Profiling showed that a lot of time was spent inside b16Dec when reading v3
 patches. We now read the SHA1 directly off the ByteString which is much
 faster than going via b16Dec and binary decoding. Also fail properly in the
 parse monad if the hash is malformed rather than calling error.
] 
[add more detailed comments for some cases of findConflicts
Ben Franksen <ben.franksen at online.de>**20190215161223
 Ignore-this: f4e9e6b12267be5026752bdeb437b8986df3e2a0cc505e8abb32277a0bb3d3520a22a3b635d97d22
] 
[fix prop_conflictsCommutePastConflictor
Ben Franksen <ben.franksen at online.de>**20190215155817
 Ignore-this: 66c198d17461ac90450d37a4b47cf912ee5a52f16277aa5b86a76cd62bc90a9fac759b55fb203a68
 
 The property was almost correct but not quite. Indeed, patches we conflict
 with may not individually commute past the conflictor because of
 dependencies between these patches. However we can always commute them to a
 contiguous segment right before the conflictor, and then commute them past
 the conflictor as a whole.
] 
[add a number of INLINE or INLINABLE pragmas
Ben Franksen <ben.franksen at online.de>**20190215111230
 Ignore-this: 36cde62676771b68e151121c1028c0dea46d6b4e4b3ab9f06a49e3f1f10c06e48b48d8d9dfb6cf50
] 
[implement resolveConflicts for RepoPatchV3
Ben Franksen <ben.franksen at online.de>**20190213191419
 Ignore-this: 5930378d244113a2c1ec5a25ebea540fddcfaa0991403d0f46ee0e3ce3b7b7a0818c1a26a28dad52
] 
[change the type of resolveConflicts
Ben Franksen <ben.franksen at online.de>**20190213172409
 Ignore-this: 77cdb5896438291f91e9a4b64f3c165beffb1b042d5ff8af49e729a20be1e80228d8cc0ed0a72288
 
 It now gets two RLs of patches as input and produces a simple (not nested)
 list of resolutions. The change in the input type(s) has been done because
 otherwise a RepoPatchV3 cannot correctly implement resolveConflicts, which
 requires that we know the transitive set of conflicting patches for each
 conflict. But a V3 conflictor contains only the patches that directly
 conflict. The separation into two input RLs is so that we can still resolve
 only the conflicts inside a (trailing) segment of all patches in a repo,
 which is how we call it when merging patches.
 
 There are no longer instances of class Conflict for RLs and FLs. Instead, we
 offer the stand-alone function combineConflicts and use that in the
 implementation of resolveConflicts for RepoPatchV1/2.
 
 The change in the result type is just a cleanup: instead of adding the
 mangled resolutions as a first element and then taking the head (in
 standardResolution) we now replace the inner list with the mangled version.
 
 Passing the full context to resolveConflicts requires a number changes
 downstream. This is not strictly needed for V1/V2 which ignore the context,
 so we could pass undefined, but we need to make this change for V3 anyway.
 Instead of adding yet another parameter to all functions involved, we now
 pass a (Fork common us them) which cleans up type signatures (and
 incidentally some of the code, too).
] 
[fix rebase unsuspend for v3 with a dirty hack
Ben Franksen <ben.franksen at online.de>**20190213172058
 Ignore-this: 93e1de42976f7ced44af49aed473e467826a66d1415d96fb0f080086ab19f46b6856944de15dcb5d
 
 See comment in the code for the why and how.
] 
[disable repair tests when format is darcs-3
Ben Franksen <ben.franksen at online.de>**20190213082301
 Ignore-this: 65ef18b5a67da1d3b6a73474ca3682b583288408a06b91b9249e87d65e7a3736656fcc76e7574fff
 
 Repairing currently means that we add or drop prims from a sequence, and we
 cannot lift that to NamedPrims. Doing this right requires considerable
 refactors to the Repair interface(s), so this is postponed for now.
] 
[tests/pull.sh: expect the correct behavior for darcs-3, too
Ben Franksen <ben.franksen at online.de>**20190212173609
 Ignore-this: f792f0223566be7cbfb1ed0c661483e7bd36ee0e39460cc6d8410d1baaa85630322e3d8d94d9283a
] 
[fix expected output in look_for_moves test for darcs-3
Ben Franksen <ben.franksen at online.de>**20190212172132
 Ignore-this: 60e8e72396c57594754f8d1851966c966dbd29ab1fc76de1d0c123f94c7c0682ea16d0e49987301b
 
 The place where we have to adapt the test is when we test teh output of
 'darcs log --machine-readable' which uses the ForStorage format option, so
 we have to expect the hash line before the content.
] 
[show the PrimPatchId only ForStorage, not ForDisplay
Ben Franksen <ben.franksen at online.de>**20190212171739
 Ignore-this: 14e9d992008886472c8074eb51478b87ddc92a0f9166796697678a7f7800f77e3b6f33800b4e8a90
 
 The PrimPatchId is not useful to the user and clutters up the output when
 --verbose is in effect. It also allows more test scripts to pass without
 having to adapt them.
] 
[hack: disable showContextSeries for darcs-3 format
Ben Franksen <ben.franksen at online.de>**20190210220951
 Ignore-this: 42980b90a07bf292e5a3ebaaf08af8efacc4eca1a136c254affad0eefd37ccdaa9444bcc7391dcd8
 
 The code (in Darcs.Patch.Viewing) that implements showContextSeries messily
 re-implements showing for FLs of primitive patches (hunks in particular),
 circumventing the ShowPatchBasic instance. This means that it cannot take
 prim patch IDs into account since these are added to prim patches as a
 wrapper. This would not be a big problem for display but it is one when we
 use showContextPatch to create a patch bundle because it means that hunks
 are stored without the prim patch ID and thus cannot be read.
 
 The temporary "fix" here is to disable showContextSeries by adding a new
 ListFormatV3, until the context showing code is cleaned up to pass the
 correct prim show function down into showContextSeries.
] 
[bugfix in instance ShowContextPatch for NamedPrim
Ben Franksen <ben.franksen at online.de>**20190210204803
 Ignore-this: 68a4bfee97592c22cbe1db6e2c9f55619ec5202e4b80a8a6eed7368c579a77c7234009fb49e62f6f
] 
[fix cloning of darcs-3 format repos
Ben Franksen <ben.franksen at online.de>**20190210182806
 Ignore-this: 60872f1cee31832cdadb4465625aee72cdf77279d9819e1dce5917c49c39bf4f27779b09e9222c4d
] 
[fix a typo in a comment
Ben Franksen <ben.franksen at online.de>**20190210124332
 Ignore-this: c4a5c3874a04661cd8f822c20aad24cc10c38ab457cb56682b20a4a5ef3e4e3db2a897d43f3e43fe
] 
[add Darcs.Util.Graph
Ben Franksen <ben.franksen at online.de>**20190209161000
 Ignore-this: 124741eb525d8358ac597505bafa83045427a876de6edf9aa1b13f1d02499265e15fe3ac614d7966
 
 This contains an efficient algorithm to determine maximal independent sets
 of an undirected graph.
] 
[separate class Summary out from class Conflict
Ben Franksen <ben.franksen at online.de>**20190209122716
 Ignore-this: 72faff5442a74f6d7e36d07c5d32a8205e520713009a01d7728a297d17c7add1387def4c422d6c5a
 
 This prepares a change in the type and meaning of resolveConflicts but makes
 sense independently. The method conflictedEffect is used only to generate a
 summary for potentially conflicted patches and thus has been moved to the
 new class Summary. The class Conflict gets a new method isConflicted which
 just returns whether a patch is conflicted or not.
 Incidentally this gets rid of a number of unneeded instances for Conflict
 with nonsense/dummy implementations for resolveConflicts (such as for Named,
 PatchInfoAnd, RebaseChange, and RebaseSelect).
] 
[fix instance MightBeEmptyHunk for NamedPrim
Ben Franksen <ben.franksen at online.de>**20190209135159
 Ignore-this: b1086cabaaab6213c883e46b2f628c627865a904b94b0ecea32b8c4b82cbd00da8bd4ff8ae93e3c6
 
 Property effectPreserving fails for Prim.V1 empty hunks, and so it does for
 its NamedPrim wrapper.
] 
[fix in the QC generator for prim patch IDs
Ben Franksen <ben.franksen at online.de>**20190209134332
 Ignore-this: 91ebf416d68a3e32c88a4b57f2b215d2a714c83ba9d52f7044ba9cf6c10b795f0cb05a7725481dbb
] 
[restore alphabetical order of exposed-modules in darcs.cabal
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: 8e8b4a08b048a798154b8545ec1eda37a4078baae2163b901cc2f64abfdfa10f7d0aad145cbf361f
] 
[adapt test skip based on repo format
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: 8bc2fd9371c2472ace4bc131e73011183729a3b1650ffcd8cd22d86453055b84a153171f1fdbe438
 
 Now that we have three formats, we can no longer assume that skip-formats
 darcs-1 implies test is run only for darcs-2.
] 
[allow runnign the test scripts with darcs-3 format
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: 9b273613a8c1534b3d6313e2ea587a5638a5725908f0a0274b93351ef96f9c08e858605ecaf877c8
] 
[trivial refactor in D.R.Create
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: 6b9a4d2b67990973945b087935be24145331b15d1b1d00da1cae1db4e933d60836a72031380b7e3e
] 
[add new Darcs3 format option
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: 2533f8ba73d77516c2bba809145e1d2fb2586e0eabc2cfc386f76363f431f0c0fcc8ce64cf785b69
] 
[move Darcs.Patch.V3.Prim to Darcs.Patch.Prim.Named
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: 11c6b305355e9d6b75e3f02ca85dc3246d220886c1d5d133ba1dcea8d68d94fc76ade6e8e8924d74
 
 This is actually a fully generic wrapper for any PrimPatch type and
 technically not tied to V3.
] 
[add prim patch identifier when constructing Named patches
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: f57ffc7d3a83e9779566083826ee3b2b46048f78267100ea9a54e9bd94cb502ebfdc712e48f2f2f3
 
 This re-adds method fromPrim to class FromPrim, this time with additional
 parameters to construct the identifier. This is then used in function
 infopatch instead of fromAnonymousPrim.
] 
[renamed fromPrim to fromAnonymousPrim
Ben Franksen <ben.franksen at online.de>**20190208164649
 Ignore-this: c48e828a89e8afd62066c77998c5cd18584060e279f92823d7496cd823316426a7649606fc03e82a
] 
[add V3 stuff to the test suite (quickcheck tests only)
Ben Franksen <ben.franksen at online.de>**20190208164538
 Ignore-this: 4a6082f0fdd9a47b753fa9f020bc87cad4d7c8fed450ac497660aec14a7fc8ba59a9071d1c4e951c
] 
[add RepoPatchV3 aka camp conflictors
Ben Franksen <ben.franksen at online.de>**20190208164513
 Ignore-this: feeb4c3e9c99f20f77cb5980bad455e454715b484b2b5185195a2455e7e14abb6563a5e08c2faccc
] 
[add some functions we need for V3 to Darcs.Patch.Ident
Ben Franksen <ben.franksen at online.de>**20190208155041
 Ignore-this: dbe9d108136fda53b93c507df62c94f3ac15a8fc1b614c23358e0aa15b444b1675f863ec4fe190b1
] 
[issue2614 has been resolved
Ben Franksen <ben.franksen at online.de>**20190612160232
 Ignore-this: f5810bf105383ab6a6bcdd257c344cb0202f95541f87898a58d2592e1e79d123edcf94a9fd53e4e6
 
 It has been fixed by
   patch 9dfd9ea8480ced1f5bf88491c51d31b622bd6a43
     * revert partitionRL to its former state, remove partitionRL'
 
 Also, for darcs-1 repos it failed for the wrong reason, namely because we
 push a conflicting patch (it does not conflict for darcs-2 because of
 Duplicates) so we allow pushing conflicts to the target repo.
] 
[test for issue2293 no longer fails
Ben Franksen <ben.franksen at online.de>**20190612155402
 Ignore-this: 62d8056811d0d2a4a1e1061788e098b19361c36c1112f4f57962c0f05241f4c52ac6f6ffcc3dffe0
] 
[test for issue2275 no longer fails
Ben Franksen <ben.franksen at online.de>**20190612155215
 Ignore-this: 5f9d7b5a8e00108fcbf186399b2d02b8bbf84c98dcb0092e0aa4ea600d85aabb1f324f387feb4f8f
] 
[issue1442 has been resolved some time ago
Ben Franksen <ben.franksen at online.de>**20190612153842
 Ignore-this: 3232166c0bdef528297778ae79d289ffaca07739af4b49e6cdbf2adc72e2dbed9d6eff94633c82cb
] 
[treat 'failed to commute common patches' as a bug
Ben Franksen <ben.franksen at online.de>**20190612153925
 Ignore-this: 6294bf4989e8665e278230a8166a6892203a2f5ed5c0781bcb15165ddd7b7f2e7e8ba5e2895b8383
 
 This partially rolls back
   patch 7448ac2618ae158dbe576e45f487d24e9c71170c
   * add new Exception types CommuteCommonPatches and PatchNotAvailable
] 
[remove unused isSpace and don't export isSpaceWord8
Ben Franksen <ben.franksen at online.de>**20190612144349
 Ignore-this: a82b77a300eea3963feffb798e625429468c9149c0cea9040b3227921ba072819d8258c063ef8393
] 
[optimize fastRemoveFL/RL
Ben Franksen <ben.franksen at online.de>**20190218182117
 Ignore-this: fb43a9a4b0e185f856744acd79b609d766b8a41fbe088f4d6f3e44cb61bfb4e3327630f5fdc3d470
 
 The point is to avoid structural equality (Eq2) tests completely.
] 
[some optimizations in ByteString handling
Ben Franksen <ben.franksen at online.de>**20190214193307
 Ignore-this: d0680556d65fb1a07cb73914be549d98c193902eb1be245bd341bd5c275254ff670d577f9ffb722b
] 
[revert partitionRL to its former state, remove partitionRL'
Ben Franksen <ben.franksen at online.de>**20190215112012
 Ignore-this: c1cda92199711056c4b2774d6a591a32f6fd2e085adc0a7db6218d8d49bdbcb1f01e0c18ffb4d5a2
 
 This rolls back parts of patch 47da99770d4be412f7d9baed75eb0573a5b18d54
   * clean up partitioning functions and export primed versions
 
 The idea was to reduce the number of commutations. I am not sure it does
 so in every case, though. And the new implementation is less conservative,
 i.e. he result contains more commutation that necessary.
] 
[split up Darcs.UI.Commands.Convert
Ben Franksen <ben.franksen at online.de>**20190226182702
 Ignore-this: 664d576d3951885f994bfe7fd559a53ad0359e202107415755bca007569b01ff3afab182a82745d8
 
 The implementations of these commands are long and complicated and they
 share almost no code. And we need to add yet another command for conversion
 to darcs-3...
] 
[fix a (serious!) bug in instance Apply (RL p)
Ben Franksen <ben.franksen at online.de>**20190306104028
 Ignore-this: fa2fef9650349872dbdb2418a42be3907db4794ebcc6fc537916b4701d3671a52675691d71d4d324
] 
[fix confusing error message
Ben Franksen <ben.franksen at online.de>**20190226182952
 Ignore-this: 45e6629492957d6424b9e664e7aa617a85bf62a36efa892b8ae1a9d8748bb9497d7d0e2a607ff932
] 
[extend documentation for classes Ident, SignedId, and Invert
Ben Franksen <ben.franksen at online.de>**20190224080628
 Ignore-this: 47c5361cab0adc6b0a9c87ec7e391da204eae090cda3de41f556053c8218755d12241dc419dad6d5
] 
[fix a typo in Commute docs
Ben Franksen <ben.franksen at online.de>**20190224081603
 Ignore-this: 4cb41cbd8e8be7af49ed845fe448dd3041014fc2379c8b20fbaf890f21d058108fba5d1aab2e5b3e
] 
[fix documentation in Darcs.Patch.CommuteFn
Ben Franksen <ben.franksen at online.de>**20190224073329
 Ignore-this: 1e653f68a6e8d88386e9f1274cd12d952b192f85889394d8592ecd8228bebe806dede0d58527c096
 
 The possibility of failure means that all CommuteFns are more or less
 equally strict: to consume a result sequence we must know that the result is
 Just and that requires all commutes to be performed at least up to the point
 where we know they succeed.
] 
[harness: renamed invertSymmetry to invertInvolution
Ben Franksen <ben.franksen at online.de>**20190226090951
 Ignore-this: 12df4e63ad9b47ab5a91f0d990a2a9154e86884dea8c05dd633e08a958fab942169b7bcf099c0fb6
] 
[harness: slightly improve docs for generic properties
Ben Franksen <ben.franksen at online.de>**20190226091049
 Ignore-this: e10a9008733ea6205413b55617ed0d9b3fba9f7bdb1f5d7bbf5553c9ccaa610e7699b4ed4f76b6ca
] 
[harness: print failures with color 
Ben Franksen <ben.franksen at online.de>**20190225091643
 Ignore-this: b06c0f191ba8b31180f8228c9680c3c455287955bfedde9935ef4ff29f86b7c7fed5d3a15f787521
] 
[demote data type Common to a type synonym
Ben Franksen <ben.franksen at online.de>**20190228001846
 Ignore-this: ddcc279308aaf7c5f8c32a235f91e8ffaa103485ca591720365fb86bcd03040e23cd9355cc3dbed
 
 We have a the more generic Fork data type for which Common is just a
 specialization.
] 
[remove unused instance Merge (RL p)
Ben Franksen <ben.franksen at online.de>**20190304134928
 Ignore-this: 8687305e380d01d0ce4dbe7768568f9e9ab22e9981780f8f37d1b516a4211d735558387bc59e17a9
] 
[simplify a case in splitOnMatchingTag
Ben Franksen <ben.franksen at online.de>**20190302223328
 Ignore-this: 52d98b91fe35e9b93cdbfdeb89aacdc4187458769f6854954395e2f5ac3aa5a3189b494129067688
] 
[remove unused function setPiDate from D.P.Info
Ben Franksen <ben.franksen at online.de>**20190302223129
 Ignore-this: 61423762d053023c5ebf4c13a2c7f2e4fc6b578d279f05ebfedae36f38a2962a3ea12d335c5be5d3
 
 This function circumvented validation of the PatchInfo ingredients, so good
 riddance.
] 
[fix in tests/convert-darcs2.sh: add missing "cd .."
Ben Franksen <ben.franksen at online.de>**20190226214009
 Ignore-this: 7593682e01c1f22e9b12e93aa6bdc9d93ec81445f938577bdb84a9ae22f3a34150f98169d245edf8
] 
[don't offer already depended on patches with --ask-deps
Ben Franksen <ben.franksen at online.de>**20190124193457
 Ignore-this: 1f9ad1d591f9f99bdf38bea319f1acbf19a38f859a3c7687f7943a0a46abc97e14a03435426cc34f
 
 This reverts an unintended behavior change introduced by the fix for
 issue2618: the patches we already explicitly depend on are offered again.
 This is done by adding the old dependencies to the anonymous patch before
 filtering out its dependencies.
] 
[get rid of unused unsafeCoerceP2
Ganesh Sittampalam <ganesh at earth.li>**20190611062513
 Ignore-this: 46b236dfe624c10c2e968530747afd47
] 
[make it clear that coercing Repository is "unsafe"
Ganesh Sittampalam <ganesh at earth.li>**20181118220143
 Ignore-this: a6c3812e365d19cd17377fe146dda216
 
 This may be a little pedantic, especially as we don't claim that
 mkRepo is unsafe, but it's consistent with the API for patches.
] 
[get rid of orphan FromPrim (FL p) instance
Ganesh Sittampalam <ganesh at earth.li>**20190608202444
 Ignore-this: 3afa6a3765ed5314975155267a71ac21
] 
[refactor trackLinear to break out the recursive case
Ganesh Sittampalam <ganesh at earth.li>**20190608101047
 Ignore-this: 5bc698dfed2f744ae45d599476ad1487
] 
[make linear search report results like bisect
Ganesh Sittampalam <ganesh at earth.li>**20190608095540
 Ignore-this: bc2895373d26624b241cc536ac7fb201
 previously it would just print out "Success" and the most
 recently printed patch would be the one to blame
] 
[expose the test harness runner and config for running from ghci
Ganesh Sittampalam <ganesh at earth.li>**20190606223539
 Ignore-this: d382080ebb2f7ccdf6aacc713408610a
] 
[rename BisectState to BisectProgress
Ganesh Sittampalam <ganesh at earth.li>**20190606215716
 Ignore-this: ef33ae0254952cf5ec1734470558ae17
] 
[introduce an explicit type to express the result of a strategy
Ganesh Sittampalam <ganesh at earth.li>**20190606215300
 Ignore-this: b5314f8ba72bd024a6244cca6c1c9c36
 This is a bit of a brute-force/dumb refactoring to begin with.
] 
[introduce explicit type for tracking test results
Ganesh Sittampalam <ganesh at earth.li>**20190606122539
 Ignore-this: b4b3f63baa18718d79dc4f7e209b1939
 This is in preparation for adding a new constructor to
 track "untestable" results.
] 
[drop unnecessary constraint
Ganesh Sittampalam <ganesh at earth.li>**20190606220441
 Ignore-this: f9e1e905f532b84e70042ff46b469df7
] 
[fix (Windows-only) warnings in Darcs.Util.Workaround
Ganesh Sittampalam <ganesh at earth.li>**20190606122513
 Ignore-this: 98efe7f33da84f73851f1bcf7695dc6f
] 
[CHANGELOG entries for 2.14.2
Ganesh Sittampalam <ganesh at earth.li>**20190126111825
 Ignore-this: 2da6fba6b82288810de622a05851746e
] 
[CHANGELOG entries for 2.14.1
Ganesh Sittampalam <ganesh at earth.li>**20180624165246
 Ignore-this: 1aa070f69a56b2dee98b5e806f1e88fe
] 
[tests/repair.sh: group remove of test repo with creation
Ben Franksen <ben.franksen at online.de>**20181021220721
 Ignore-this: aa2ec30c80093d75d7eb069f5abff7df1b1842f3fb713b983a0bde0923ed0944869b620112c72e7d
] 
[use mergeNoConflicts in the definition of standardResolution
Ben Franksen <ben.franksen at online.de>**20180916104610
 Ignore-this: 146e0e181392dbee9f1286bef5e4c1035b0fd68208e78e33d75b5aff63d6b32168cbc6f446779b91
] 
[replace use of fromAnonymousPrim with call to constructor
Ben Franksen <ben.franksen at online.de>**20190208164954
 Ignore-this: 43e342cde5dc6e4985b875276b0b7d984e7c3163434b049b37e1098456dd75e0363072588ad9416
 
 This further minimizes calls to fromAnonymousPrim which is good because with
 V3 this is now an unsafe method.
] 
[make test for issue1978 independent of patch format
Ben Franksen <ben.franksen at online.de>**20190212172042
 Ignore-this: e6cac0eeef9a5adaa65ab08e713243a2c404aada48cc6e27109af35c33c798369776b56d1ee4754f
] 
[simplify and clean up conflict-fight test scripts
Ben Franksen <ben.franksen at online.de>**20190213080340
 Ignore-this: a19af8abe6180f446d15550fd8c661c5d55301bf80b7d0178714a5ad8f7f3bf111f622613c565306
 
 The option --ignore-times is the default when running test scripts and we
 also have a default author configured. Also don't remove test repos when
 done (this is bad for manual inspection of the test repo).
] 
[tests/conflict-fight-failure: adapt number of iterations to patch format
Ben Franksen <ben.franksen at online.de>**20181024175801
 Ignore-this: d43a917f2cb44df655d61afae4498db8e2e992a2d34dd540fc204191e4afca83f33ed22b790d5f71
] 
[fix shebang line in tests/conflict-fight-failure.sh
Ben Franksen <ben.franksen at online.de>**20190213081234
 Ignore-this: 3a01123105c8bb6b378747638194f9233ec03c7aad9143eaf297f5da013d225f22ef8ac94cd79561
] 
[renamed apply-hunks.sh to issue701.sh
Ben Franksen <ben.franksen at online.de>**20190213080146
 Ignore-this: bd76f684fa8a1db9007381787f8c83541f6c617b0ae60df0a17842184e4315aca910e859f320ae72
] 
[tests/apply-hunks.sh: remove step6
Ben Franksen <ben.franksen at online.de>**20190213075529
 Ignore-this: 112cb2371b7a606d6d1f0adf0d4a6e5fa324707bb03edbaec629fec1e7e81b301aa8aa79722e8ea8
 
 The repo temp2 is not used and obviously irrelevant for the test.
] 
[remove test repos before creating them (apply, apply-hunks)
Ben Franksen <ben.franksen at online.de>**20190210222616
 Ignore-this: cd84403f92e154e047bbc2cfb28f39f5c7a823f0e6faaef77d284da8a0d01111ec2d344e311d85ac
] 
[tests/sshlib: skip test if remote darcs doesn't understand our patch format
Ben Franksen <ben.franksen at online.de>**20190213075030
 Ignore-this: afda3657be91964f090dcaf5db7f40de958dccbc0045b6ef1b3bf3c5d6fe9dec9b9664eba046b579
] 
[break overlong lines in D.R.Repair
Ben Franksen <ben.franksen at online.de>**20190212212710
 Ignore-this: ec2725d33feaa54ecf70cd3270746d68fe4b0ba586679633cab38a1ea9ef22480b77bf4548e041ed
] 
[fix crash when a hash (given with -h) is not found
Ben Franksen <ben.franksen at online.de>**20190212191002
 Ignore-this: 5cc8232afddd231e0010598c36ac67dd8707437e014dbf6f93e750e898bc80b9cd24d7956201013
 
 It now throws a new type of exception (MatchFailure) instead of calling error.
] 
[small layout fix in Darcs.Util.Hash
Ben Franksen <ben.franksen at online.de>**20190210222529
 Ignore-this: 5a9f5e3d0cdda7b3f5ba8d3fa2fff64b6ef9dece6689b7337a7617d7e2715c8e8bd7cd057eead334
] 
[remove obsolete directory src/Darcs/Patch/Bracketed
Ben Franksen <ben.franksen at online.de>**20190210201244
 Ignore-this: e6c8f3a994588b6c4a9bc961f642a19715b9cd19d397fc0fe29458aacfd991c17d4fac8a63d54f48
] 
[better diagnostics when property mergeEitherWay fails
Ben Franksen <ben.franksen at online.de>**20190205105245
 Ignore-this: 2cc1b0a1357bd305a63ead1fe6e1120637ce8969fab1b01705db2b28e2070dbe26bff863f68dfa16
] 
[rollback of rename conflictedEffect to isConflicted
Ben Franksen <ben.franksen at online.de>**20190209115302
 Ignore-this: 846fbce4cea91f41337b551ff6a650a7f9ff58159c5b7462fcde2153ce01be01c7cf0568d5eb315b
 
 Contrary to what I stated there, conflictedEffect does have a lot to do with
 the effect of a patch. It is just in the wrong class which I am going to fix
 in another patch.
] 
[harness: better diagnosis when permutivity fails
Ben Franksen <ben.franksen at online.de>**20190129215425
 Ignore-this: b1f4d2903564748a8b4a086714e1e6c6106300f058c7b89e85626dc5a0ba50154484f8ed5cab54b
] 
[mark test for resolution of conflict chains as not failing
Ben Franksen <ben.franksen at online.de>**20190128202716
 Ignore-this: e7ef012985a72167697a43861564d0f73ce53b95b523d357f4612431370c8ce90b18392ef406a342
 
 We don't have many tests for conflict resolution and this is a pretty good
 one, so we just skip it when the format is darcs-2.
] 
[improve test for conflict chain resolution
Ben Franksen <ben.franksen at online.de>**20190127104545
 Ignore-this: 7b5790770967537e81077efb833cfb2a1e0469251f161589757cebf188f451c8de7f0a241217d2eb
 
 Apart from fixing a bug (the old version tested the wrong file), the test is
 now tolerant with respect to the order in which the alternatives to the
 baseline are offered. Interestingly, it turned out that this test actually
 succeeds for the darcs-1 patch format.
] 
[add --replay=SEED option to darcs-test
Ben Franksen <ben.franksen at online.de>**20190130095232
 Ignore-this: c118d96c6b1b5947da96dfedd3202ce8b318bb6d6eb3d0cd979b18f97f8a0a8d09cebf34ea437d5b
] 
[resolve issue2618: option --ask-deps adds too many dependencies
Ben Franksen <ben.franksen at online.de>**20190124183655
 Ignore-this: 99b3f4b4f6e72a80773321890a3ae6b08bf2b2121e5590db51ae4aec503edd253f84818c5f2e0ac4
 
 The trick is to filter out any patches in the result from runSelection that
 depend on later ones. While this may also filter out explicitly selected
 patches, these should rightfully not have been offered in the first place.
 I took the freedom to clean up and simplify the code for askAboutDepends.
 This concerns mainly the initial filtering of patches that are depended on
 by what we record, which is now reduced to a plain commuteWhatWeCanRL.
] 
[accept issue2618: option --ask-deps adds too many dependencies
Ben Franksen <ben.franksen at online.de>**20190124183618
 Ignore-this: 3c530e6336303b14ab82382d755cd50f37aa7115891e465a6dbf3ea4389398b1e7ecc01d0f46a935
] 
[annotate all uses of anonymous with comments
Ben Franksen <ben.franksen at online.de>**20190123184250
 Ignore-this: e36396a975c47090fbd77903cb3948ded7ba576e723a3963f5e48c505d7b1729d70940a846a0850a
 
 Whenever we call anonymous to construct a Named patch we must now check
 that we don't accidentally store patches that result from merging them
 with normal patches.
] 
[add class IdEq2 to Darcs.Patch.Ident
Ben Franksen <ben.franksen at online.de>**20190124135342
 Ignore-this: c5466acfb13224c405ebfe055b186d2a57d0d9d53dbf6044facba677efe0dba803c865e3469e8cde
 
 This allows a faster equality test for FLs of patches with identity.
] 
[enable test for issue436 for darcs-1 format
Ben Franksen <ben.franksen at online.de>**20190124085755
 Ignore-this: 4624b8ae3ac4db8fd14d3c1acc8a2949cd767416a1327e228d09b0dff0c00c7d4666eec303cd487a
] 
[break overlong lines in partitionConflictingFL
Ben Franksen <ben.franksen at online.de>**20190123183208
 Ignore-this: de96f39c0db3146634b74107e347974093a46d5672d042fd962bf732f119ea0c67985d77fe5c872c
] 
[remove class PrimPatchCommon
Ben Franksen <ben.franksen at online.de>**20190123145855
 Ignore-this: a928a57c0712f3e27971cc2df9bb30763581f11f8e18bf28d9bddd441a6b4ec2d67b2b60a6d6de78
] 
[avoid direct imports of Darcs.Patch.FromPrim from outside of Darcs.Patch
Ben Franksen <ben.franksen at online.de>**20190122194221
 Ignore-this: f3526d3539faa6b8a0f3c7f547fa95d4a2d1acaac062b6e5465e5cc4f2c7b63b3ed356eb5cf026a1
 
 The only exception is now the implementation of rebase inject which needs
 low-level access to fromPrim.
] 
[remove fromPrim from Darcs.Patch
Ben Franksen <ben.franksen at online.de>**20190122193314
 Ignore-this: 5466d3c0d875be04d4d987230016b2ed5ce623aef2d4cf31113d73c0244c3f751c348fc38236487e
 
 This is now no longer an official part of the Patch API.
] 
[move classes PrimPatchBase, FromPrim, and ToFromPrim to their own module
Ben Franksen <ben.franksen at online.de>**20190122192439
 Ignore-this: 7a05d15ffab8643ee34adffdca910beb4628c478cc98eb7fd114244a00b448d9a46d63f459622e8e
 
 These classes are not part of the Prim patch API but the RepoPatch API.
] 
[move instance FromPrim (FL p) to Darcs.Test.Patch.Examples.Set1
Ben Franksen <ben.franksen at online.de>**20190122184024
 Ignore-this: 46af7bff9fa0123cbf9341529ba5b69a5e44a1a589d1ea87b5a6f8829d701d7f97651716b0ddcbb2
 
 This is the only place where the instance is used.
] 
[remove instances for FromPrim and PrimPatchBase for prim types
Ben Franksen <ben.franksen at online.de>**20190122183012
 Ignore-this: 756b3fd6b00bcd2a2d4af647a9dda4b645023bfd24f136fb8d7530afcc687ae5d3f96622fb2b7ece
] 
[eliminate use of fromPrim in convertDarcs2
Ben Franksen <ben.franksen at online.de>**20190122175720
 Ignore-this: f49d305cb77f4260a6bafab2fd9a96b297b441e1c5e9aee711d0a44eee52b3ae3f4b010e55179088
 
 The code now uses the data constructor V2.Normal instead.
] 
[eliminate an unneeded use of fromPrim
Ben Franksen <ben.franksen at online.de>**20190122173108
 Ignore-this: 3b97bef8e57f2ae1fb571f6ec5a5b817e4ff097d7fc2698ef7e258d54dd9dd7d4009f783244b51af
] 
[refactor: eliminate class FromPrims
Ben Franksen <ben.franksen at online.de>**20190122172158
 Ignore-this: 54d76dec03513588d7bf8b59c79aa24c6af77c5b4d106b2fbd33e3de2e9d06d6ed7aa01c4f325fb8
 
 Again, preparation for adding identities to prim patches. The method
 fromPrims was used mainly to construct Named patches via infopatch or
 anonymous from Darcs.Patch.Named. These functions now take an FL of prim
 patches as input.
] 
[inline function Darcs.Patch.Named.namepatch
Ben Franksen <ben.franksen at online.de>**20190122132111
 Ignore-this: 4a9fbb4c69164a54029c50bcb7ff3b369728de13989296b4132d52b92b4fadf038a7f1da62d79a6c
 
 This is in preparation of adding identifiers to prims when constructing
 named patches.
] 
[simplify "Ignoring out-of-order tag" warning for darcs convert import
Ben Franksen <ben.franksen at online.de>**20190124110533
 Ignore-this: ffba102334ae16c01c5d8cae9c3355913c5ae50c89675186b0926d96a43df767d162fc8ffa16d378
] 
[replace bug with error in two new places
Ben Franksen <ben.franksen at online.de>**20190122172731
 Ignore-this: 4c26974328bd9963bf27b110cbb829a50e0ffc71ae04609f591d6fdeb467b82dc3df5be1715e31e1
] 
[D.P.Match: pattern match and error instead of fromJust
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20181218173746
 Ignore-this: 69ff5a497ae01cbe279069d795f7c0b73ab82c4ee4c1d3b4571dd3401d35ea451f0aaeb6b2940fc5
] 
[add a top-level error handler
Ben Franksen <ben.franksen at online.de>**20181214153646
 Ignore-this: fe90dbbfb673b057132723b592d447c493ed3fedcbc4cec746022ee8bed3fc47fea4dd6fb1c82dee
 
 This exception handler merely adds information about where to report the
 bug, then prints the exception to stderr and exits with ExitFailure 4. This
 allows externals tools to distinguish whether darcs exited due to a bug.
] 
[add new Exception types CommuteCommonPatches and PatchNotAvailable
Ben Franksen <ben.franksen at online.de>**20181214153646
 Ignore-this: ea1cdebcb8df41910e606c7eb0523b6c7b2eaaef0de12e297f2568498f932efe3c50ef77398bf82e
 
 We now throw these special exceptions instead of calling error. This is
 because neither is (necessarily) a bug in Darcs. Instead these exceptions
 can be thrown under normal conditions and indeed there are tests that
 provoke these failures.
] 
[replace errorDoc, assertDoc, bug, and impossible with direct error calls
Ben Franksen <ben.franksen at online.de>**20181214153646
 Ignore-this: bc37ba5af9afd01725140e6f008839811b0e17058f0fe7d531998017d0c0da6d5393430840765653
 
 All of these functions indicate the same thing: if they are evaluated then
 this is a bug in Darcs. In case such an error happens we want to know the
 file and line number. If we use any of these functions, then the location we
 get from ghc is only an unhelpful src/Darcs/Prelude.hs or
 src/Darcs/Util/Printer.hs. That is, unless the callstack actually contains
 useful information, which apparently requires profiling to be enabled. So
 this is useless to us in practice because who uses a special
 profiling-enabled Darcs in their daily work?
] 
[replace a few calls to 'bug' with 'fail'
Ben Franksen <ben.franksen at online.de>**20181214153421
 Ignore-this: 8f0741d3fcdfbbbae4bb220a1f6bcf2f7d0391f13ff01ed82798321757599523c52c7f5079c85be2
 
 These aren't bugs in Darcs at all, instead they are normal failures.
] 
[replace debugFail with plain fail
Ben Franksen <ben.franksen at online.de>**20181214150217
 Ignore-this: 9977f48e8d7985f4417a781c59012912676afaac0389b921e123b5552b1e01369d6f8109822f1230
 
 The extra information obtained is usefull to diagnose the error and should
 be available to the user without having to supply --debug.
] 
[fix several uses of error where it should be fail
Ben Franksen <ben.franksen at online.de>**20181214131458
 Ignore-this: 6015e043597a8a27d9aa14ae4c69af282494859347881e3f331c3fe21c90545f496a84ee061da04b
 
 These situations are normal failure conditions and not bugs in Darcs.
] 
[resolve issue2617: convert import crashes with out-of-order tags
Ben Franksen <ben.franksen at online.de>**20190122161346
 Ignore-this: f3789fbca9eea248c160b99717d411037e9597a531c2a053a2c77cd7eb6bba9d1754c97eb9ecfc9b
] 
[Support GHC 8.6/base 4.12
Ganesh Sittampalam <ganesh at earth.li>**20190116064452
 Ignore-this: 7204c5842820f03282b7e5e96d1bc208
 
 Also bump a couple of other versions needed to find a build
 plan with base 4.12.
 
] 
[PatchCheck tests: introduce newtype to implement MonadFail
Ganesh Sittampalam <ganesh at earth.li>**20190116062742
 Ignore-this: 6f9dd8a3c53dbc0448e9f626e101d35c
 
 This restores the pre-MonadFail behaviour of this code
 (which would be to call error)
 
] 
[support QuickCheck 2.12
Ganesh Sittampalam <ganesh at earth.li>**20190116061531
 Ignore-this: e907466ec9d44ac9fc309e40fa82bcfc
] 
[support network 2.8
Ganesh Sittampalam <ganesh at earth.li>**20190116061523
 Ignore-this: 99aec3abd3e81cd4265129b1f3c49f02
] 
[support zip-archive 0.4
Ganesh Sittampalam <ganesh at earth.li>**20190116052802
 Ignore-this: 53bd6a4c63f1dc0c98c2dfa4fe6f578d
] 
[change failable pattern in partiallyUpdateTree to error
Ganesh Sittampalam <ganesh at earth.li>**20190116052216
 Ignore-this: 3441c5152ec694dd8219eb52dce8ee7e
 
 Inspecting the call sites, a failure shouldn't be possible.
] 
[replace failable pattern in existsAnycase with error
Ganesh Sittampalam <ganesh at earth.li>**20190116052121
 Ignore-this: 5fc551bf8dfc9108413e6fdef9eabc50
 
 A failure shouldn't be possible and anyway isn't
 caught by callers.
 
] 
[PrimV1 tests: refactor a bit to avoid failable patterns in do-block
Ganesh Sittampalam <ganesh at earth.li>**20190115070934
 Ignore-this: 1b5fee320d451d3aba6468e0e1652d99
] 
[RepoModel tests: replace Either with an explicit failure type
Ganesh Sittampalam <ganesh at earth.li>**20190115065956
 Ignore-this: 200c9c8fd864a98063dd76a510c9ab0c
 
 This means we can have a non-orphan MonadFail instance.
 
 Immediately before this change fail on this type would
 have just called error, but the code dates from before
 the explicit fail definition was removed from Either in 2010,
 so this probably restores the original intention.
 
 (see https://ghc.haskell.org/trac/ghc/ticket/4159)
 
] 
[in test for issue2271, reset permissions more reliably when done
Ben Franksen <ben.franksen at online.de>**20181214155554
 Ignore-this: 35dbd3b13204d28c8e2f9b8d43ac7d7efe5fbd9637e0ef6b449e34ebdd9e0420ab0fa8d0d1168c92
] 
[in some test scripts, remove test repo before creating it (and not at the end)
Ben Franksen <ben.franksen at online.de>**20181214155405
 Ignore-this: 6cd529ac524dd448b9b9a9640cc60c4af7238bd237b229f9c1ee3d9dd5c2882afb76e85af8f527a1
] 
[several fixes in tests/failed-amend-should-not-break-repo.sh
Ben Franksen <ben.franksen at online.de>**20181214152004
 Ignore-this: 77b3b1d2d3ca76418780d0d78c5f1b4ce8a208b1ece53de05a07eb2a43f6f94107d7f525000e835c
 
 The darcs invocation here failed for the wrong reason (it expected more
 interactive input). Furthermore, issue1406 is no longer an issue as it
 concerns only the old-fashioned un-hashed repo format; the test now checks
 that if amend --test fails, then output of darcs log before and after the
 amend is equal.
] 
[fix in move command after AnchoredPath refactor
Ben Franksen <ben.franksen at online.de>**20181214130414
 Ignore-this: 750bfaad231ee457e9cca7b880a4aa1a4ac9aca4aac542017d60d712403c1b93f943371b2909c29a
 
 The command didn't take into account that pathsFromArgs filters out invalid
 paths. This could lead to crashes (pattern match failure).
] 
[accept issue2614: clone an unclean tag
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20181218174937
 Ignore-this: 9f46d55aa8aa89dee0e0f1ac447c502fffdce1f82e28aff89b05c8916fd695e2362c9f4683203157
] 
[fix darcs diff in issue1959 test on Windows
Ganesh Sittampalam <ganesh at earth.li>**20181208215029
 Ignore-this: de91ae07414817b4117aa4281ba7a247
 
 diff copies the repository with the current permissions,
 and on Windows removeDirectoryRecursive can't remove
 read-only files
] 
[make API of Darcs.Repository.Rebase a bit more type safe
Ben Franksen <ben.franksen at online.de>**20181115215304
 Ignore-this: bf85872ba5d691e64d0f8a3edd25ae3973192f914863fc35b829d67b1c3266d761914a0e60f19ebe
] 
[treat path to unrevert bundle like all other repo paths
Ben Franksen <ben.franksen at online.de>**20181204184737
 Ignore-this: a67547eb79315034ea92fc3b47b1bb2b3484af0a4e5aa07a53b28dd37359a26f089058ba0b3fcdee
 
 This means that we treat it as relative to the repo base directory instead
 of having it depend on the repoLocation of our Repository. Also factors
 unrevertPath to Darcs.Repository.Paths.
] 
[simplify addPendingDiffToPending
Ben Franksen <ben.franksen at online.de>**20180623142436
 Ignore-this: 4b116ac0d5bc2b525409fd0680fb5bca
] 
[remove option --restrict-paths
Ben Franksen <ben.franksen at online.de>**20181112093035
 Ignore-this: 56c0df6c741821d40fea81bcc3929b0dc9a952da023dbed2b2b033f960e1100d0b774168af108829
 
 I can't think of a situation where allowing patches to manipulate paths
 outside of the repository makes sense.
] 
[minimize context inside unrevert patch at the head of the unrevert bundle
Ben Franksen <ben.franksen at online.de>**20181116085505
 Ignore-this: a910c970ca9cf54ba7bbd9c8b639268521630e1d09c9949750b4d647fe27a854ebabe2919c144879
 
 This does not minimize the context consisting of named patches in the bundle
 itself. Instead, only the prim patches that go inside the anonymous patch at
 the head of the unrevert bundle are affected.
] 
[add progress reporting when creating packs
Ben Franksen <ben.franksen at online.de>**20181113172946
 Ignore-this: 10ecae8deda40104793138976c68b752db098925aae5e2d7033000b333d06c84aaf79f7acbba7ac7
] 
[replace Darcs.Util.Workaround.renameFile with System.Directory.renameFile
Ben Franksen <ben.franksen at online.de>**20181204131436
 Ignore-this: a709860ba2dbf746bdf228518560cc0a0caf4bf80c7b2f924a92fd44458a8ab95f51f85b59b78f34
] 
[Darcs.Util.Index: fixed documentation and code layout
Ben Franksen <ben.franksen at online.de>**20181118102326
 Ignore-this: 80f41534e1dbf0a8650ec2d1c70e50e1901fc343feade74c6ab8d92ab8d291e713e63f2b2695ffc
 
 The description of the index format was out-dated. It does now correspond to
 what the code does. It also did not mention the two extra bytes of the item
 descriptor which are now also documented.
] 
[no coloring in progress reports for check/repair
Ben Franksen <ben.franksen at online.de>**20181125134231
 Ignore-this: 4d0334a45065e0f5e703d15415db8e959ecad757d237d546fc4ece5a6079c1a9dfa3d492c81a01e3
 
 For reasons that aren't fully clear to me, colors aren't properly reset when
 using them in progress messages. This has the undesired effect of coloring
 all subsequent messages. The simple solution here is to use renderString
 instead of showDoc to avoid coloring the progress messages.
] 
[layout changes to avoid overlong lines in Darcs.Util.Tree.Monad
Ben Franksen <ben.franksen at online.de>**20181125133350
 Ignore-this: 7ac6d5c541c6478d1b9d5924faadeae03a99ae0175630d3429659169a3deb36ebb98a3537d255e0c
] 
[remove unused/obsolete src/win32/sys/mman.h
Ben Franksen <ben.franksen at online.de>**20181203150453
 Ignore-this: bca7fd944a39e7228d7cefd9c288c6cb1bc798b3bebbf28da9a9ffd4a3b0bbdaa6ed9cfc25612ab8
] 
[slightly simplify withManualRebaseUpdate
Ben Franksen <ben.franksen at online.de>**20181116090156
 Ignore-this: fb30fd9c64bbed4f3cdd88e98cf42f4154a3c4593ec363d664b95512174351d2a45310005afbdae0
] 
[layout in D.UI.C.Amend.addChangesToPatch
Ben Franksen <ben.franksen at online.de>**20181116084217
 Ignore-this: cb3c860f34005a64470e7d90a13383abf000a9d5e41ebac1eba4495ef3657ce08b68b5468ff710b5
] 
[remove duplicate definition of catchall in Darcs.UI.External
Ben Franksen <ben.franksen at online.de>**20181115211847
 Ignore-this: ea0f1fedcdcd8592e3d18925310df3953bd76f123aef0cfcd4197d13de339e32d68ae1123daba9e5
 
 Instead use the one from Darcs.Util.Exception.
] 
[revert command: break overlong lines (layout only)
Ben Franksen <ben.franksen at online.de>**20181115195735
 Ignore-this: 831c4d382396cc6c78c623b07ae27d9b1d6099f9ea431a2f4865d9a2fb6aa5caeef596e6549aeeb6
] 
[Darcs.Repository.Clone: clean up imports from D.R.Hashed
Ben Franksen <ben.franksen at online.de>**20181115170821
 Ignore-this: c22ca2e465523cafdc50caec7a301ec0811c42934fcea032f5cbedc87d500c943a74e176e6edc39
] 
[remove unused functions choosePreTouching and selectTouching
Ben Franksen <ben.franksen at online.de>**20181111194730
 Ignore-this: 1ee9dacd63eb09609bb9e66250282ee9606a8480759b40f77f6bb3babc269820aa8b9fbbfda65b7f
] 
[remove outdated haddocks for revertRepositoryChanges
Ben Franksen <ben.franksen at online.de>**20180727083506
 Ignore-this: 1cadac776484a3ebd88c9b1acf399367
] 
[D.R.Merge: use displayPath for path display
Ben Franksen <ben.franksen at online.de>**20181114210502
 Ignore-this: 1579729958cfa3cde5964db125e126dbd870f95248131fbf4d0f32b6a15fd036905eb9f899606340
] 
[Darcs.Repository.Clone: fix a comment
Ben Franksen <ben.franksen at online.de>**20181113165420
 Ignore-this: ad0f0c784891d3634518a20a9147a32c5cd6b271c23ad2045dff7a0a08298bf378d9cc130b6a37ed
] 
[Darcs.Repository.Clone: turn two comments into debug messages
Ben Franksen <ben.franksen at online.de>**20181113165414
 Ignore-this: 97e1fb6d5b44ded011389eef1ddbf896d3085706c145e59b8af9d0e93e2357569216bcb3eb2492de
] 
[move removeFromTentativeInventory closer to its single call site
Ben Franksen <ben.franksen at online.de>**20181113101957
 Ignore-this: 33863d10e41a0a82de494a7c9d421bec57c1c0e61c6493823200328e715d578ab5649ea2384206ac
] 
[group --reorder under the merge options and improve its help text
Ben Franksen <ben.franksen at online.de>**20181112091218
 Ignore-this: 35d3909ee71127bcc72cf2085237dfb4d30f5d5c3cfdc936c348ee165df0c0c83a01f049bb1deb5d
] 
[remove unused option optimizePatchIndex
Ben Franksen <ben.franksen at online.de>**20181112090705
 Ignore-this: eeaafa598715d563108603e47e22d2293f5ca7f2a675e17f611936a20199f9d56656843a879faa44
 
 This option became a subcommand some time ago.
] 
[removed unneeded pseudo-instances for class Effect
Ben Franksen <ben.franksen at online.de>**20181018102651
 Ignore-this: ff7c46758f59624261bd27d2c155fee465cb12bc2c103f1b1eeb455465f8f77fa1714c12f930209b
] 
[remove unused method effectRL from class Effect
Ben Franksen <ben.franksen at online.de>**20181018085402
 Ignore-this: e0bedb910842dd671484d8a64c19281c878fc41473d112ecd38d4ae8004ac150475f7d31491fe06e
] 
[Darcs.Util.Tree.Hashed: add debug messages and factor out showHash
Ben Franksen <ben.franksen at online.de>**20181204131437
 Ignore-this: d9a153d7f6bf418c0de29f3830ce7f224204bdbdd6b173d6cd15aeff77ef322d82d2cb7594abe209
] 
[create tentative version of rebase patch directly
Ben Franksen <ben.franksen at online.de>**20181204140003
 Ignore-this: b0dc8905d6ad92e7198271f92603f27b7970701ef1d25aa4df535ca61cf1d6cfae178779bfe9d18d
 
 This is safer, since it means that concurrently running read-only operations
 can't see intermediate states.
] 
[in some test scripts, remove test repos before creating them
Ben Franksen <ben.franksen at online.de>**20181204171221
 Ignore-this: ef13010bb8c2b3bc7603fce49c36657590f747a49ed899d9eb222027328d1658ee847c3b47a7ebe0
] 
[resolve issue2441: Use pager for darcs annotate
Eric Kow <kowey at darcs.net>**20181126110104
 Ignore-this: 3dadb5f767322eeb7940edab52791e00
] 
[expand pending_tree in filteredWorking (IgnoreIndex+ScanAll case)
Ben Franksen <ben.franksen at online.de>**20181203185012
 Ignore-this: 4b6b095a8dc1f27d8ca58acb0e01baf9d46e3917708bae39cf290af6c6245da388e58737182d41df
 
 We use the pending_tree for filtering which means it should be fully
 expanded, see the docs for Darcs.Util.Tree.restrict and my comment
 (http://bugs.darcs.net/msg20509). It would be more efficient and elegant to
 do the expanding on demand, but since this is an IO action it would mean
 tree filtering is no longer a pure function.
] 
[resolve issue1959: read-only commands should not need write access to the index
Ben Franksen <ben.franksen at online.de>**20181203183314
 Ignore-this: c9da84b34251d245d37332c347abcd3b62eb1e225299ae494e2b35bffcf94b00c71a37ae8b508bf4
] 
[fix docs, following up on "disentangle D.R.State.filteredWorking"
Ben Franksen <ben.franksen at online.de>**20181203183056
 Ignore-this: d7e19dc70c04faa14db1694163d20c58968a64eea30d18f4f1ca0c73dcd32b0a8acdca16fd78f3c9
] 
[fully respect the useIndex option
Ben Franksen <ben.franksen at online.de>**20181203182954
 Ignore-this: 2ffeb71ab73962267e4db6092fb7e29081faab86419e478f6e26d4685cc133eb8de75f8a8c7f02b6
 
 This hopefully eliminates any remaining unchecked uses of the index.
 Darcs.Repository.State now contains a CPP macro TEST_INDEX to control
 whether some testing code is included that accesses the index /and/ does a
 readPlainTree with an appropriate filter and then checks that the resulting
 trees are equal. We also pass the repoLocation explicitly to readPlainTree
 now (if available), because it turned out that some uses of the functions in
 D.R.State are made with a CWD that is not equal to the repo base dir.
 The implementation of readUnrecorded is now in terms of
 readUnrecordedFiltered instead of repeating ourselves.
] 
[extend test for issue1959
Ben Franksen <ben.franksen at online.de>**20181203182424
 Ignore-this: 9026c9068d961b6d2233aa17c17f6868e4c30bbd1acab560d6c8e812d9ea21e442ead5e7bb0ef95b
 
 It now covers many more read-only commands and also checks with
 --no-ignore-times (for those commands that support it). Also test that for
 repo-changing commands we get a decent error message if _darcs is writable,
 but either _darcs/index or _darcs/index_invalid is not.
] 
[rollback of "resolve issue1959"
Ben Franksen <ben.franksen at online.de>**20181203181310
 Ignore-this: d2a01578d01e78c05b7d39179b4e6118099da55c615c296fb8b87a13813d3fad7e978de7c85508d4
 
 This change is unsound for several reasons. One is that catching permission
 errors is unreliable as it can depend on the OS what kind of IOError is
 thrown. Another issue is that catching these errors may hide problems for
 repo-modifying commands like add and remove where we rely on the index being
 updated or at least being invalidated properly.
] 
[check writability of index when we start a transaction
Ben Franksen <ben.franksen at online.de>**20181116160959
 Ignore-this: 5ce964d90ffa688b1a0f11a426d6439f7a6b24b884ea6136f9acfee69825c4bd67d506c58e6de41e
] 
[Darcs.UI.Commands.Diff: work with a temporary copy of pristine.hashed
Ben Franksen <ben.franksen at online.de>**20181116204307
 Ignore-this: b40d375b7cb2334070ae7459d96c2ca669341b081ccc937689138c18314a3547f89380bd88e170b7
 
 This allows to use 'darcs diff' on a repo where we have no write access to
 _darcs/pristine.hashed.
] 
[fix: insert a valid date when creating anonymous named patch
Ben Franksen <ben.franksen at online.de>**20181116202605
 Ignore-this: 69775e49e45c1591b6858c4580e882795524ba8a442d1be6b4874062444f96e285a828f972ac0f3c
 
 Otherwise we get an exception when we try to e.g. display the patch.
] 
[fix in darcs check: withTempDir -> withDelayedDir
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20181121174541
 Ignore-this: 2a4c73a0cb497de9f2f82b95e72bcc8015f955f327fe47590279c551415d73c68ea5a363cfe07da0
 
 Every now and again darcs check fails for me because it tries to read a
 patch from the temporary directory which doesn't exist any more.
] 
[for Windows, use linkCount and createLink from unix-compat
Ben Franksen <ben.franksen at online.de>**20181203114756
 Ignore-this: 95223a5a6557700b50829d1225f0ad03899d50badf9303ba454237cbd2ca2597cff82a2fb35f3beb
 
 This requires lifting the lower version limit for unix-compat to 0.5.
] 
[re-formulate the set-default hint
Ben Franksen <ben.franksen at online.de>**20181119181913
 Ignore-this: d2d75b79526ecd4c1616935c5202cc86b44b088a178f3fe30910065cd79b14c6ce9de3ecbac762c0
 
 Besides being worded in a less patronizing way, the hint no longer suggests
 to "quit now" unless the command being executed is interactive.
] 
[rollback of "remove the set-default hint" (patch d3dd6e750d102108c77188cb7d4a64a89e59d557)
Ben Franksen <ben.franksen at online.de>**20181119174953
 Ignore-this: 9e3e5b240602c7a521ce096abda2ec258af15265f82f3e8be19f3cc0280c47a9779040e212d88ae7
] 
[correct comment about witnesses
Ganesh Sittampalam <ganesh at earth.li>**20181125122913
 Ignore-this: 6b6396aaf3b2a3708770b5d6c1b85a2
] 
[Minor update to displayPath docs
Ganesh Sittampalam <ganesh at earth.li>**20181125120424
 Ignore-this: 9d975180232db78d8198a6218bc40794
] 
[use the Posix </> in anchorPath
Ganesh Sittampalam <ganesh at earth.li>**20181124230551
 Ignore-this: 892bfb8901b737f0cf5f8c6aea1035fd
 
 Otherwise we get things like ".\foo/bar" on Windows.
 
] 
[increase format version of patch index to 3
Ben Franksen <ben.franksen at online.de>**20181118220405
 Ignore-this: 22dc1b0c44d21b3c651d6960bfb98ab9bc0c7d60201f908e2c33eedc6bf275facc455c97e4964b11
 
 This change reflects that the patch index now uses AnchoredPath instead of
 the old FileName for all paths, and that has different Binary and Ord
 instances.
] 
[document and add property for explodePath(s)
Ben Franksen <ben.franksen at online.de>**20181118155544
 Ignore-this: f2bb069f8fc291b47de0ed50b895f29ea1e79c688601f9c1bee02e82df319b4f8121a63511f5f156
] 
[Test that the released patch index format is handled ok
Ganesh Sittampalam <ganesh at earth.li>**20181119175717
 Ignore-this: 91d2df87348b292665416b056fb27123
] 
[fix warning on Windows x64
Ganesh Sittampalam <ganesh at earth.li>**20181118215803
 Ignore-this: 5e9ed110b360fb139a211c3024db0d59
] 
[bump Win32 upper bound to support 2.4.x, 2.5.x, 2.6.x
Ganesh Sittampalam <ganesh at earth.li>**20181118215705
 Ignore-this: 108c04577fedfe2b32355899a1291cc1
 
 Although 2.7 and 2.8 are available, process doesn't support them
 so there's no install plan to test with
] 
[fix warning on Windows about GHC.IO.Encoding being unused
Ganesh Sittampalam <ganesh at earth.li>**20181118151951
 Ignore-this: f3c95e40d32286558fd948c140407d34
] 
[fix warning on Windows about noWorkingSendmail being unused
Ganesh Sittampalam <ganesh at earth.li>**20181118151752
 Ignore-this: ee0649ed64a19e257f3453900dd6a833
] 
[issue2605 test is currently failing
Ganesh Sittampalam <ganesh at earth.li>**20181118111030
 Ignore-this: 57f3c4717ed827ec0989483a1a29a13b
] 
[Windows fix for rebase-new-style test
Ganesh Sittampalam <ganesh at earth.li>**20181117105243
 Ignore-this: 4273e412fc7fe16b15655b4930e4fdea
 
 C:\blah is interpreted by tar as a network path, so we have
 to pipe it input instead.
] 
[Re-mark issue1461 test as failing.
Ganesh Sittampalam <ganesh at earth.li>**20181116154319
 Ignore-this: 65df924ac46deea7e6bb8db657f78107
 
 This test is intended to check behaviour on case-insensitive filesystems,
 but could never work in practice. It passed by accident for a while on
 Windows because it seems && doesn't interact properly with set -e.
 
 Possibly this test should just be deleted, it's not clear what value it
 could ever have.
] 
[fix test for issue1923 after fix for issue2603 broke it
Ben Franksen <ben.franksen at online.de>**20181115163444
 Ignore-this: b6bef74e36f1e46bb067f9a247bfa1902dd111667c01f541b73a6ac9eb3bba545c159b2ebd4dd11b
 
 The fix for issue2603 adds a call to patchsetConflictResolutions on the
 newly cloned repo. This procedure must look at the content of every patch in
 the head inventory i.e. all patches after the latest clean tag. This
 effectively forces these patches, so they are no longer lazy. So the bogus
 sources that the test fakes for the new repo aren't even looked at. The fix
 is simple: just record a tag after the single patch.
] 
[resolve issue2603: warn and mark conflicts when cloning
Ben Franksen <ben.franksen at online.de>**20181114210030
 Ignore-this: 4d617184171486dfdb64dcb87f81057896d0fd0f2db1d9f189ab8eb30fb7ecc494463966f9e69252
] 
[accept issue2603: clone repo with unresolved conflicts
Ben Franksen <ben.franksen at online.de>**20181114203228
 Ignore-this: b541ac623a22499592261783d33eaf90595ca51e331809e4d371bf8bf87d21ca4d7116290d409b12
] 
[resolve issue2608: download _darcs/hashed_inventory separately
Ben Franksen <ben.franksen at online.de>**20181115151037
 Ignore-this: c91fe671549da64b227d9a5b4934b4850e1994a06fd471ae8a89dc39ee4253b8278360f75acc4f23
] 
[accept issue2608: clone via http with outdated packs
Ben Franksen <ben.franksen at online.de>**20181114151045
 Ignore-this: f823da22aea74f94e578bb64763d3ed88109b4cb22c9b2c9d7cfb1f2c9b6c19449c661d93e3c16d5
] 
[new implementation of http client based on http-conduit
Ben Franksen <ben.franksen at online.de>**20180925170311
 Ignore-this: ebbdc5b96d2e6ca831e98991a4e6e7084a8f5ebf027219a9029daf689ea423b6387cf79d55f8b61c
 
 This implementation does not use our self-written download manager in
 Darcs.Util.Download, which is needed only to interact with libcurl. Instead,
 speculating on a remote file is done simply by running the action in a
 background thread (using async) and relying on the connection manager that
 is supplied with http-conduit. This works pretty well and gives us the full
 functionality (including HTTPS) in a portable manner, so I switched the
 default for the curl flag in darcs.cabal to False.
] 
[add missing space in new sources hint
Ben Franksen <ben.franksen at online.de>**20181018224932
 Ignore-this: 6c44df16075cead72d67ea5a98ac176234dd87a8d9879742ff1b6238b23e1eae8d18deeeaeb4c101
] 
[remove duplicate definition of invertCommuter as inverseCommuter
Ben Franksen <ben.franksen at online.de>**20181031160755
 Ignore-this: 805b23e32cfafa5b956b34214a043702ce7cd910a30d455489cd5be81ba14ef29acf21f94b6c6506
] 
[remove the "darcs failed:" from error messages
Ben Franksen <ben.franksen at online.de>**20181004233919
 Ignore-this: df75d0f9596719f1092e2e4b7d5fbc83b704e8d6062942ed50fb4e8808ce576af32069a61f90bac1
 
 Most error conditions reported by darcs are due to invalid input from the
 user, or indicate non-existence of things (patches, files, ...). It makes no
 sense for darcs to take the blame for that, which is what the phrase
 suggests to me.
] 
[remove the set-default hint
Ben Franksen <ben.franksen at online.de>**20180929200330
 Ignore-this: 19ec7bd06f5fde0e4def775f2c53488d876528ff0183bde1a8baac573d611b35b15f5abb9b41125
 
 This hint was probably added when we changed the default for push and pull
 to --no-set-default, so that users could get used to the new behavior. This
 has been many years ago and the hint nowadays looks rather strange and just
 causes confusion for newcomers or casual users. A by-product of this change
 is that the code for handling --set-default gets a lot simpler.
] 
[remove hint "Do you have the right URI for the repository?"
Ben Franksen <ben.franksen at online.de>**20180929201618
 Ignore-this: ee37b73da77dd05e95a02bc07c8b09c0
 
 This hint serves no purpose at all. We already told the user the name of the
 repo and that we don't recognize it as one. What more is there to say?
] 
[re-formulate the bad sources hint
Ben Franksen <ben.franksen at online.de>**20180929164218
 Ignore-this: 285adfa71d31af2774098b4050298dee
 
 First, it no longer shouts at the user. Second, instead of saying what the
 user "should probably" do, we give a clear recommendation, but make it
 conditional on circumstance (the user may want to keep the source if they
 plan to restore access to it).
] 
[bugfix in Darcs.UI.Completion
Ben Franksen <ben.franksen at online.de>**20181022100152
 Ignore-this: 7de11c6d428c69126cb4a93d6f84523b7974c8bae77bcc1b11a8bc873b47d4cb506800adbbbd2e10
 
 Since we use anchorPath "" now to convert AnchoredPath back to FilePath, we
 must not 'drop 2' from the result.
] 
[resolve issue2604: remove --reply and related options
Ben Franksen <ben.franksen at online.de>**20181012230927
 Ignore-this: 95ca795c7cb43c7400f23da7256516130bb730069129bc7d83bb43e73c2f5eeaca02c19423c9bf4a
 
 The options are: ccApply, reply, happyForwarding and were supported by the
 apply and push commands. This patch removes all conditional compilation from
 Darcs.Util.Compat. It also removes the dependency on the random package when
 building for Windows.
] 
[disentangle D.R.State.filteredWorking
Ben Franksen <ben.franksen at online.de>**20181002212643
 Ignore-this: 366cca7d58b10eb1437fec6dc11c9e2a79d59d3a7173967b6a40bb41b98b35f554c30c115b231e32
 
 Swapping the order of the cases and then trying to pull out applyTreeFilter
 relevant made it apparent that
 (a) using the index in the IgnoreIndex case can be replaced by passing the
     pending_tree instead, and
 (b) applyTreeFilter relevant was missing in the UseIndex+ScanKnown case.
] 
[accept issue2605: darcs crashes with duplicate patches
Ben Franksen <ben.franksen at online.de>**20181028134718
 Ignore-this: d84ccf2439799ee9122e3dcdcf40fb9c4d97ae35d5dc035c509591ca8e689d1beb8d78d819f2ca3c
] 
[fix in test script: pull "cd .." into if block
Ben Franksen <ben.franksen at online.de>**20181021220011
 Ignore-this: 9c3069bc621a22c9f19906ba4aafcb7ed421220a69f3468955439e0402930dbd2e5a75edda4c819b
 
 This was broken by patch e8d4e47572b175ea769524d5e09b86464eba7a4e
   * fix: fail if pending patch cannot be parsed
] 
[move cache related global variables to D.R.Cache and make them thread-safe
Ben Franksen <ben.franksen at online.de>**20180929163553
 Ignore-this: b71850c7ac907031bf0f2e3ce755f276
 
 The two global variables are reachableSourcesList and badSourcesList and
 they are exclusively used by D.R.Cache. So it seems cleaner to me to
 encapsulate them in the same module. They use MVars now to make access
 thread safe. While apparently the code seems to work with IORefs, the cache
 functions /are/ used from multiple threads, so MVars are the safer option.
] 
[fix in harness: don't suppress output from failed HUnit tests
Ben Franksen <ben.franksen at online.de>**20181011074925
 Ignore-this: 23ee906a82e661bf4b3d3bf5255ce95e03c903f3dfd0c28eab57e0c373f00c3aa6dead050b95faf7
] 
[improve help for _darcs/prefs/sources
Ben Franksen <ben.franksen at online.de>**20181001084604
 Ignore-this: 1058b458aeb633e6c666a779efb6c0e1da902f080937d7ab7d553cc20864be2c590b61a0e4a5c646
] 
[add subcommand 'darcs help preferences'
Ben Franksen <ben.franksen at online.de>**20180930172751
 Ignore-this: eea87073ad1904696dc1cf14ae2e0692f40620ce8425a1f8a8581b4ddc0ca1c1be055b840695c53f
 
 This is exactly the same as the chapter in the manual, slightly re-formatted
 for terminal output.
] 
[update help for defaults file(s)
Ben Franksen <ben.franksen at online.de>**20180929112300
 Ignore-this: d84a7d7b8521c8b08927e6c7d010b731
 
 The information given there was partly out-dated.
] 
[output patch apply success message with putInfo
Ben Franksen <ben.franksen at online.de>**20181012231728
 Ignore-this: d4fa0b2d678ce87502ad4247e84a3b0fbc293f789db747613f5a566ebd91a3341ca926c3b2756793
] 
[print remote execution failure message to stderr
Ben Franksen <ben.franksen at online.de>**20181012213658
 Ignore-this: 503c5d9b507d60924df276a19efa4be8897c9038ae83368a484df90e1db47470cc4f7838b8cd3ca8
] 
[remove TypeOperators language pragmas
Ben Franksen <ben.franksen at online.de>**20181012212755
 Ignore-this: 31cdee26042be7f7535f3016e6debf4f3c735ba696d597119bafb92a8b5e27c5a0dd548b922d56ff
 
 This extension is already globally activated in the cabal file.
] 
[use anchoredRoot instead of AnchoredPath [] in index code
Ben Franksen <ben.franksen at online.de>**20181008172306
 Ignore-this: f261343e462904df374d74a09eb75322e36cc1da3f2537dc5a7737c742beeb9a59a5c142624690b
] 
[rename repodir to repourl in D.R.Clone
Ben Franksen <ben.franksen at online.de>**20180930210635
 Ignore-this: 641d3c6fc205502c231429d5144cf91fda3edeb8ec757378a01506b6c32d0a122352644ea60ac1ea
] 
[import MVar from Control.Concurrent.MVar, not GHC.MVar
Ben Franksen <ben.franksen at online.de>**20180930172656
 Ignore-this: 5dc6d9aa0a272a6593174278c6e83712aebc42170ef6d48f2fd9073821c1d6fc8e3a2e05fa06b21b
] 
[D.P.Match: layout changes to avoid overlong lines
Ben Franksen <ben.franksen at online.de>**20180923174752
 Ignore-this: 607cfd8e704e83e5d59f6e0f221f8f97
] 
[fixed typo in doc comment
Ben Franksen <ben.franksen at online.de>**20180923174723
 Ignore-this: b448b80144e5fe6be83a605a69a5269
] 
[avoid importing Data.ByteString.Internals
Ben Franksen <ben.franksen at online.de>**20180923172517
 Ignore-this: 5d667b6523d57d82664ddc3c5a03a76f
 
 Even though here it was only for the c2w function, we should reduce access
 to BS internals to the absolute minimum necessary.
] 
[add doc comment to commuteNoConflicts member
Ben Franksen <ben.franksen at online.de>**20181016075318
 Ignore-this: 39fa265ca878ec303331cc76839690626f54075644836452c789234f7d28739977060bc2aa51a9eb
] 
[patch index: re-format getRelevantSubsequence
Ben Franksen <ben.franksen at online.de>**20181015070058
 Ignore-this: 60d62e666c5c3d0d41119b2643fd3cc1c44b207db492a82f0ae89c5381f8f896c9a0eb882aebf10f
] 
[patch index: beautify layout of data definitions
Ben Franksen <ben.franksen at online.de>**20181014090646
 Ignore-this: 5c7670588e7557a900a87304d6b4b63a313f9c367be86f0d21b2d34113a9ce8697fe51bb4e0fc35c
] 
[patch index: replace fn2fp with displayPath
Ben Franksen <ben.franksen at online.de>**20181014090111
 Ignore-this: ba08371018fffd2957a8616c50e91233e75c752557a12a6ad6bb8d56d405d4cfdf58da2ff12c5aff
] 
[patch index: clean up import and export lists
Ben Franksen <ben.franksen at online.de>**20181014085600
 Ignore-this: 384f78dd7cf592b3a0e918338fa1a8b7a5b6e5e4ece20896cca4756d02812eddf132623e2d6f654e
] 
[add progress reporting to patch index
Ben Franksen <ben.franksen at online.de>**20181014083856
 Ignore-this: d6caeb553930ada3e7c4ae4f6fa99130bb30478e07b0e0e9df7962465fb3dff31e36c148727d6609
] 
[clean up code layout in Darcs.Patch.Index.*
Ben Franksen <ben.franksen at online.de>**20181014082408
 Ignore-this: 81aafc2e3b2906efadc0f92e63ba56eb82b02861bfed572ed8bfee92aed8e1d3b0a1ac336c4a57ed
] 
[fix in patch index: use removeFile, not removeDirectoryRecursive to remove noPatchIndex
Ben Franksen <ben.franksen at online.de>**20181014082907
 Ignore-this: e7aae98873b4c7a3f83536b2228cedc8de9ed534413f2ea7caa4e303d165bd884c7cf1d9c617ec8
] 
[fix in patch index: avoid generating repeated move patch mods
Ben Franksen <ben.franksen at online.de>**20181015070530
 Ignore-this: 5f246dec28097e7d82880012fa61dcecb782eb181c91bb8bb3d6d3300dfbbed34833da3548f11816
 
 This regression was due to a mistake in the AnchoredPatch refactor.
] 
[adapt a test script: darcs no longer fails to detect this move 
Ben Franksen <ben.franksen at online.de>**20181012200829
 Ignore-this: ad85570badfc7869b787b22eca3ebafc17a8084c3f99981642111298d30857d2a4d559435a3763ba
 
 This was fixed by the FileName->AnchoredPath cleanup. I have no idea how or
 why in particular, except that we save a lot of tricky Char/String fiddling
 some of which may have been buggy.
] 
[bugfix in remove command: don't allow removal of root
Ben Franksen <ben.franksen at online.de>**20181013192349
 Ignore-this: d750b33928bd5db447f67b0491866a0b72fab222fc9a38eda0e7df01e75732d6b91eabfac9604856
 
 This will otherwise create an invalid pending patch causing subsequent darcs
 invocations to crash.
] 
[bugfix in whatsnew: must use chooseTouching, not choosePreTouching
Ben Franksen <ben.franksen at online.de>**20181009110101
 Ignore-this: 9048dafd0e2f4f2a07f9096a556517a27c0979d1dd2b7d678d97d4a17719f432c62b75486c7c9102
 
 This bug was previously hidden because the old effectOnFilePaths did not
 always do the right thing. I trust the much simpler version that works with
 AnchoredPaths more that the old version that fiddles with the String
 representation. chooseTouching also makes more sense when you think about
 it: if we invert the patch that adds the new files then its effect on the
 paths is to remove them; thus choosePreTouching removes the interesting
 paths from its input before it calls chooseTouching, which gives us wrong
 results (now).
] 
[improve wording of warning message in maybeFixSubPaths
Ben Franksen <ben.franksen at online.de>**20181013225723
 Ignore-this: bc539b5d6e5d0c5783d0c157b4078a3f1878ac48ded39eeaa74a5d591a37dae163910373cd217fd8
] 
[fix: fail if pending patch cannot be parsed
Ben Franksen <ben.franksen at online.de>**20181011000440
 Ignore-this: b471afc641930b77419f83273225c7fcc8de7ab0c1999aceccac389f30e92ccf5f7b794ed8fa9cd3
 
 The previous behavior was to silently ignore pending. This is bad because we
 want to know if the pending patch is corrupt. Note that parsing is now
 stricter and requires the leading "./". This invalidates some of the tests
 for darcs repair since we cannot record a pending patch with an invalid
 file path.
] 
[make test script independent from the order in which prim patches are offered
Ben Franksen <ben.franksen at online.de>**20181012200408
 Ignore-this: 86430d193e96149c52111830861a788557e2c3e74dcba80241b0b173e8296a3693df98d05943c987
 
 The specific sorting order for prim patches in a record or amend is
 something we never specified (and I guess we don't want to do that), so our
 tests should not rely on it.
] 
[make some test scripts more robust against change in wording of messages
Ben Franksen <ben.franksen at online.de>**20181012125518
 Ignore-this: 1e73f8551767f39caf4120e1874bd3528a5acb353b6dbccb6e721e714b49eb8d1836965feb6142b6
 
 It shouldn't matter whether darcs says "We have conflicts..." or "There are
 conflicts..." etc.
] 
[rename FileName to AnchoredPath and remove the type synonym
Ben Franksen <ben.franksen at online.de>**20181011212536
 Ignore-this: 884cf842b0855404bb9300f92aaac123040e122ca3963ce4fef20880ff80ac8789379834ed1d2561
] 
[use AnchoredPath instead of FileName for internal path representation
Ben Franksen <ben.franksen at online.de>**20181011211834
 Ignore-this: 4a62454e764a04280bc2fe153fce932dc5e5f555e8629be860c5e261167434e5e2ecf3564f551d8
 
 This is a large patch that touches many files. I have tried hard to make
 reviewing it as easy as possible by avoiding changes that aren't necessary
 to achieve the goal. For instance, in this patch, FileName is still used but
 is a synonym for AnchoredPath. I have resisted the temptation to include
 cleanup changes, except where it was necessary for me to make sense of
 existing code.
 
 AnchoredPath is now used throughout, from the UI down to the patches
 themselves, for all paths that potentially reference user content in a
 repository. This means paths under _darcs are /not/ included, and neither
 are paths /to/ a repository or a cache or other files not under darcs
 control.
 
 Arguments from the command line are sanitized and converted to AnchoredPath
 early on. This is now concentrated in two routines: pathsFromArgs, and
 pathSetFromArgs, see their documentation for details. We convert to FilePath
 only for IO operations or for display to the user.
 
 Parsing of prim V1 patches is a bit stricter now: it fails if paths are not
 explicitly relative i.e. start with "./". The standard constructor for the
 Name type (makeName) now checks that the invariants aren't violated, that
 is, a Name is never empty, ".", or "..". Unfortunately, the index code still
 needs to use unsafeMakeName because it violates these invariants, at least
 temporarily.
] 
[handle binary patches in applyAndTryToFixFL (for prim V1)
Ben Franksen <ben.franksen at online.de>**20181018192647
 Ignore-this: f1d85fc00500c489122222d183c05db3ea6c118b6f5f7dd61db26465191d2941bffb56a07b6f36aa
 
 Darcs's conflict resolution of binary patches is completely broken.
 Apparently, it leaves pending in an inconsistent state which then gets
 recorded by unwitting users. This happens a lot lately where I work.
 With this patch I can at least use 'darcs repair' to fix the broken repos.
] 
[fix nonsense cases for decoalesce
Ben Franksen <ben.franksen at online.de>**20181017075132
 Ignore-this: d358e0a62ba953deb90c465a9de6ea5b1a4ebf68c54a0d7190de4c7334a8c7e8d54c3d83779afd62
] 
[add test that decoalescing a move works properly
Ganesh Sittampalam <ganesh at earth.li>**20181016173931
 Ignore-this: b29b3df0f261b383b7ef147e4615126b8b3e8489183edaaad0118e72933c47b21eb9fbbaa36884c7
] 
[delete commented out code
Ganesh Sittampalam <ganesh at earth.li>**20181017054933
 Ignore-this: 141d9e1511190a3bc6dd0d60c263a356
] 
[move mangleUnravelled to new class PrimMangleUnravelled
Ben Franksen <ben.franksen at online.de>**20181003184913
 Ignore-this: 1ba0a4b9437bc75f58db069ed33277c4067516fe61fa9da92d2706fe6232ecd3b8fcb2029724071
 
 This refactor serves two purposes: First, we isolate yet another bunch of
 code that heavily depends on Prim.V1, similar to the recent introduction of
 PrimSift. Second, while this is support code for generating the conflict
 resolution markup, it is not related to conflictors or conflicts per se; in
 fact, it works on and uses only features of prim patches.
] 
[remove excessive debug output in D.R.HashedIO
Ben Franksen <ben.franksen at online.de>**20180930172235
 Ignore-this: e874542daf908b7bbbd67aa6fa1636b5f42799d1a6f2c01f187b11495532282d1de5b1da39eceffd
] 
[eliminate hard-coded repo paths from the UI layer
Ben Franksen <ben.franksen at online.de>**20181003185748
 Ignore-this: f90032e9a8e52b7f3fc55295befa08f03ac3fede42a495a2b0c91feda1b963431ae757f6c2f48010
 
 There is one exception in darcs convert where we create a "marks" file
 inside _darcs but I guess this is an ad-hoc addition.
 
 Note that this is the first time this operation of concentrating repo paths
 to a single module actually pays off: in the convert implementation we used
 a wrong file name _darcs/tentative_hashed_pristine (the correct name is
 _darcs/pristine.tentative). So this also fixes a bug.
] 
[fix in output of log command
Ben Franksen <ben.franksen at online.de>**20181007165339
 Ignore-this: 1c8666e31ec6b5103bad9b9864b09faa70849f2e357350e75b11ed7345d912f39f823dc9b643ed80
 
 I think the 'not' here got lost during a refactor.
] 
[rename test for issue1702 to mark as failing
Ben Franksen <ben.franksen at online.de>**20181011221811
 Ignore-this: 7520b0434b9aad32d36aca23914164e765bc3843dcaeacee7c8df5ebd349c2b63b91b1fd34188dfa
] 
[fix typo in test comment
Ben Franksen <ben.franksen at online.de>**20181011095256
 Ignore-this: 8b2d09eb719fea4c38420d15ea286fc0225f3ba56e0cb97876547eb06d91214c8e6b4bdb1a12d14f
] 
[bugfix in identifyRepositoryFor
Ben Franksen <ben.franksen at online.de>**20180930170316
 Ignore-this: 294bceca658be9156aea2fb1092c428
 
 The problem may be due to a misunderstanding on my part when I refactored
 this code for the first time. The first parameter is not necessarily teh
 source and the second not necessarily the target. In fact, these roles are
 different for e.g. push and pull. Instead, the first is the local repo and
 the second is the remote one. To call transferProblem correctly requires
 that we know whether we are going to read or write so we pass that as an
 additional argument.
] 
[fix test for issue1702
Ben Franksen <ben.franksen at online.de>**20181003182115
 Ignore-this: 5ba08d9e367248f2f01b157503871de14a8b3066924c20dab76c28af94bd61a0fc34a6d8db45ba20
 
 This test was completely broken and therefore always skipped.
] 
[throw away test repo dirs before running test
Ben Franksen <ben.franksen at online.de>**20181003145126
 Ignore-this: b7f0639cba50a400e3c1a5b8a5cb8d703906be2d64322c3771d24edce5f9703838f1f86fbb65a205
] 
[fix location of global cache dir in tests
Ben Franksen <ben.franksen at online.de>**20181003144928
 Ignore-this: 9b0ea47155c51b4ec56369281f50bb309df8cc2b9f7e57a889dae0e42831b3da9a7ad054ddd7c88f
] 
[fix in tests/lib for parallel testing
Ben Franksen <ben.franksen at online.de>**20181003143651
 Ignore-this: caeba3eb6860a6573d7512974f8539131c58113b6cf883e3c0836ca16669f778a2eb26f4468eeee9
] 
[resolve issue1959: catch permission errors when accessing the index
Ben Franksen <ben.franksen at online.de>**20181002230526
 Ignore-this: 2477c259bf7e9998c699b56a13dccc2187839f5271be678f85e6f2c86bc102e313526f4799d14da9
] 
[fix: don't throw away pending in 'optimize upgrade'
Ben Franksen <ben.franksen at online.de>**20180922154303
 Ignore-this: c3c6175aeec5aa523bca344542a5dadf
 
 There is really no need to do that since pending isn't hashed anyway.
] 
[cleanups in D.P.Named.Wrapped and D.P.Rebase.Container
Ben Franksen <ben.franksen at online.de>**20180923165257
 Ignore-this: 3bb837839402225f08a6a98845817561
 
 This mostly removes or fixes outdated docs.
] 
[use cryptonite instead of cryptohash and random
Ben Franksen <ben.franksen at online.de>**20180921142554
 Ignore-this: 331cdff4ee3a495fd0c8fbcb2a2563d5
 
 This also replaces our own implementation of SHA1.
 
 It is unfortunate that we have to add the memory package as a dependency
 but there is currently no other way to get at the content of a Digest.
] 
[fix ./tests/network/issue1932-remote.sh
Ben Franksen <ben.franksen at online.de>**20180918020909
 Ignore-this: 6880443e0790ca5878d66d8f48ba4bee
 
 The error message from ssh has slightly changed. We now test it in a more
 tolerant way.
] 
[include clone command in test for new-style rebase
Ben Franksen <ben.franksen at online.de>**20180923171442
 Ignore-this: eced0894ee72c548e10975cb771b12d9
] 
[fix error messages for clone/transfer from repo with old-style rebase in progress
Ben Franksen <ben.franksen at online.de>**20180923171927
 Ignore-this: 38e289ce63daf097136a68beabbea4be
] 
[add new repo format new-style-rebase-in-progress
Ben Franksen <ben.franksen at online.de>**20180922212954
 Ignore-this: 3079b6c35835cc0dec6bdd0b4e519083
] 
[factor yet another bunch of repo paths to D.R.Paths
Ben Franksen <ben.franksen at online.de>**20180922153612
 Ignore-this: 4be35b34f99043bb88979727aa0c7a6
] 
[avoid needless String/ByteString conversions when reading format file
Ben Franksen <ben.franksen at online.de>**20180922122839
 Ignore-this: d9ebfdc76eda57e29f7dba52b122f0af
] 
[adapt rebase tests to new style of storing rebase patch
Ben Franksen <ben.franksen at online.de>**20180923130710
 Ignore-this: 837a29cce94a5b868cf29ee568a73385
 
 It is now okay to transfer patches between repos with new-style rebase in
 progress; these operations ignore the rebase patch.
] 
[reliably fail if we detect that an old-style rebase is in progress
Ben Franksen <ben.franksen at online.de>**20180920135615
 Ignore-this: fc4023a78ddae501af398916c1b4554f
 
 The trick is to check if the repo type is tagged with SIsRebase, which means
 that the repo format has rebase-in-progress, and then count the suspended
 patches in the new-style rebase patch. If it is zero we can assume that we
 have an old-style rebase in progress.
 
 While the check itself is simple, making sure it is called with the right
 parameters at the right time is not. One problem is that we must make an
 exception for the 'rebase upgrade' command. This is achieved by adding a new
 kind of RepoJob (OldRebaseJob) just for this command. A further complication
 arises because startRebaseJob is called with an SIsRebase-typed repo
 regardless of whether a rebase was in progress initially or not. In this
 case we cannot decide whether to run the check based on the repo type alone,
 but instead have to (re-)test the format stored in repository token.
] 
[add command 'rebase upgrade'
Ben Franksen <ben.franksen at online.de>**20180919201151
 Ignore-this: 2336365ca25c08b3366c2a05f2a6ac8
 
 This required a few additional refactorings mostly in D.R.Hashed. We lift a
 local function to the top level that (lazily) reads the patches from a
 single inventory. Since this does not return a PatchSet but only an RL of
 PatchInfoAnd, we can generalize it to return PatchInfoAndG and so can be
 used with WrappedNamed instead of Named. The WrappedNamed has been
 resurrected and largely cut down to what is needed for this single purpose.
] 
[use englishNum for correct grammar in rebase status line
Ben Franksen <ben.franksen at online.de>**20180919231029
 Ignore-this: cfca8a805b760612c7ddef031445daef
] 
[add PatchInfoAndG which is polymorphic in the named patch type
Ben Franksen <ben.franksen at online.de>**20180919095655
 Ignore-this: aa2fdfd81cb236f2db7886dcbc7fb7cc
 
 The standard PatchInfoAnd is now a type synonym that fixes the named patch
 type as 'Named'. Unfortunately this required the addition of Eq2 constraints
 in lots of places.
 
 The goal of this generalization is to be able to convert old-style rebasing
 repos, for which we need to read PatchInfoAndG with a simplified version of
 the old WrappedNamed as the named patch type.
] 
[remove the WrappedNamed layer
Ben Franksen <ben.franksen at online.de>**20180918171323
 Ignore-this: 2f29e084bd43127dcda265f3729ee882
] 
[two fixes in clone and convert import commands
Ben Franksen <ben.franksen at online.de>**20180918021046
 Ignore-this: 151345be0c286e0ef17c07cb67593fe0
 
 The bug was in both cases that finalizeRepositoryChanges was not correctly
 paired with revertRepositoryChanges. This was exposed by the new way of
 storing the rebase patch, which crashes when it tries to rename the
 tentative rebase patch back to its final version.
] 
[store rebase patch at the repo layer instead of mixing it with normal patches
Ben Franksen <ben.franksen at online.de>**20180918170040
 Ignore-this: b53e98ddc25a3b21a5a30eb552e1f5b0
 
 This does not yet do away with the WrappedNamed layer and the
 RepoType/PatchType cruft, which will be done in a second and third step.
 Some tests now fail which is due to bugs which are only weakly related to
 the change made here, so will be fixed in a follow-up patch.
 
 Note that this changes is incompatible in that previous versions of darcs
 can't handle a repo with a new-style rebase in progress and vice versa. This
 is something we cannot avoid unless we keep all the old code around, which
 would reap us us of most of the benefits we get from this change.
] 
[move more repo paths to D.R.Paths
Ben Franksen <ben.franksen at online.de>**20180702165826
 Ignore-this: 8d1d58ce13ee439349aaffd04d956dba
] 
[fix updatePending and rewrite docs
Ben Franksen <ben.franksen at online.de>**20180826172620
 Ignore-this: 83074870244355839343b5df4147662
 
 The previous specification and implementation was invalid, because it did
 not take hunk splitting into account. This resulted in crashes when we use
 interactive hunk editing with a non-empty but unrelated pending.
] 
[simplify decoalescing and add all missing cases
Ben Franksen <ben.franksen at online.de>**20180922090228
 Ignore-this: 2d01ab230c49ea50f29d60620f146078
 
 Decoalescing can /almost/ be defined as decoalesce x y = coalesce y^ x.
 There are only a few cases that need to be handled specially, see comments
 in the code for details. The simplified implementation can now handle hunks
 and token replaces, too.
] 
[clean up imports in Darcs.Patch.Ident to avoid warnings
Ben Franksen <ben.franksen at online.de>**20180917115841
 Ignore-this: 432ee51baa22ac2711e83bba3a24ef75
] 
[add class Ident to abstract over patches with an identity
Ben Franksen <ben.franksen at online.de>**20171029221412
 Ignore-this: 4fc76e8ecaca72ffc59c9f54e0444788
 
 This change is a preparation for the addition of identifiers to prim
 patches, so we can use the same algorithms for them.
] 
[document D.P.V2.RepoPatch.allConflictsWith
Ben Franksen <ben.franksen at online.de>**20180524155330
 Ignore-this: 947153a5cc6415fd3c317e913b71d391
] 
[added foldRL_M, foldwFL, and foldwRL, renamed foldlFL/RL to foldFL/RL
Ben Franksen <ben.franksen at online.de>**20171101004239
 Ignore-this: 36ac70895a164b1f81af8cbd463b20a
 
 First, the renamings (removing the 'l') have been made because (a) the name
 is wrong for RL, which is actually right associative, and (b) because these
 are both the "natural" folds, i.e. the ones that replace the cons operator
 with a function.
 
 The other functions aren't used, yet, but will be used in the upcoming
 addition of RepoPatchV3. The 'w' variants allow the transformation of
 witnessed values, they are similar to foldRL/FL_M just not monadic.
] 
[clean up partitioning functions and export primed versions
Ben Franksen <ben.franksen at online.de>**20180914070022
 Ignore-this: 37e53e60e2aedb777502f7b3c2e44c48
 
 The primed versions have been slightly modified in that they do not reverse
 the result, leaving that to the caller, if needed. Also, partitionRL' now
 returns a middle part similar to partitionFL'.
 
 The implementation is now slightly optimized: instead of trying commute
 first and only commuteWhatWeCan if that fails, we can use commuteWhatWeCan
 right away and pattern match on the dependencies.
] 
[layout fixes and a trivial refactor in D.T.P.Check
Ben Franksen <ben.franksen at online.de>**20180915075933
 Ignore-this: 453ec8305f86cd2fe939c7b7d51f1c4d
] 
[more informative output when permutivity tests fail
Ben Franksen <ben.franksen at online.de>**20180908210028
 Ignore-this: bb552561a48ea4cc8c247fa5214ed515
] 
[move mergeEitherWayValid from V1Set1 to Generic
Ben Franksen <ben.franksen at online.de>**20180502071708
 Ignore-this: 2c925f24883f80cfe7b6e0e2bc91b57e
] 
[fix comment and remove out-commented code in D.T.P.A.PrimFileUUID
Ben Franksen <ben.franksen at online.de>**20180502065405
 Ignore-this: dc1ca6f29eae22a0142fea3f16cd87d2
] 
[reformat parts of D.T.P.Arbitrary.Generic to avoid overlong lines
Ben Franksen <ben.franksen at online.de>**20180502065049
 Ignore-this: b452772137b0382324ff993713766a0
] 
[fix accidental module name change in import list
Ben Franksen <ben.franksen at online.de>**20180914210037
 Ignore-this: 3f2effe014b59f6ce2c548cbe70825e4
] 
[document laziness of commuter functions and slightly improve commuterRLFL
Ben Franksen <ben.franksen at online.de>**20180911184016
 Ignore-this: 34e7f8b5428b88321be57de62093f869
 
 The result lists of commuterRLFL are now produced in an alternating fashion,
 so that both can be consumed lazily (from head to tail).
] 
[make Commute a superclass of CommuteNoConflicts
Ben Franksen <ben.franksen at online.de>**20180911220005
 Ignore-this: 1b0320b60ba26eb2638dd5848589d239
] 
[make CommuteNoConflicts a superclass of PrimPatch
Ben Franksen <ben.franksen at online.de>**20180908165001
 Ignore-this: 722e6ad73533f93801d5437ff2dcd4f8
 
 This allows to use mergeNoConflicts for prim patches. An alternative would
 be to scrap CommuteNoConflicts and instead add commuteNoCnflicts to the
 Commute class.
] 
[use generic commuter functions to scrap boilerplate
Ben Franksen <ben.franksen at online.de>**20180908143225
 Ignore-this: 2c538f1c8f85f79709fe21a05fc00242
] 
[factor CommuteNoConflicts to its own module
Ben Franksen <ben.franksen at online.de>**20180908111336
 Ignore-this: c9bc4844fa5d5d9008a9628ca067f4e0
 
 Also improved the documentation for it and for mergeNoConflicts.
] 
[replace D.UI.C.Util.repoTags with D.P.Set.patchSetTags
Ben Franksen <ben.franksen at online.de>**20180718224724
 Ignore-this: e6d6c3babd5ad98051284c7f4f9582b6
 
 Also remove unused functions 'tags' and 'patchSetfMap' from D.P.Set.
] 
[avoid access to PatchSet constructors where possible
Ben Franksen <ben.franksen at online.de>**20180611181705
 Ignore-this: b7f88c9dccf9f50ed35824b06d452882
 
 This includes the full UI subsystem but also parts of Patch and Repository.
] 
[moved inOrderTags from convert command to D.P.Set
Ben Franksen <ben.franksen at online.de>**20180611171952
 Ignore-this: ec6700455ba8bb3d51f0190c6bbdb748
] 
[resolve issue2599: don't bother to update pending when cloning a repo
Ben Franksen <ben.franksen at online.de>**20180722154649
 Ignore-this: 76090c1f10b3e4cf8c5c294d741214bd
] 
[replace our rmRecursive with removeDirectoryRecursive from directory package
Ben Franksen <ben.franksen at online.de>**20180901093655
 Ignore-this: 95f9308013bf8a20ab4081d240f6db7
 
 This function has been fixed not to follow symbolic links since
 directory-1.2.2.0, so we no longer need to roll our own.
] 
[replace most calls to getDirectoryContent with listDirectory
Ben Franksen <ben.franksen at online.de>**20180715124309
 Ignore-this: 7917d3ab42a320fe8ef6611a2ecafc98
 
 This function has been around since directory-1.2.5.0 (we currently require
 at least 1.2.7). Using it lets us avoid manually filtering out "." and ".."
 entries.
] 
[fix and extend docs in D.P.Depends
Ben Franksen <ben.franksen at online.de>**20180831115240
 Ignore-this: 6115a88869884e9ea6521c62f9619588
 
 Most importantly, the definition of terms now corresponds to what the code
 does. This patch also adds a number of comments to the implementation of
 some tricky functions, like taggedIntersection.
] 
[simplify Darcs.Patch.Depends.slightlyOptimizePatchset
Ben Franksen <ben.franksen at online.de>**20180718163143
 Ignore-this: e2309611f83acff1a1dc40aaab3a07be
] 
[improve docs for crudeSift and v1siftForPending
Ben Franksen <ben.franksen at online.de>**20180827165549
 Ignore-this: 18a6434d795d72bb5cbc7e49dd4c1405
] 
[simplify v1siftForPending
Ben Franksen <ben.franksen at online.de>**20180827165528
 Ignore-this: ad28511cb3e006aaec594fc505a67980
 
 Using the Maybe monad here is completely unnecessary.
] 
[simplify definition of local function sift
Ben Franksen <ben.franksen at online.de>**20180827165039
 Ignore-this: a0aac43bf64c452c789b38e9a5fc2bbc
] 
[move code from D.P.Prim.Sift to D.P.Prim.V1
Ben Franksen <ben.franksen at online.de>**20180827093641
 Ignore-this: be2dd09f9b9003632e7ed182b02be74f
] 
[extend and polish test script for issue2548
Ben Franksen <ben.franksen at online.de>**20180828093152
 Ignore-this: 86b36d3f6d3d02fd0f6899a8f7b5f83b
] 
[treeDiff: abbreviate 'anchorPath ""' with a local function
Ben Franksen <ben.franksen at online.de>**20180828091242
 Ignore-this: bed0e8761895410a5423d96dea0488ba
] 
[add comment to explain how treeDiff handles file vs. subtree removals
Ben Franksen <ben.franksen at online.de>**20180826172551
 Ignore-this: ad166f87bcfc6d37901a7f7ed1844cea
] 
[tests: add a missing shebang for bash interpreter
Ben Franksen <ben.franksen at online.de>**20180828091453
 Ignore-this: 567e1de09e82e7da735e0ad2417bdea0
] 
[tests: remove trailing removal of repo dir
Ben Franksen <ben.franksen at online.de>**20180827164952
 Ignore-this: b1e1a62f20962a5e86914cbbffb6c3cf
] 
[tests: remove duplicate definition of shell function 'not'
Ben Franksen <ben.franksen at online.de>**20180827164900
 Ignore-this: c7905c8c24c0363edff68d4f7fd4bebe
] 
[simplify canonizeFL for V1 prim patches
Ben Franksen <ben.franksen at online.de>**20180827150922
 Ignore-this: f398b9febaaa8d5509a8506c4b7aaed5
] 
[consistent naming for "working tree"
raichoo at googlemail.com**20180716163939
 Ignore-this: c2ad7855940a5d4b1f96039b5c2913e2
] 
[resolve the symmetric case for issue2548, tightened and extended test script
Ben Franksen <ben.franksen at online.de>**20180826103413
 Ignore-this: 7fb95425e3b2183d317c9cab48eb2a6
 
 The test script previously specified only that the unrecorded changes that a
 'record -l' sees are consistent i.e. addfile or adddir but not both. We now
 require that the state of the working tree wins over whatever is in pending.
 This is justified because when the user issues 'darcs add' she does not
 specify whether to add a file or a directory, so whether pending has an
 addfile or an adddir is incidental.
] 
[remove extraneous emptying of file object in treeDiff
Ben Franksen <ben.franksen at online.de>**20180826091815
 Ignore-this: 27f4814b7579c5ff00bc0cb2b2ded7c2
 
 The fix for issue2548 correctly added an rmFileP patch in the case where we
 detect a file that is changed into a directory. However, the rmFileP already
 contains a patch that makes the file empty, so we don't have to do it again.
] 
[document lazyness of spanRL, breakRL, takeWhileRL
Ben Franksen <ben.franksen at online.de>**20180825151125
 Ignore-this: 95dff617e95e97e89565f2e2ad73c615
] 
[avoid warning in D.R.State on non-Windows OS
Ben Franksen <ben.franksen at online.de>**20180825084425
 Ignore-this: ae818ac8646082bbfd4cd1c172e3455
] 
[avoid warning in Darcs.Prelude for base < 4.11
Ben Franksen <ben.franksen at online.de>**20180825084314
 Ignore-this: 3629d5ec5f94691831d7bed8d356d05f
] 
[rolled back an accidental semantic change in record
Ben Franksen <ben.franksen at online.de>**20180825133656
 Ignore-this: 3872d779f9d8d760adfed122b883d0f6
] 
[add docs for tentativelyRemoveFromPW
Ben Franksen <ben.franksen at online.de>**20180825111821
 Ignore-this: 6004860fa0eb1be65b8d171bf8be3e3c
] 
[re-add docs to explain what tentativelyRemoveFromPending is used for
Ben Franksen <ben.franksen at online.de>**20180825111644
 Ignore-this: e3e6777c0954889f6c96834660e14ff
] 
[tightened repo witnesses to demand wR~wT for more functions in in D.R.State
Ben Franksen <ben.franksen at online.de>**20180825091243
 Ignore-this: e3eff4f91c0ee52fa8d075b481d67531
 
 This started out with readPending and propagates to
 readPendingAndMovesAndUnrecorded, readUnrecorded, readUnrecordedFiltered,
 readRecordedAndPending, readIndex, updateIndex, getMoves. Requires a small
 code change in finalizeRepositoryChanges and a corresponding tightening in
 D.R.Repair.checkIndex.
] 
[fix docs for finalizeRepositoryChanges
Ben Franksen <ben.franksen at online.de>**20180825090512
 Ignore-this: a8c0fc990ce726cd171893832e88d935
] 
[restrictSubpathsAfter, maybeRestrictSubpaths: restrict witnesses
Ben Franksen <ben.franksen at online.de>**20180825090044
 Ignore-this: d4d233e215d0f008c17febd8c03e5ef
 
 The passed-in pending must now start at the recorded state.
] 
[writeNewPending, makeNewPending: restrict witnesses
Ben Franksen <ben.franksen at online.de>**20180825085907
 Ignore-this: d5bbab658630a30bfc2bebfc8893b207
 
 The prospective pending must now start at the tentative state.
] 
[fix doc for addToSpecificInventory and addToTentativeInventory
Ben Franksen <ben.franksen at online.de>**20180825085832
 Ignore-this: e3ef72a6e1787524bccab6c56c44ba9b
] 
[remove commented code that is no longer needed
Ben Franksen <ben.franksen at online.de>**20180729152153
 Ignore-this: a83a8fc224971a7fa53d86796a9b8b7a
] 
[adapt tests after fix to detection of conflicts with unrecorded
Ben Franksen <ben.franksen at online.de>**20180713181243
 Ignore-this: a4b47803204ac77a388e3ab08ba07fc5
 
 We now get prompted for confirmation whenever we create a conflict with
 unrecorded changes, instead of only for conflicts with pending. This patch
 makes the necessary adaptions to the test scripts.
 
 Some test deliberately pull patches on top of unrecorded changes; for these,
 we prepend "echo y | ..." to simulate the users consent. Other tests issue
 multiple conflicting pull commands; the conflict with unrecorded changes
 here is accidental due to the conflict markup generated by earlier pulls, so
 they are adapted by adding --allow-conflicts to suppress generation of
 conflict markup.
] 
[fix and simplify checkUnrecordedConflicts and then inline
Ben Franksen <ben.franksen at online.de>**20180722122446
 Ignore-this: 62da36f754c62647520b0cb1f2f0f592
 
 The implementation in checkUnrecordedConflicts really only checked for
 conflicts with pending, but we need to check for conflicts with pending and
 working; and the merge that gives us this information has already been
 calculated in tentativelyMergePatches: all new conflicts are contained in
 them'' and new conflicts with pending and working are contained in pw'.
 
 Also, when tentativelyMergePatches is called by a remote apply (during
 execution of a push command), there is no interactive stdin, so promptYorn
 throws an exception, which is now cought. This fixes an existing bug that
 was hidden because the prompting happened only for conflicts with the remote
 pending, whereas it now happens for all conflicts with unrecorded changes.
] 
[extended test for issue1522 with success case
Ben Franksen <ben.franksen at online.de>**20180723072843
 Ignore-this: edba77f87e64f03c3d9bca7fde8a0a56
] 
[in D.R.Resolution, throw an error if cleanly merging conflict resolutions fails
Ben Franksen <ben.franksen at online.de>**20180604154921
 Ignore-this: aeae746a8b3a681d6bd1acd2d330ed4
 
 This is clearly an internal error and should be handled as such. It was
 previously ignored by silently dropping the patch that could not be merged.
] 
[resolve issue2594: add UseIndex parameter to addToPending
Ben Franksen <ben.franksen at online.de>**20180719171008
 Ignore-this: 2c0f949e4b95af39807ec2fca8ac2255
] 
[fix: must not siftForPending in revertPending
Ben Franksen <ben.franksen at online.de>**20180719171004
 Ignore-this: 53c02a5e44597eb90b772b7c9debc32d
 
 The reason is that we want the checks that attempt to apply pending to
 pristine to fail as early as possible and also consistently regardless of
 whether we are in a transaction or not. If we siftForPending with a buggy
 pending such as constructed in tests/pending_has_conflicts.sh applyToTree no
 longer fails.
] 
[accept issue2594: darcs show index crashes replace with unrecorded force hunk
Ben Franksen <ben.franksen at online.de>**20180702140939
 Ignore-this: 73ac92ef41ab16c811453bb2d827f71c
] 
[no longer lie about repo witnesses
Ben Franksen <ben.franksen at online.de>**20180719170744
 Ignore-this: b689ab3e73b43e13977bb157669aa3b2
 
 In particular, this means that most of the procedures in D.R.State now
 require that the recorded and the tentative state coincide, so that reading
 the recorded state is justified even if we are in a "transaction" i.e.
 revertRepositoryChanges has been called (via withRepoLock). Also,
 finalizeRepositoryChanges now returns a properly casted Repository.
 
 We now track the Repository token using a single local variable that gets
 shadowed by each successive "update". This makes it impossible to
 accidentally use an old version. To avoid warnings, these variables are
 prefixed with an underscore.
] 
[add regression test for (already resolved) issue2536
Ben Franksen <ben.franksen at online.de>**20180719110108
 Ignore-this: ddb6b84dbdea76fccbf73c0e3b26e6b8
] 
[fix test for issue2310 and rename because it does not actually fail
Ben Franksen <ben.franksen at online.de>**20180719103541
 Ignore-this: e100019e44090418207d085bcfedd399
] 
[simplify readRecorded and readPending
Ben Franksen <ben.franksen at online.de>**20180619204359
 Ignore-this: 1ffe804603dc34fc1793c3cc8638d173
 
 ...using peekPristineHash and the new D.R.Paths module.
] 
[define repo paths in a separate module
Ben Franksen <ben.franksen at online.de>**20180619203930
 Ignore-this: 4096a66894bd124171161508c4c1fa6c
] 
[move applyToTentativePristine to before repo changes
Ben Franksen <ben.franksen at online.de>**20180702131930
 Ignore-this: 5695f7a39381cf488c7054687bf2fcdf
 
 This is pure code aesthetics. The call gets the original r (Repository)
 passed, so it looks better if we make it before we call the functions that
 return the new (coerced) Repository.
] 
[explain how tentativelyMergePatches works
Ben Franksen <ben.franksen at online.de>**20180702131923
 Ignore-this: 29c052902fade67f56b241acf4dc63a0
 
 This patch also renames a few local variables in this function.
] 
[resolve issue2593: network test can collide with shell tests
Ben Franksen <ben.franksen at online.de>**20180629195825
 Ignore-this: 7e8b520a2daf96e01109b902c6f6b43d
] 
[tests for issue1316 no longer fail
Ben Franksen <ben.franksen at online.de>**20180713134449
 Ignore-this: 8e56008c9a59f438c72591c7bf182715
 
 This is most probably due to the recent fix for how the amend command
 handles the pending patch.
] 
[resolve issue2592: update pending with coalesced look-for changes
Ben Franksen <ben.franksen at online.de>**20180702163803
 Ignore-this: 433b715f2787c1199c4309581eb1ea36
] 
[simplified setTentativePending and fix its type witnesses
Ben Franksen <ben.franksen at online.de>**20180702145112
 Ignore-this: a20b32a92265091a1d81c9d963949cd1
] 
[make D.R.Pending.prepend more type safe (by removing it)
Ben Franksen <ben.franksen at online.de>**20180702145101
 Ignore-this: 4dd145953c7168603ca8a3694c9109ec
 
 This function coerced witnesses and had corresponding warnings attached. The
 need for coercing was that it reads the pending patch and also writes it
 back with some changes that were removed from the repo prepended. If we
 split this action up and read pending before adding the patches to the repo
 and afterwards write the pending, then the witnesses all match up just fine.
 This requires removeFromTentativeInventory to return a repo with
 appropriately coerced witnesses.
 The cost of this operation is that we must export read/writeTentativePending.
] 
[fix handling of pending patch in amend command
Ben Franksen <ben.franksen at online.de>**20180702134008
 Ignore-this: 4f95452e8c4bdc28cd3ed20be14f0035
 
 In case of look-for-moves/replaces, the code called
 tentativelyRemoveFromPending on the old patch. This was done after
 tentativelyRemovePatch and tentativelyAddPatch had already adapted the
 pending patch (via YesUpdatePending). This is clearly wrong and worked only
 because tentativelyRemovePatches called prepend, which pre-filtered the new
 prim patches with crudeSift. This is no longer done, and so we now get
 failures when we try to apply pending.
 
 The clean solution is to pass NoUpdatePending to both tentativelyRemovePatch
 and tentativelyAddPatch and then adapt pending in one go with the difference
 between old and new patch. The function tentativelyRemoveFromPending now
 takes an FL of prim patches, has more correct type witnesses, uses less
 coercion, and has its UpdatePending parameter removed.
 
 This restores the regression of issue2209-look_for_replaces after the fix
 for issue2548-inconsistent-pending. It also makes the previously failing
 test look_for_replaces1 succeed.
] 
[accept issue2592: unclean pending with look-for options
Ben Franksen <ben.franksen at online.de>**20180618190530
 Ignore-this: 7d3d1d113694143bde626d0d8ed3a5ed
] 
[resolve issue2548: inconsistent pending
Ben Franksen <ben.franksen at online.de>**20180613175034
 Ignore-this: 5d58862fb1261d61ced3b121650ecca1
 
 In Darcs.Repository.Diff.treeDiff we did not correctly handle the case where
 a file is changed to a subTree: we only emptied the file but failed to add
 an rmfile patch before adding the dir.
 
 With a pending "addfile ./f" and a working tree where f has been changed to
 a directory, we now get only the "adddir ./f" when recording with -l.
 
 However, this leaves us with a new pending "rmdir ./f; addfile ./f". This
 pending change can be reverted but does not show up with whatsnew -l and
 cannot be recorded with record -l.
] 
[remove UpdatePending parameter from tentativelyAddToPending
Ben Franksen <ben.franksen at online.de>**20180702143403
 Ignore-this: 49e37e39bbac54cfdff71900c3a6416a
 
 All call sites passed YesUpdatePending, literally.
] 
[add revertPending to complement finalizePending
Ben Franksen <ben.franksen at online.de>**20180702141814
 Ignore-this: b9175e36e417254dede371d6573c6dcf
] 
[removed UpdatePending parameter from a few functions
Ben Franksen <ben.franksen at online.de>**20180702131536
 Ignore-this: 137a392994f408bcd843ce4deb5b0487
 
 Affected are setTentativePending, prepend, the functions in D.R.Merge,
 addToPending, and addPendingDiffToPending. The parameter could be removed
 because either all call sites passed YesUpdatePending (literally), or the
 same or closely related case distinction was already done at the call site.
] 
[rename UpdateWorking to UpdatePending
Ben Franksen <ben.franksen at online.de>**20180702131409
 Ignore-this: b32c179994ff299dfc1598bab875b454
 
 The name of this type (and the parameter names) now reflect what it does,
 namely configure for certain calls whether the pending patch should be
 updated or not.
] 
[remove writePatchSet and patchSetToRepository from D.R.Clone
Ben Franksen <ben.franksen at online.de>**20180610151003
 Ignore-this: a6c059b9450839f7ac46f0524f93e4dd
 
 patchSetToRepository was already commented out and writePatchSet was used
 only in D.UI.Commands.Repair, where the relevant parts are now inlined. Also
 did some refactorings there while we're at it.
] 
[move filterNonInternal from tag command to D.P.Match
Ben Franksen <ben.franksen at online.de>**20180611173502
 Ignore-this: ad9429c268fdb84055c681e4500accfc
] 
[move matchingHead to D.P.Match, move contextPatches to D.P.Depends
Ben Franksen <ben.franksen at online.de>**20180611171139
 Ignore-this: d9560cc892e65e5a2ac6244df9bbc6d5
] 
[simplify return type of splitOnTag
Ben Franksen <ben.franksen at online.de>**20180611102459
 Ignore-this: a724190d1f45336cd4e538377a3e5a87
 
 Instead of returning a PatchSet with an empty trailing list of patches plus
 trailing patches separately, we as well return just a PatchSet and put the
 trailig patches back.
] 
[refactor matching of PatchSets
Ben Franksen <ben.franksen at online.de>**20180609222350
 Ignore-this: 8263b213cb129ade39454183349f9361
 
 This affects the commands annotate, clone, diff, dist, show contents, and
 show files. For these, selecting a single patch or a range of patches makes
 no sense; instead matching means to select the version (PatchSet) consisting
 of all patches up to (including) the latest matching patch, except for --tag
 where we get the exact version corresponding to the tag.
 
 The functions findAPatch and matchPatch and the data type
 InclusiveOrExclusive are now obsolete have been removed. Other functions are
 superseded: getPatchesBeyondTag is replaced by the more general
 splitOnMatchingTag; getTagS and getMatcherS have been inlined into
 getNonrangeMatchS, which has been renamed to rollbackToPatchSetMatch;
 havePatchsetMatch is replaced by patchSetMatch. The new data type
 PatchSetMatch precisely captures the different ways to match a PatchSet;
 patchSetMatch returns it and rollbackToPatchSetMatch and getOnePatchSet take
 it as argument. Also, getNonrangeMatch is now called getRecordedUpToMatch,
 and dropn is renamed to patchSetDrop and exported.
 
 There are now separate DarcsFlags and MatchFlags for --index=N (OneIndex)
 versus --index=N-M (MatchIndexRange), which streamlines index matching.
] 
[make spanRL lazy, add takeWhileRL
Ben Franksen <ben.franksen at online.de>**20180609222232
 Ignore-this: 4bd05d0fc5146aac6be7934056d18716
] 
[inlined a where clause in splitOnTag
Ben Franksen <ben.franksen at online.de>**20180609221946
 Ignore-this: df78934f07e25f690a9839073f96d1ef
] 
[simplify D.P.Match.matchExists
Ben Franksen <ben.franksen at online.de>**20180609142356
 Ignore-this: 6b66004d0117c5256a30f5defbfa22f5
] 
[removed unsused (incl. darcsden) function getFirstMatchS
Ben Franksen <ben.franksen at online.de>**20180609121825
 Ignore-this: 1dc69395d33727eaaab76ed6525102c4
] 
[simplify D.R.Hashed.reorderInventory
Ben Franksen <ben.franksen at online.de>**20180608093343
 Ignore-this: 2d59b83971455f2f76a51fddc48028dc
 
 This gets rid of the last use of tentativelyReplacePatches which has been
 removed. Instead of removing patches from the repo and then adding them
 back, we directly write the new patchset. tentativelyReplacePatches filtered
 out the rebase patch from the patches it removes. This was brittle and also
 unnecessary: we can assume the rebase patch is not covered by any tag and
 thus automatically belongs to the untagged tail of patches.
 
 Finding the latest tag and cleaning it is now optimized by using the new
 utility function breakRL. This avoids searching for the latest tag twice
 (first in misplacedPatches and then again in splitOnTag). The fused
 functionality is now in function D.P.Depends.cleanLatestTag.
 
 The test for darcs optimize has been enhanced to actually test that optimize
 reorder does what it should.
] 
[fix tests/network/clone-http-packed*
Ben Franksen <ben.franksen at online.de>**20180718125938
 Ignore-this: f3fcb6d7418edb426bbd5c15f9628dc0
 
 These tests were broken by patch d31c169a48cb4c63953eefe0c61ff1e7aa1edd9e
 because the name of the repodir is "repo", not "laziness-complete". You
 need to have lighttpd installed and able to run to reproduce.
] 
[add class PrimSift so we can avoid using PrimConstruct and PrimClassify in Pending
Ben Franksen <ben.franksen at online.de>**20180505065806
 Ignore-this: a236357241048ec8e0eb26a99250bedb
] 
[move tryShrinkingInverse to D.P.Invert, rename to dropInverses
Ben Franksen <ben.franksen at online.de>**20180301225601
 Ignore-this: 8dc5633d478d66135dfa2f36898edc7f
 
 The function is defined solely in terms of Invert and Eq2.
] 
[remove commuteFLorComplain and replace with commuteFL
Ben Franksen <ben.franksen at online.de>**20180516074050
 Ignore-this: 22c884f446084a9a87abe9175db1e817
 
 The extra information provided by commuteFLorComplain was nowhere used.
] 
[respect verbosity options in amend command
Ben Franksen <ben.franksen at online.de>**20180713170751
 Ignore-this: 47054467ad82cadc305e6373154d11db
] 
[fix haddocks for maybeApplyToTree
Ben Franksen <ben.franksen at online.de>**20180701224639
 Ignore-this: 68c8569a1d36ef12781dc8c650559df6
] 
[fix: show pristine is not an alias of show index
Ben Franksen <ben.franksen at online.de>**20180701084126
 Ignore-this: 814cfc5e36aab335ee013082776a91bd
] 
[renamed a local variable in tentativelyMergePatches
Ben Franksen <ben.franksen at online.de>**20180613103242
 Ignore-this: 211a7f51ae2780843f309232e51357cd
 
 The content of a named patch does not consist of prim patches.
] 
[add/change some comments in optimize upgrade command
Ben Franksen <ben.franksen at online.de>**20180612174221
 Ignore-this: 2411d122f587c7d49a9b12f38f1ce182
] 
[save one reverseFL in D.P.Depends.patchSetUnion
Ben Franksen <ben.franksen at online.de>**20180610092826
 Ignore-this: fd19e8c3c31a3574566a2d8dd76702a0
] 
[export getPrefLines for darcsden
Ben Franksen <ben.franksen at online.de>**20180609112943
 Ignore-this: b5c24b98188f95c845c680e418c889de
] 
[use +<<+ in D.P.Set.appendPSFL
Ben Franksen <ben.franksen at online.de>**20180608120457
 Ignore-this: 932a5ac2ba0aa305746698d9212ffe85
] 
[remove "withSignalsHandled:" from message when we are interrupted (Ctrl-C)
Ben Franksen <ben.franksen at online.de>**20180325234211
 Ignore-this: 18bd6b4ee62258e9689b19cfbdb05bf8
 
 Prepending the function name makes sense for debug messages but not for
 messages intended for users (except bugs).
] 
[simplified withUMaskFlag
Ben Franksen <ben.franksen at online.de>**20180528145029
 Ignore-this: 6180d9ef433426c2c9c43073022d122a
] 
[remove method anIdentity from PrimConstruct
Ben Franksen <ben.franksen at online.de>**20180501154124
 Ignore-this: 2a4afd0048567d73c35245274c286ec7
 
 This method was used only in the test harness to extract pairs and triples
 of adjacent patches from an arbitrary patch tree, in case the tree does not
 contain enough patches. Rather than conjuring meaningless patches out of
 thin air, a better solution is to reject starting states with not enough
 patches. Along the way, some unused functions and instances in the test
 harness were deleted.
] 
[re-add test for issue1609
Ben Franksen <ben.franksen at online.de>**20180614181258
 Ignore-this: 31249ec87b8f4d3b5f71df1cf25e2f27
] 
[in a few test scripts, clean test repos before creating them
Ben Franksen <ben.franksen at online.de>**20180713140201
 Ignore-this: d256e939dd5ad6b1a41d093988e78df2
] 
[tests: cleanup chmod -w else cannot remove testdir
Ben Franksen <ben.franksen at online.de>**20180627090404
 Ignore-this: ed4273946454df124e94da165062d75d
] 
[fix a few tests that erroneously fail when run with --testdir
Ben Franksen <ben.franksen at online.de>**20180627085523
 Ignore-this: f879ceb3ddf63d41f9fee894d095c9f1
] 
[tests: remove an mkdir for an unused test dir
Ben Franksen <ben.franksen at online.de>**20180615105541
 Ignore-this: da51a334b087304e20908daef9f7a8f5
] 
[issue1461 is no longer failing
Ben Franksen <ben.franksen at online.de>**20180614181516
 Ignore-this: 758a0629be1cdac3c712e0a0eb161c7b
] 
[fix a wrong comment in failing test for issue1610
Ben Franksen <ben.franksen at online.de>**20180614164116
 Ignore-this: 7f198bfd54bc7316e52909994d96e8e5
] 
[renamed and fixed test for issue 2548
Ben Franksen <ben.franksen at online.de>**20180613080333
 Ignore-this: dda93c1adb6833a528843a285af3877c
] 
[fix clone-http-packed tests
Ben Franksen <ben.franksen at online.de>**20180609083954
 Ignore-this: 4a19ec27cfd3a779f5fa242499a94d3a
 
 It seems newer versions of lighttpd need an empty list for the
 index-file.name configuration setting, otherwise requests for directories
 cannot be served.result in a 404 error.
] 
[add a failing test for resolution of conflict chains
Ben Franksen <ben.franksen at online.de>**20180608110441
 Ignore-this: bb48bb3c0575ef04afe877780f7342d2
] 
[issue1522 is not failing, we just tested the wrong thing
Ben Franksen <ben.franksen at online.de>**20180607153513
 Ignore-this: 6f6aeeb2732884f978c4eb868ae32f9b
 
 The issue, as originally reported, was that darcs did /not/ fail here.
 The test now checks that it does and thus succeeds as required.
] 
[harness: improve output when property invertRollback fails
Ben Franksen <ben.franksen at online.de>**20180309094212
 Ignore-this: 7e704668d497f7c01f99784679e9423d
] 
[added my HZB email to .authorspellings
Ben Franksen <ben.franksen at online.de>**20180327233136
 Ignore-this: aaccd92629376e779cf4f4fb5583aa1d
] 
[consistently use skip-formats from tests/lib in test scripts
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20180425163402
 Ignore-this: 6dd56b13327fcb28407cebcf033fe175
] 
[add _forceCommute to D.P.Merge
Ben Franksen <ben.franksen at online.de>**20180516080235
 Ignore-this: 682098dba1246528553a081308940d31
 
 The only purpose of this function is to document how the merge operation,
 together with the square commute law, allows to commute any pair of adjacent
 patches.
] 
[add laws to classes Commute and CommuteNoConflicts
Ben Franksen <ben.franksen at online.de>**20180607195130
 Ignore-this: 9b2be35019e7b0210db0eaaf4a85f4a1
] 
[replace naturalMerge with mergeNoConflicts
Ben Franksen <ben.franksen at online.de>**20180607181432
 Ignore-this: 7a4b0793074bb3be28a8693100d2978b
 
 This change is a consequence of my improved understanding of what
 commuteNoConflicts is about and how non-conflicting merge should work, see
 the haddocks for details. The new function is also more efficient because
 (a) commuteNoConflicts has to consider fewer cases and (b) we can now drop
 the extra commute check on the result of the merge.
] 
[in D.P.V1.Commute, remove commuteNoMerger and replace with commuteNoConflicts
Ben Franksen <ben.franksen at online.de>**20180604154812
 Ignore-this: 52691e31f7822683c67d1768a94bcbe4
] 
[simplify V1 merge by calculating both branches in one go
Ben Franksen <ben.franksen at online.de>**20180530163134
 Ignore-this: ba1d3de13df7724f5aeec898e8cb5915
] 
[factor swapMerge from D.P.V2.RepoPatch to D.P.Merge
Ben Franksen <ben.franksen at online.de>**20180530163032
 Ignore-this: 4492404a94fe2704aad86c0fdded992c
] 
[refactor the instance Commute RepoPatchV2
Ben Franksen <ben.franksen at online.de>**20180529130151
 Ignore-this: e58fe2aad17250793d1f4b38e9fbbb90
 
 To avoid repeated calls to commuteNoConflicts in cases where we know it will
 fail, add commuteConflicting as a separate top-level function. Also factor
 out invertCommuter which is now used for both commuteConflicting and
 commuteNoConflicts.
] 
[improved haddocks for CommuteNoConflicts
Ben Franksen <ben.franksen at online.de>**20180529125540
 Ignore-this: 66fd77d34e106b6edd693193e9e02771
] 
[remove out-commented code line from mangleUnravelledHunks
Ben Franksen <ben.franksen at online.de>**20180426071255
 Ignore-this: 7116db02cb6ab3b75b392aafbdbcbec
] 
[add haddocks for D.P.Conflict.IsConflictedPrim
Ben Franksen <ben.franksen at online.de>**20180426071209
 Ignore-this: 1c66041eff309d484cfbbb3ead0d2867
] 
[rename 'conflictedEffect' to 'isConflicted'
Ben Franksen <ben.franksen at online.de>**20180426070037
 Ignore-this: 59ea355b5af257a5be76236361107be0
 
 This function (class method) is used to classify patches and has nothing to
 do with the effect of a patch.
] 
[apply hunks for the same file in one go for V2, too
Ben Franksen <ben.franksen at online.de>**20180216111952
 Ignore-this: 6cf6e1421a30221c95762a02f0869f09
 
 It seems this optimization was never done for RepoPatchV2.
] 
[rebase: use die instead of error
raichoo at googlemail.com**20180614072937
 Ignore-this: 320248b9c073e02491762d83ef704cec
] 
[boring: add .stack-work to default boring
raichoo at googlemail.com**20180612105914
 Ignore-this: 12f2fec14ac82a9f593b3e7159c180bd
] 
[support containers 0.6.x
Ganesh Sittampalam <ganesh at earth.li>**20180622115811
 Ignore-this: cec9331750943804a68430ff5d177321
] 
[Quick fix for malicious path checking on Windows
Ganesh Sittampalam <ganesh at earth.li>**20180617180358
 Ignore-this: 62f35d80671b44a4e4c4d7b33368f761
 This fixes the tests, but is not comprehensive
] 
[Acknowledge encoding failures/regressions on Windows
Ganesh Sittampalam <ganesh at earth.li>**20180617175025
 Ignore-this: 3bce9f9dec9c558d08773c8e2623b423
] 
[Disable git_quoted_filenames test on Windows
Ganesh Sittampalam <ganesh at earth.li>**20180617162939
 Ignore-this: e8b69291f60f45dd9da6cab51cdd075a
 Having filenames with quotes in is not easy/natural on Windows
] 
[skip send-external test on Windows
Ganesh Sittampalam <ganesh at earth.li>**20180612060349
 Ignore-this: 8b34fd5fccf468b4ffa8624a939e1a24
] 
[fix issue1857 test on Windows
Ganesh Sittampalam <ganesh at earth.li>**20180610184054
 Ignore-this: 6fc9b0a9ee752b0e615cbe82fef20776
] 
[re-added autogen-modules entries in darcs.cabal
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20180419120031
 Ignore-this: 8c81e9a6aa8da23618fbdec14edc3ca9
] 
[Fix show_tags test on Windows - compare output ignoring newlines
Ganesh Sittampalam <ganesh at earth.li>**20180610115900
 Ignore-this: 55c5e30831a56601ecfbd229940a2215
 Not sure why this doesn't come up in other similar tests
] 
[fix test on Windows: having 0 as a unixtime doesn't seem to work
Ganesh Sittampalam <ganesh at earth.li>**20180610113906
 Ignore-this: 9770bfa762c398ba23aa14ec6a0171a0
 toClockTime was throwing errors
] 
[blacklist shelly>=1.7.2 on Windows
Ganesh Sittampalam <ganesh at earth.li>**20180610094903
 Ignore-this: 414449858d83bba869200a0b21494204
 It "normalises" environment variables to lower-case which breaks
 our tests.
] 
[support QuickCheck 2.11
Ganesh Sittampalam <ganesh at earth.li>**20180609153034
 Ignore-this: 13b7a0fa536221ade5575148670d8b7c
] 
[support shelly 1.7 and 1.8
Ganesh Sittampalam <ganesh at earth.li>**20180609153027
 Ignore-this: a549f0372bbb0fab02e59c796db02c66
] 
[support network 2.7
Ganesh Sittampalam <ganesh at earth.li>**20180609153020
 Ignore-this: f48aa0ab0ce0b01628c3a11c8c36a20b
] 
[support time 1.9
Ganesh Sittampalam <ganesh at earth.li>**20180609153010
 Ignore-this: 7873028f2ebcde567a8d513c2704a184
] 
[support fgl 5.6
Ganesh Sittampalam <ganesh at earth.li>**20180609152957
 Ignore-this: 149deeaa411e6d46519464679db62787
] 
[support binary 0.9
Ganesh Sittampalam <ganesh at earth.li>**20180609152858
 Ignore-this: 6076692833100fc65413388f60a770d3
] 
[resolve conflicts after pulling fix for issue2588 from branch-2.14
Ben Franksen <ben.franksen at online.de>**20180530163509
 Ignore-this: 7485755b42ffc02fb2aa18934af2453b
] 
[resolve issue2588: no longer use withTempDirectory in withNewDirectory
Ben Franksen <ben.franksen at online.de>**20180530122732
 Ignore-this: eac9533fe5cb418c1bf3ebfdd68619fe
] 
[increase upper bound for graphviz dependency to 2999.20.1
Ben Franksen <ben.franksen at online.de>**20180529101919
 Ignore-this: 29fb75b1219c07393384da5f80846cf7
] 
[require GHC 8.2 and Cabal 2.2
Guillaume Hoffmann <guillaumh at gmail.com>**20180406191827
 Ignore-this: 8443a5288cc669f47f49a00df59d47f1
] 
[require directory 1.2.7 and use doesPathExist
Guillaume Hoffmann <guillaumh at gmail.com>**20180406191709
 Ignore-this: d79bca93c75e072254f35921ffc3fef5
] 
[bump async upper bound
Guillaume Hoffmann <guillaumh at gmail.com>**20180406174503
 Ignore-this: bffa195ae2ff3a8f28cf491398cf6f1b
] 
[bump darcs version to 2.15.0
Guillaume Hoffmann <guillaumh at gmail.com>**20180404144712
 Ignore-this: 63caa342b85cf4375b6efae5261bb222
] 
[TAG 2.14.0
Guillaume Hoffmann <guillaumh at gmail.com>**20180404143457
 Ignore-this: b65f09f1e7a78e00ba98e63108be2833
] 
Patch bundle hash:
7553abb13ff2e7e0c4d21e737edba697b8d1578c


More information about the darcs-devel mailing list