[darcs-devel] [patch1179] Darcs.Repository.Flags: added Eq instanc... (and 4 more)
Ganesh Sittampalam
ganesh at earth.li
Sun Nov 9 10:00:20 UTC 2014
Hi,
On 08/11/2014 23:26, Ben Franksen wrote:
> Ganesh Sittampalam wrote:
>>
>> I'm playing around with moving them inline to the DarcsCommand
>> specifications and avoiding the boilerplate odesc/defaultFlags/ocheck.
>> If it works out, it'll mean they can be just specified once there and
>> avoid needing to give a signature anywhere.
>
> I'd be astonished if you get this to work, because of the type parameters,
> which are (necessarily, that's a feature) different for each command. The
> Option 'member functions' odesc, oparse, etc kind of 'equalize' these
> differences: they have simple monomorphic result types like [DarcsFlag]. I
> have been playing with existentially quantifying over the parameters but
> that really just moves the ugliness from one place to another.
I've got something sort of working, but it is indeed with existentials -
see attached.
One difficulty is that with the options lists hidden away behind an
existential, they can't be reused for the new-style parsing. One
question about that: why does recordConfig not use the same set of
options as recordOpts?
recordConfig :: [DarcsFlag] -> RecordConfig
recordConfig = oparse (recordBasicOpts ^ O.verbosity ^
recordAdvancedOpts ^ O.useCache) RecordConfig
recordOpts = recordBasicOpts `withStdOpts` recordAdvancedOpts
Is it because some options are handled by the infrastructure so don't
need to be in RecordConfig?
>> In the shorter term we can hopefully force the
>> flags lists to be normalised by passing through oparse and ounparse.
>
> This is possible, but (see above) you need to do it separately in every
> command implementation (AFAICS).
Yes, that was my plan (and why I then started experimenting with putting
the options into the commands directly as above, to avoid the need for
this).
> I did not do this because I think it is a bad idea, since it covers up the
> problem instead of fixing it. I really want to get rid of all the explicit
> flag membership testing. If a test fails this is an incentive to do just
> that. I think the patch I sent demonstrates that doing this is mostly
> straight forward.
My worry is all the places that are broken but aren't exposed by failing
tests.
> and later:
>> The worry is how many other places similar things may be happening; I'm
>> not too comfortable passing around unnormalised [DarcsFlag] values as
>> who knows how they might be used.
>
> I know it will be some work to review all the places where the flag list is
> used directly, but I think we'll have to do it anyway, the sooner the
> better.
>
> Now that the new options system is in screened, we should also make it clear
> that using [DarcsFlag] in any way other than as an opaque Config value is
> strongly discouraged, especially in new code.
Once the cleanup is done, would it make sense to put the DarcsFlag
definition in the same module as the options, and then not export the
values? It might also provide a simple way to find all the places where
the flag list is inspected directly.
Cheers,
Ganesh
-------------- next part --------------
1 patch for repository /home/ganesh/darcs/screened:
patch 29059db18a8de04841c03e3e047d245c4e497459
Author: Ganesh Sittampalam <ganesh at earth.li>
Date: Sun Nov 9 09:44:06 UTC 2014
* WIP: inlining the option specifications
New patches:
[WIP: inlining the option specifications
Ganesh Sittampalam <ganesh at earth.li>**20141109094406
Ignore-this: f37783cee5caf3ac4fd74fb33f96ed5e
] hunk ./src/Darcs/UI/Commands.hs 21
+ , Basic(..)
+ , Advanced(..)
+ , commandDefaults
+ , commandCheckOptions
hunk ./src/Darcs/UI/Commands.hs 83
-import Darcs.UI.Options ( DarcsOption, DarcsOptDescr, (^), optDescr, odesc, parseFlags )
+import Darcs.UI.Options
+ ( DarcsOption, DarcsOptDescr, (^), optDescr
+ , odesc, parseFlags, defaultFlags, ocheck )
hunk ./src/Darcs/UI/Commands.hs 138
- , commandBasicOptions :: [DarcsOptDescr DarcsFlag]
- , commandAdvancedOptions :: [DarcsOptDescr DarcsFlag]
- , commandDefaults :: [DarcsFlag]
- , commandCheckOptions :: [DarcsFlag] -> [String]
+ , commandBasicOptionsSpec :: forall b . Basic b
+ , commandAdvancedOptionsSpec :: forall b . Advanced b
hunk ./src/Darcs/UI/Commands.hs 150
+commandBasicOptions :: DarcsCommand -> [DarcsOptDescr DarcsFlag]
+commandBasicOptions cmd = case commandBasicOptionsSpec cmd of Basic b -> odesc b
+
+commandAdvancedOptions :: DarcsCommand -> [DarcsOptDescr DarcsFlag]
+commandAdvancedOptions cmd = case commandAdvancedOptionsSpec cmd of Advanced a -> odesc a
+
+commandDefaults :: DarcsCommand -> [DarcsFlag]
+commandDefaults cmd =
+ case commandAdvancedOptionsSpec cmd of
+ Advanced a ->
+ case commandBasicOptionsSpec cmd of
+ Basic b -> defaultFlags (b `withStdOpts` a)
+
+commandCheckOptions :: DarcsCommand -> [DarcsFlag] -> [String]
+commandCheckOptions cmd =
+ case commandAdvancedOptionsSpec cmd of
+ Advanced a ->
+ case commandBasicOptionsSpec cmd of
+ Basic b -> ocheck (b `withStdOpts` a)
+
+data Basic b where
+ Basic :: DarcsOption (Maybe StdCmdAction -> Bool -> Bool -> Verbosity -> Bool -> b) c
+ -> Basic b
+
+data Advanced a where
+ Advanced :: DarcsOption (UseCache -> Maybe String -> Bool -> Maybe String -> Bool -> a) b
+ -> Advanced a
+
hunk ./src/Darcs/UI/Commands.hs 185
-commandAlloptions DarcsCommand { commandBasicOptions = opts1
- , commandAdvancedOptions = opts2 } =
- ( opts1 ++ odesc stdCmdActions
- , odesc anyVerbosity ++ opts2 ++ odesc useCache ++ odesc hooks )
+commandAlloptions cmd at DarcsCommand { } =
+ ( commandBasicOptions cmd ++ odesc stdCmdActions
+ , odesc anyVerbosity ++ commandAdvancedOptions cmd ++ odesc useCache ++ odesc hooks )
hunk ./src/Darcs/UI/Commands/Add.hs 53
- ( DarcsCommand(..), withStdOpts, putInfo, putWarning, putVerboseWarning
+ ( DarcsCommand(..), Basic(..), Advanced(..)
+ , putInfo, putWarning, putVerboseWarning
hunk ./src/Darcs/UI/Commands/Add.hs 60
-import Darcs.UI.Options
- ( DarcsOption
- , (^), odesc, ocheck, defaultFlags, parseFlags )
+import Darcs.UI.Options ( (^), parseFlags )
hunk ./src/Darcs/UI/Commands/Add.hs 110
-addBasicOpts :: DarcsOption a
- (Bool -> Bool -> Bool -> Bool -> Maybe String -> O.DryRun -> a)
-addBasicOpts = O.includeBoring
- ^ O.allowProblematicFilenames
- ^ O.recursive
- ^ O.workingRepoDir
- ^ O.dryRun
-
-addAdvancedOpts :: DarcsOption a (O.UMask -> a)
-addAdvancedOpts = O.umask
-
-addOpts :: DarcsOption a
- (Bool
- -> Bool
- -> Bool
- -> Bool
- -> Maybe String
- -> O.DryRun
- -> Maybe O.StdCmdAction
- -> Bool
- -> Bool
- -> O.Verbosity
- -> Bool
- -> O.UMask
- -> O.UseCache
- -> Maybe String
- -> Bool
- -> Maybe String
- -> Bool
- -> a)
-addOpts = withStdOpts addBasicOpts addAdvancedOpts
-
hunk ./src/Darcs/UI/Commands/Add.hs 123
- , commandAdvancedOptions = odesc addAdvancedOpts
- , commandBasicOptions = odesc addBasicOpts
- , commandDefaults = defaultFlags addOpts
- , commandCheckOptions = ocheck addOpts
+ , commandBasicOptionsSpec = Basic (O.includeBoring ^
+ O.allowProblematicFilenames ^
+ O.recursive ^
+ O.workingRepoDir ^
+ O.dryRun)
+ , commandAdvancedOptionsSpec = Advanced O.umask
hunk ./src/Darcs/UI/Commands/Clone.hs 36
-import Darcs.UI.Commands ( DarcsCommand(..), withStdOpts
+import Darcs.UI.Commands ( DarcsCommand(..), Basic(..), Advanced(..)
hunk ./src/Darcs/UI/Commands/Clone.hs 50
-import Darcs.UI.Options ( DarcsOption, (^), odesc, ocheck, defaultFlags, parseFlags )
+import Darcs.UI.Options ( (^), parseFlags )
hunk ./src/Darcs/UI/Commands/Clone.hs 111
-cloneBasicOpts :: DarcsOption a
- (Maybe String
- -> CloneKind
- -> [O.MatchFlag]
- -> Maybe Bool
- -> O.SetScriptsExecutable
- -> O.WithWorkingDir
- -> a)
-cloneBasicOpts = O.reponame
- ^ O.partial
- ^ O.matchOneContext
- ^ O.setDefault
- ^ O.setScriptsExecutable
- ^ O.useWorkingDir
-
-cloneAdvancedOpts :: DarcsOption a (Bool -> O.PatchIndexOption -> O.NetworkOptions -> a)
-cloneAdvancedOpts = O.usePacks ^ O.patchIndex ^ O.network
-
-cloneOpts :: DarcsOption a
- (Maybe String
- -> CloneKind
- -> [O.MatchFlag]
- -> Maybe Bool
- -> O.SetScriptsExecutable
- -> O.WithWorkingDir
- -> Maybe O.StdCmdAction
- -> Bool
- -> Bool
- -> O.Verbosity
- -> Bool
- -> Bool
- -> O.PatchIndexOption
- -> O.NetworkOptions
- -> O.UseCache
- -> Maybe String
- -> Bool
- -> Maybe String
- -> Bool
- -> a)
-cloneOpts = cloneBasicOpts `withStdOpts` cloneAdvancedOpts
-
hunk ./src/Darcs/UI/Commands/Clone.hs 123
- , commandAdvancedOptions = odesc cloneAdvancedOpts
- , commandBasicOptions = odesc cloneBasicOpts
- , commandDefaults = defaultFlags cloneOpts
- , commandCheckOptions = ocheck cloneOpts
+ , commandBasicOptionsSpec = Basic (O.reponame ^
+ O.partial ^
+ O.matchOneContext ^
+ O.setDefault ^
+ O.setScriptsExecutable ^
+ O.useWorkingDir)
+ , commandAdvancedOptionsSpec = Advanced (O.usePacks ^ O.patchIndex ^ O.network)
hunk ./src/Darcs/UI/Commands/Convert.hs 130
- CommandControl(CommandData), withStdOpts )
-import Darcs.UI.Options ( DarcsOption, (^), odesc, ocheck, defaultFlags, parseFlags )
+ CommandControl(CommandData), Basic(..), Advanced(..) )
+import Darcs.UI.Options ( DarcsOption, (^), parseFlags )
hunk ./src/Darcs/UI/Commands/Convert.hs 210
-convertDarcs2Opts :: DarcsOption a
- (Maybe String
- -> O.SetScriptsExecutable
- -> O.WithWorkingDir
- -> Maybe O.StdCmdAction
- -> Bool
- -> Bool
- -> O.Verbosity
- -> Bool
- -> O.NetworkOptions
- -> O.PatchIndexOption
- -> O.UseCache
- -> Maybe String
- -> Bool
- -> Maybe String
- -> Bool
- -> a)
-convertDarcs2Opts = convertDarcs2BasicOpts `withStdOpts` convertDarcs2AdvancedOpts
-
hunk ./src/Darcs/UI/Commands/Convert.hs 221
- , commandAdvancedOptions = odesc convertDarcs2AdvancedOpts
- , commandBasicOptions = odesc convertDarcs2BasicOpts
- , commandDefaults = defaultFlags convertDarcs2Opts
- , commandCheckOptions = ocheck convertDarcs2Opts
+ , commandAdvancedOptionsSpec = Advanced convertDarcs2AdvancedOpts
+ , commandBasicOptionsSpec = Basic convertDarcs2BasicOpts
hunk ./src/Darcs/UI/Commands/Convert.hs 232
-convertExportOpts :: DarcsOption a
- (Maybe String
- -> Maybe String
- -> Maybe String
- -> Maybe O.StdCmdAction
- -> Bool
- -> Bool
- -> O.Verbosity
- -> Bool
- -> O.NetworkOptions
- -> O.UseCache
- -> Maybe String
- -> Bool
- -> Maybe String
- -> Bool
- -> a)
-convertExportOpts = convertExportBasicOpts `withStdOpts` convertExportAdvancedOpts
-
hunk ./src/Darcs/UI/Commands/Convert.hs 244
- , commandAdvancedOptions = odesc convertExportAdvancedOpts
- , commandBasicOptions = odesc convertExportBasicOpts
- , commandDefaults = defaultFlags convertExportOpts
- , commandCheckOptions = ocheck convertExportOpts
+ , commandAdvancedOptionsSpec = Advanced convertExportAdvancedOpts
+ , commandBasicOptionsSpec = Basic convertExportBasicOpts
hunk ./src/Darcs/UI/Commands/Convert.hs 263
-convertImportOpts :: DarcsOption a
- (Maybe String
- -> O.SetScriptsExecutable
- -> O.PatchFormat
- -> O.WithWorkingDir
- -> Maybe O.StdCmdAction
- -> Bool
- -> Bool
- -> O.Verbosity
- -> Bool
- -> O.PatchIndexOption
- -> O.UseCache
- -> Maybe String
- -> Bool
- -> Maybe String
- -> Bool
- -> a)
-convertImportOpts = convertImportBasicOpts `withStdOpts` convertImportAdvancedOpts
-
hunk ./src/Darcs/UI/Commands/Convert.hs 275
- , commandAdvancedOptions = odesc convertImportAdvancedOpts
- , commandBasicOptions = odesc convertImportBasicOpts
- , commandDefaults = defaultFlags convertImportOpts
- , commandCheckOptions = ocheck convertImportOpts
+ , commandAdvancedOptionsSpec = Advanced convertImportAdvancedOpts
+ , commandBasicOptionsSpec = Basic convertImportBasicOpts
hunk ./src/Darcs/UI/Commands/Diff.hs 37
-import Darcs.UI.Commands ( DarcsCommand(..), withStdOpts, nodefaults, amInHashedRepository )
+import Darcs.UI.Commands ( DarcsCommand(..), Basic(..), Advanced(..), nodefaults, amInHashedRepository )
hunk ./src/Darcs/UI/Commands/Diff.hs 41
-import Darcs.UI.Options ( DarcsOption, (^), odesc, ocheck, defaultFlags, parseFlags )
+import Darcs.UI.Options ( DarcsOption, (^), parseFlags )
hunk ./src/Darcs/UI/Commands/Diff.hs 122
-diffOpts :: DarcsOption a
- ([O.MatchFlag]
- -> O.ExternalDiff
- -> Bool
- -> Maybe String
- -> Bool
- -> Maybe O.StdCmdAction
- -> Bool
- -> Bool
- -> O.Verbosity
- -> Bool
- -> WantGuiPause
- -> O.UseCache
- -> Maybe String
- -> Bool
- -> Maybe String
- -> Bool
- -> a)
-diffOpts = diffBasicOpts `withStdOpts` diffAdvancedOpts
-
hunk ./src/Darcs/UI/Commands/Diff.hs 134
- , commandAdvancedOptions = odesc diffAdvancedOpts
- , commandBasicOptions = odesc diffBasicOpts
- , commandDefaults = defaultFlags diffOpts
- , commandCheckOptions = ocheck diffOpts
+ , commandAdvancedOptionsSpec = Advanced diffAdvancedOpts
+ , commandBasicOptionsSpec = Basic diffBasicOpts
Context:
[integrate new options subsystem
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20141104223757
Ignore-this: 9636f6d007ba4241b19b9b964bf886a3
The conversion is complete in the sense that the old Darcs.UI.Arguments is
now obsolete and can be removed. Command options are specified using the new
"typed" DarcsOption type from Darcs.UI.Options. All available tests succeed.
However, it is incomplete in the sense that there are still many places
where the list of DarcsFlag is scanned or manipulated directly. Removing
these direct accesses will be an on-going effort; when it is complete we can
replace [DarcsFlag] with an abstract data type.
This patch contains an almost complete re-implementation of
Darcs.UI.ArgumentDefaults under the new name Darcs.UI.Defaults. This adds a
new dependency on regex-applicative, see the comments in the code.
I have also made the tentative change of using a command specific
configuration record for two of the commands, namely "record" and "amend".
It remains to be seen whether this is the right approach and the other
commands should follow it.
Rebased by Ganesh Sittampalam <ganesh at earth.li> to integrate with the latest
darcs code. Originally in two patches that first introduced and then
switched to the new code; I merged them into one to make the rebasing easier.
]
[Work around haskell-src-exts (and hence hlint) parse errors
Ganesh Sittampalam <ganesh at earth.li>**20141029163818
Ignore-this: 3e77eceae03d2f001b7a98779b9ea88a
]
[resolve conflicts
Ganesh Sittampalam <ganesh at earth.li>**20141025160030
Ignore-this: 7a42ce435cad0afcdad55c8eab3d6599
]
[initial version of 'rebase changes' command
Ganesh Sittampalam <ganesh at earth.li>**20130311182415
Ignore-this: dc58615c9d248c61a588ba6e1ab3eab6
]
[make getChangesInfo take a PatchFilter instead of a Repository
Ganesh Sittampalam <ganesh at earth.li>**20130218234725
Ignore-this: 96e88fa9f0c4eab1f68080484006c63d
]
[bundle up checking for patch index and using it
Ganesh Sittampalam <ganesh at earth.li>**20130218233321
Ignore-this: a253261a2b5eefbf7113af27694d6beb
]
[minimize bundle contexts by default, allow ctrl-c or --no-minimize
Guillaume Hoffmann <guillaumh at gmail.com>**20141017174032
Ignore-this: 3a75c1ef6dce9d8d72e6187f7b6bf91
]
[resolve issue2409: implement darcs rebase apply
Ganesh Sittampalam <ganesh at earth.li>**20141022073448
Ignore-this: a1c0c535bc3c0a80208d5c0a66f24a3d
]
[switch applyCmd to use the PatchApplier abstraction
Ganesh Sittampalam <ganesh at earth.li>**20141022005542
Ignore-this: e4bd8bf03aaaacaf3ab4d56db652ef02
]
[reuse the standard pullCmd for rebase
Ganesh Sittampalam <ganesh at earth.li>**20141022002250
Ignore-this: 9dd91d42805e4641bbcbd4d168d4d8a2
This involves a rather complicated abstraction that would be major overkill
for the approximately 6 lines of copy and pasted code that it saves.
However it should extend to applyCmd, which is substantially bigger.
]
[generalise applyPatchesForRebase along the same lines as applyPatches
Ganesh Sittampalam <ganesh at earth.li>**20141021195533
Ignore-this: bb7a08b357fa17aaa68f4535c8d24049
]
[Share applyPatches code between pull and apply
Ganesh Sittampalam <ganesh at earth.li>**20141021160825
Ignore-this: e36dbb1dafe019cd55900b5a76561bc0
Abstract the applyPatches function from the apply command, and make pull
use it.
This means the following changes to apply:
- The outcome is now displayed using 'putInfo', which means it will
respect options like '-q' where it didn't before. This seems reasonable.
It means the following changes to pull:
- We now call 'setEnvDarcsPatches'. This seems reasonable.
- We now call 'withSignalsBlocked' when applying patches. I think this is
harmless or an improvement.
- The output messages are a bit more generic, but I don't think any important
detail is lost.
- We now call 'redirectOutput' around the messages. --reply isn't passed
to pull so this should make no difference.
]
[--minimize for obliterate -O
Guillaume Hoffmann <guillaumh at gmail.com>**20141015210534
Ignore-this: a99c974c6d42d0a27643214b48cb70c9
]
[resolve issue1514: send --minimize-context flag for send
Guillaume Hoffmann <guillaumh at gmail.com>**20141015210457
Ignore-this: 486b70607488643e092bb8f46cd046d4
]
[use now -h and --hash as shortcut flags to match on patch hash
Guillaume Hoffmann <guillaumh at gmail.com>**20141008185829
Ignore-this: a8caae8a4ef50049fae3954867f2e3a7
]
[Resolve issue2249: Rename isFile to isValidLocalPath and WorkRepoURL to WorkRepoPossibleURL
mle at mlen.pl**20140928102835
Ignore-this: 7273172e1131a0a6870f1d203d241b97
]
[print an informative message after rollback
Ganesh Sittampalam <ganesh at earth.li>**20140725204057
Ignore-this: dc5d37deeb3cc5455ff10920a531dd38
]
[switch from deprecated System.Cmd to System.Process
Ganesh Sittampalam <ganesh at earth.li>**20140926163517
Ignore-this: 5a05007a7e868cebe16252262337756
]
[support mtl 2.2
Ganesh Sittampalam <ganesh at earth.li>**20140926155729
Ignore-this: 868ab98d5f71b026ba87f0053f67c69d
]
[remove creator-hash flag unused since annotate rewrite
Guillaume Hoffmann <guillaumh at gmail.com>**20140825195932
Ignore-this: 2a857b399a1815d78ef95b5d18f8ba2a
]
[New option "--reorder" for the command rebase pull.
Ale Gadea <alex.aegf at gmail.com>**20140709003350
Ignore-this: cf17849e0ff84b4dd72f3bac47572e2
The option --reorder moves to the top the uncommon set
of patches between the current repository and remote
repository.
]
[New option "--reorder" for the command pull and apply.
Ale Gadea <alex.aegf at gmail.com>**20140709003342
Ignore-this: e2b2d705d2d515dc5b54201be4f7c76f
The option --reorder moves to the top the uncommon
set of patches between the current repository and remote
repository.
]
[replaced duplicate DiffAlgorithm in Darcs.Repository.Flags with re-export
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20140629235443
Ignore-this: 8135bf861d054d75f5ee4ce9116ea208
]
[Darcs.Repository.Flags: added Show instances for all types
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20140629112323
Ignore-this: 27f18b99ebbc4f09f7c2bf8f6953ff2d
]
[Darcs.Repository.Flags: added Eq instance for UseIndex
Ben Franksen <benjamin.franksen at helmholtz-berlin.de>**20140613093130
Ignore-this: 925bd846affdc9566fd4de260b296d39
]
[clarify naming of applyPatches functions
Ganesh Sittampalam <ganesh at earth.li>**20141021140658
Ignore-this: 71936b7fbc48182b6c54b106f1603db3
]
[resolve issue1624: bucketed cache.
Marcio Diaz <marcio.diaz at gmail.com>**20140716102401
Ignore-this: 2d077f5c10156e4a00631fbc4f8c3119
]
[enable to match on patch hash prefix and ignore case
Guillaume Hoffmann <guillaumh at gmail.com>**20140724132850
Ignore-this: d0e43fceb3682dff95b51e51d84729e8
]
[show patch hash in UI and put author and date on separate lines
Guillaume Hoffmann <guillaumh at gmail.com>**20140724131644
Ignore-this: 225478cb9a7a1c82c73668ed12e27a46
some cleanups:
* use correctly makePatchname instead of makeFilename in other
places of the code
* remove unused RepoPatchInfo
* remove unused idpatchinfo
* remove unused makeAltFilename
* remove unused HTML class instance of PatchInfo
]
[Always use MyersDiff when removing a file - the diff will be identical
Owen Stephens <darcs at owenstephens.co.uk>**20140511150625
Ignore-this: 5d81f5802cca1fd0f9d9b61f7e3500d3
]
[Tidy up of Move - refactor out some common code
Owen Stephens <darcs at owenstephens.co.uk>**20140511115159
Ignore-this: 270727265518e70b6c2849e7b2db3366
]
[Allow post-hoc moves to known paths
Owen Stephens <darcs at owenstephens.co.uk>**20140430023525
Ignore-this: f5f0b4d7a90e32b8f4e8a0eed47d2022
The new behaviour is to record patches that first delete the original contents,
before adding the move patch
]
[Resolve issue2380: allow darcs mv into known, but deleted in working, file
Owen Stephens <darcs at owenstephens.co.uk>**20140424211940
Ignore-this: 8c4f8d77480dd360d051b944dc22c6d
]
[Tidy up checkNewAndOldFilenames in the Move command
Owen Stephens <darcs at owenstephens.co.uk>**20140422235835
Ignore-this: f5c0fb784b1d9a69f7d2641f9111e580
]
[remove patch index flags from rollback command
Guillaume Hoffmann <guillaumh at gmail.com>**20140612170904
Ignore-this: 342ccf1ce50dd76b5af334df2298f63
]
[resolve issue2396: make convert a supercommand and enhance help strings
Guillaume Hoffmann <guillaumh at gmail.com>**20140610210546
Ignore-this: 41493c28dab5a745b1d2c7107212724e
]
[marksfile support for convert --export
Guillaume Hoffmann <guillaumh at gmail.com>**20140609190214
Ignore-this: 154f9a34ec7c65eaa64ab42462c60705
]
[Resolve Issue2361: optimize --reorder runs forever with one repository
Ale Gadea <alex.aegf at gmail.com>**20140605210012
Ignore-this: b18bc37e5d6668df62f05679c629e08c
]
[factorize boilerplate of optimize subcommands
Guillaume Hoffmann <guillaumh at gmail.com>**20140605174035
Ignore-this: 13cc1ac6f5a70fd96815dca2ab12f76c
]
[resolve issue2394: make optimize a supercommand
Guillaume Hoffmann <guillaumh at gmail.com>**20140603201207
Ignore-this: 841fbf0c5e0017eaff8b87b75ad80a37
]
[make optimize command respect --quiet by using putInfo
benjamin.franksen at helmholtz-berlin.de**20140511105622
Ignore-this: f4a139619c68470fe821929958a910b
]
[darcs.cabal: make Haskell2010 the default-language for all stanzas
benjamin.franksen at helmholtz-berlin.de**20140511102244
Ignore-this: 44afc0f4c5b5de0751edd2f99764dc20
This implied some more changes: we must demand cabal version >= 1.10, and
change the extensions fields to default-extensions; in the implementation of
some of the commands, needed to fix the indentation of do blocks.
]
[implement doFastZip to create zip archive from pristine tree
Guillaume Hoffmann <guillaumh at gmail.com>**20140516190946
Ignore-this: 483ef7fffc417a4811d2d8cd90885e18
]
[Accept issue2382: darcs is confused if a dir is moved inplace of a file
Owen Stephens <darcs at owenstephens.co.uk>**20140427225132
Ignore-this: b4fef46928598bbc44c61325f6dc11b2
]
[Resolve Issue2244: darcs tag should warn about duplicate tags
Ale Gadea <alex.aegf at gmail.com>**20140507183109
Ignore-this: 8d25e1130bff79907d3db39d02f40197
Make darcs tag t, with t already an existing tag, cause a warning message.
]
[Allow options with path arguments to be specified in defaults file
benjamin.franksen at helmholtz-berlin.de**20140404192946
Ignore-this: ff2ff9e6d96a06c4a8df29b3c9819b22
]
[fixed cut-n-paste error in haddock comment
benjamin.franksen at helmholtz-berlin.de**20140403224430
Ignore-this: 7e5b9fe7bbecbb52d8b639772b0fd208
]
[resolve issue2314: output-auto-name in defaults file
benjamin.franksen at helmholtz-berlin.de**20140403170012
Ignore-this: 6dbd187b78bc2b108920cc0eaabfa5af
]
[resolve issue1268: enable to write darcs init x
Guillaume Hoffmann <guillaumh at gmail.com>**20140425200752
Ignore-this: 2586d59ba17f94b655c3a48df80b5d66
Original patch by Radoslav Dorcik
]
[rename get to clone
Guillaume Hoffmann <guillaumh at gmail.com>**20140425175210
Ignore-this: 2c27cb2bc6a9978988386743b241c0b3
]
[remove Put since Get can clone to ssh destination faster
Guillaume Hoffmann <guillaumh at gmail.com>**20140425063225
Ignore-this: c0dbc05fc7511977381abba47728810a
]
[resolve issue1066: clone to ssh URL by locally cloning then copying by scp
Guillaume Hoffmann <guillaumh at gmail.com>**20140425060647
Ignore-this: 2778bc4774fe8d5c53d0011b2193c1c2
Introduce an internal flag ForgetParent that enable to clone
repositories while forgetting about their source (do not copy
sources nor caches).
]
[do not tolerate ctrl+c when --complete is passed
Guillaume Hoffmann <guillaumh at gmail.com>**20140425053440
Ignore-this: 856378499c61de4e4281d1ed966ede76
]
[do not print message twice when patches pack grabbing fails
Guillaume Hoffmann <guillaumh at gmail.com>**20140424165929
Ignore-this: 148f8ca132725e81dd52d64f00cbd24b
]
[create inventories subdir at darcs init
Guillaume Hoffmann <guillaumh at gmail.com>**20140421133938
Ignore-this: 5ace4beaf6c27c8a5105d74db977f61a
]
[TAG 2.9.9
Ganesh Sittampalam <ganesh at earth.li>**20140424063828
Ignore-this: ae3cb4369f15af8cb2f19d6f5603d935
]
Patch bundle hash:
cde0c9f8b2c9e283f9259ce4f1fcb340b4bafd5b
More information about the darcs-devel
mailing list