David,
Is this a type safe Monadish that you would accept?
Note that RepoInState is broken in the same way that Context was and maybeToFL
is. But, what else can we do? I don't have any other bright ideas other
than maybe you'll feel like we don't need it at all? As in, we could make it:
IORepo p r u tr a
and drop RepoInState like a bad habbit. I think that presents new problems
in the type of (>>>=).
I can think far enough ahead to see how we'll instantiate the RepoInStates,
but maybe we could export,
newRepoState :: Sealed3 RepoInState
newRepoState = Sealed3 RepoInState
And then let it trickle down from pattern matches? Of course, we probably
also want to add, unsafeCoerceR :: r x y z -> r a b c
In the event that we need to coerce a repository or a RepoInState.
Probably one function that is missing is
lowerIORepo :: IORepo p i j a -> IO a
I also may have export evil goblins from Repositoy.InternalTypes. It's even
possible that by using newtype deriving that I've open backed doors. Perhaps
there is a way to derive lowerIORepo already? Deriving MonadIO is
nice because it lets us use liftIO (check the patch for why that's nice).
Deriving Monad is nice because when then as long as the type witnesses are
not changing we can just use the monad instance.
Ganesh was helping me with it and he recomended making it a ReaderT so that
the Repository is hiding inside. In the refactoring I've done so far, I didn't
take advantage of that, but in principle it should work. It almost seems like
we could just throw away RepoInState and replace it with Repository p. In fact,
that's probably what I should do. But, then how do you declare IORepo in
a way that allows (>>>=) to have the right type?
Oh right, so here was the problem. We don't want to use State because you
could fetch a previous state and use it later. But, we wanted to store the
(Repository p), so a Reader works for storing (Repository p) since that part
doesn't change. That's why we farmed out the part that can change to
the type RepoInState. I think not storing the Repository in a Reader
still presents the same issue of needing RepoInState. I think without
RepoInState we need all the permutations of type changes implemented as
functions which is yucky :(
Please advise.
Jason
Wed Aug 27 20:38:22 PDT 2008 Jason Dagit <[EMAIL PROTECTED]>
* Is this Monadish?
New patches:
[Is this Monadish?
Jason Dagit <[EMAIL PROTECTED]>**20080828033822] hunk ./src/Darcs/Repository/HashedRepo.lhs 40
import System.IO ( stderr, hPutStrLn )
import Data.List ( delete )
import Control.Monad ( unless )
+import Control.Monad.Trans ( liftIO )
import Workaround ( renameFile, createDirectoryIfMissing )
import Darcs.Flags ( DarcsFlag )
hunk ./src/Darcs/Repository/HashedRepo.lhs 52
import Darcs.Repository.HashedIO ( applyHashed, slurpHashed, hashSlurped,
copyHashed, syncHashed, copyPartialsHashed,
clean_hashdir )
-import Darcs.Repository.InternalTypes ( Repository(..), extractCache )
+import Darcs.Repository.InternalTypes ( Repository(..), IORepo, RepoInState, extractCache, (>>>=), (>>>) )
import Darcs.Hopefully ( PatchInfoAnd, patchInfoAndPatch, n2pia, info,
extractHash, createHashed )
import Darcs.SlurpDirectory ( Slurpy, empty_slurpy, slurp_remove, slurp )
hunk ./src/Darcs/Repository/HashedRepo.lhs 83
i <- gzReadFilePS (darcsdir++"/hashed_inventory")
writeBinFile (darcsdir++"/tentative_pristine") $ "pristine:" ++ inv2pris i
-finalize_tentative_changes :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> IO ()
+finalize_tentative_changes :: RepoPatch p => Repository p -> [DarcsFlag] -> IORepo p (RepoInState C(r u t)) (RepoInState C(t u t)) ()
finalize_tentative_changes r opts =
do let t = darcsdir++"/tentative_hashed_inventory"
-- first let's optimize it...
hunk ./src/Darcs/Repository/HashedRepo.lhs 87
- debugMessage "Optimizing the inventory..."
- ps <- read_tentative_repo r opts "."
- write_tentative_inventory (extractCache r) opts ps
- -- then we'll add in the pristine cache,
- i <- gzReadFilePS t
- p <- gzReadFilePS $ darcsdir++"/tentative_pristine"
- writeDocBinFile t $ pris2inv (inv2pris p) i
- -- and rename it to its final value
- renameFile t $ darcsdir++"/hashed_inventory"
- -- note: in general we can't clean the pristine cache, because a
- -- simultaneous get might be in progress
+ liftIO $ debugMessage "Optimizing the inventory..."
+ read_tentative_repo r opts "." >>>= \ps ->
+ write_tentative_inventory (extractCache r) opts ps >>>
+ do -- then we'll add in the pristine cache,
+ i <- liftIO $ gzReadFilePS t
+ p <- liftIO $ gzReadFilePS $ darcsdir++"/tentative_pristine"
+ liftIO $ writeDocBinFile t $ pris2inv (inv2pris p) i
+ -- and rename it to its final value
+ liftIO $ renameFile t $ darcsdir++"/hashed_inventory"
+ -- note: in general we can't clean the pristine cache, because a
+ -- simultaneous get might be in progress
hunk ./src/Darcs/Repository/HashedRepo.lhs 99
-clean_pristine :: Repository p C(r u t) -> IO ()
+clean_pristine :: Repository p -> IO ()
clean_pristine r@(Repo d opts _ _) = withCurrentDirectory d $
do -- we'll remove obsolete bits of our pristine cache
debugMessage "Cleaning out the pristine cache..."
hunk ./src/Darcs/Repository/HashedRepo.lhs 113
appendBinFile (darcsdir++"/tentative_hashed_inventory") $ "\nhash: " ++ hash ++ "\n"
return $ darcsdir++"/patches/" ++ hash
-remove_from_tentative_inventory :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag]
- -> FL (Named p) C(x t) -> IO ()
+remove_from_tentative_inventory :: RepoPatch p => Repository p -> [DarcsFlag]
+ -> FL (Named p) C(x t) -> IORepo p (RepoInState C(r u t)) (RepoInState C(r u x)) ()
remove_from_tentative_inventory repo opts to_remove =
-- FIXME: This algorithm should be *far* simpler. All we need do is
-- to to remove the patches from a patchset and then write that
hunk ./src/Darcs/Repository/HashedRepo.lhs 120
-- patchset. The commutation behavior of PatchInfoAnd should track
-- which patches need to be rewritten for us.
- do allpatches <- read_tentative_repo repo opts "."
- skipped :< _ <- return $ commute_to_end to_remove allpatches
- okay <- simple_remove_from_tentative_inventory repo opts
- (mapFL patch2patchinfo to_remove ++ mapFL patch2patchinfo skipped)
- unless okay $ bug "bug in HashedRepo.remove_from_tentative_inventory"
- sequence_ $ mapFL (add_to_tentative_inventory (extractCache repo) opts . n2pia) skipped
+ read_tentative_repo repo opts "." >>>= \allpatches -> do
+ skipped :< _ <- return $ commute_to_end to_remove allpatches
+ okay <- simple_remove_from_tentative_inventory repo opts
+ (mapFL patch2patchinfo to_remove ++ mapFL patch2patchinfo skipped)
+ unless okay $ bug "bug in HashedRepo.remove_from_tentative_inventory"
+ liftIO $ sequence_ $ mapFL (add_to_tentative_inventory (extractCache repo) opts . n2pia) skipped
hunk ./src/Darcs/Repository/HashedRepo.lhs 127
-simple_remove_from_tentative_inventory :: forall p C(r u t). RepoPatch p =>
- Repository p C(r u t) -> [DarcsFlag] -> [PatchInfo] -> IO Bool
-simple_remove_from_tentative_inventory repo opts pis = do
- inv <- read_tentative_repo repo opts "."
+simple_remove_from_tentative_inventory :: forall p C(r u t x). RepoPatch p =>
+ Repository p -> [DarcsFlag] -> [PatchInfo] -> IORepo p (RepoInState C(r u t)) (RepoInState C(r u x)) Bool
+simple_remove_from_tentative_inventory repo opts pis =
+ read_tentative_repo repo opts "." >>>= \inv -> do
case cut_inv pis inv of
Nothing -> return False
hunk ./src/Darcs/Repository/HashedRepo.lhs 133
- Just (Sealed inv') -> do write_tentative_inventory (extractCache repo) opts inv'
- return True
- where cut_inv :: [PatchInfo] -> PatchSet p C(x) -> Maybe (SealedPatchSet p)
+ Just (Sealed inv') -> write_tentative_inventory (extractCache repo) opts inv' >>> return True
+ where cut_inv :: [PatchInfo] -> PatchSet p C(y) -> Maybe (SealedPatchSet p)
cut_inv [] x = Just $ seal x
cut_inv x (NilRL:<:rs) = cut_inv x rs
cut_inv xs ((hp:<:r):<:rs) | info hp `elem` xs = cut_inv (info hp `delete` xs) (r:<:rs)
hunk ./src/Darcs/Repository/HashedRepo.lhs 144
writeHashFile c opts subdir d = do debugMessage $ "Writing hash file to "++subdir
writeFileUsingCache c opts subdir $ renderPS d
-read_repo :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> String -> IO (PatchSet p C(r))
-read_repo repo opts d = do
+
+read_repo :: RepoPatch p => Repository p -> [DarcsFlag] -> String -> IORepo p (RepoInState C(r u t)) (RepoInState C(r u t)) (PatchSet p C(r))
+read_repo repo opts d = liftIO $ do
realdir <- absolute_dir d
Sealed ps <- read_repo_private repo opts realdir "hashed_inventory" `catch`
(\e -> do hPutStrLn stderr ("Invalid repository: " ++ realdir)
hunk ./src/Darcs/Repository/HashedRepo.lhs 153
ioError e)
return $ unsafeCoerceP ps
-read_tentative_repo :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> String -> IO (PatchSet p C(t))
-read_tentative_repo repo opts d = do
+read_tentative_repo :: RepoPatch p => Repository p -> [DarcsFlag] -> String -> IORepo p (RepoInState C(r u t)) (RepoInState C(r u t)) (PatchSet p C(t))
+read_tentative_repo repo opts d = liftIO $ do
realdir <- absolute_dir d
Sealed ps <- read_repo_private repo opts realdir "tentative_hashed_inventory" `catch`
(\e -> do hPutStrLn stderr ("Invalid repository: " ++ realdir)
hunk ./src/Darcs/Repository/HashedRepo.lhs 161
ioError e)
return $ unsafeCoerceP ps
-read_repo_private :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag]
+read_repo_private :: RepoPatch p => Repository p -> [DarcsFlag]
-> FilePath -> FilePath -> IO (SealedPatchSet p)
read_repo_private repo opts d iname =
do inventories <- read_inventory_private repo opts (d++"/"++darcsdir) iname
hunk ./src/Darcs/Repository/HashedRepo.lhs 215
"which is",
renderString $ human_friendly i]
-write_tentative_inventory :: RepoPatch p => Cache -> [DarcsFlag] -> PatchSet p C(x) -> IO ()
-write_tentative_inventory c opts = write_either_inventory c opts "tentative_hashed_inventory"
hunk ./src/Darcs/Repository/HashedRepo.lhs 216
-copy_repo :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> String -> IO ()
+write_tentative_inventory :: RepoPatch p => Cache -> [DarcsFlag] -> PatchSet p C(x) -> IORepo p (RepoInState C(r u t)) (RepoInState C(r u x)) ()
+write_tentative_inventory c opts = liftIO . (write_either_inventory c opts "tentative_hashed_inventory")
+
+copy_repo :: RepoPatch p => Repository p -> [DarcsFlag] -> String -> IO ()
copy_repo repo@(Repo outr _ _ _) opts inr = do
createDirectoryIfMissing False (outr++"/"++darcsdir++"/inventories")
copyFileOrUrl opts (inr++"/"++darcsdir++"/hashed_inventory") (outr++"/"++darcsdir++"/hashed_inventory")
hunk ./src/Darcs/Repository/HashedRepo.lhs 267
pihash :: (PatchInfo,String) -> Doc
pihash (pinf,hash) = showPatchInfo pinf $$ text ("hash: " ++ hash ++ "\n")
-read_inventory_private :: Repository p C(r u t) -> [DarcsFlag] -> String -> String
+read_inventory_private :: Repository p -> [DarcsFlag] -> String -> String
-> IO [[(PatchInfo, String)]]
read_inventory_private repo opts d iname = do
i <- skip_pristine `fmap` fetchFilePS (d++"/"++iname) Uncachable
hunk ./src/Darcs/Repository/InternalTypes.lhs 20
\begin{code}
{-# OPTIONS_GHC -cpp -fglasgow-exts #-}
#include "gadts.h"
-module Darcs.Repository.InternalTypes ( Repository(..), RepoType(..), Pristine(..)
- , extractCache
+module Darcs.Repository.InternalTypes ( Repository(..), RepoType(..), Pristine(..), IORepo, RepoInState
+ , extractCache, (>>>=), (>>>), mreturn
) where
hunk ./src/Darcs/Repository/InternalTypes.lhs 24
+import Control.Monad.Reader ( ReaderT(..), MonadReader )
+import Control.Monad.Trans ( MonadIO )
import Darcs.Repository.Cache ( Cache )
import Darcs.Flags ( DarcsFlag )
import Darcs.Repository.Format ( RepoFormat )
hunk ./src/Darcs/Repository/InternalTypes.lhs 36
| HashedPristine
deriving ( Show )
-data Repository (p :: * C(-> * -> *)) C(recordedstate unrecordedstate tentativestate) = Repo !String ![DarcsFlag] !RepoFormat !(RepoType p) deriving ( Show )
+data Repository (p :: * C(-> * -> *)) = Repo !String ![DarcsFlag] !RepoFormat !(RepoType p) deriving ( Show )
+
+data RepoInState C(recordedstate unrecordedstate tentativelyrecordedstate) = RepoInState
data RepoType (p :: * C(-> * -> *)) = DarcsRepository !Pristine Cache deriving ( Show )
hunk ./src/Darcs/Repository/InternalTypes.lhs 42
-extractCache :: Repository p C(r u t) -> Cache
+extractCache :: Repository p -> Cache
extractCache (Repo _ _ _ (DarcsRepository _ c)) = c
hunk ./src/Darcs/Repository/InternalTypes.lhs 44
+
+newtype IORepo (p :: * C(-> * -> *)) C(i j) a = IORepo {
+ runIORepo :: ReaderT (Repository p) IO a
+ } deriving (Functor, Monad, MonadIO, MonadReader (Repository p))
+
+(>>>=) :: IORepo p x y a -> (a -> IORepo p y z b) -> IORepo p x z b
+-- I don't know if this is correct, but I derived it from looking
+-- at how ReaderT is implemented and it seems to type check.
+m >>>= k = case runIORepo m of
+ m' -> IORepo $ ReaderT $ \r -> do
+ a <- runReaderT m' r
+ case runIORepo (k a) of
+ b -> runReaderT b r
+
+(>>>) :: IORepo p x y a -> IORepo p y z b -> IORepo p x z b
+a >>> b = a >>>= (const b)
+
+mreturn :: a -> IORepo p x x a
+mreturn = return
+
\end{code}
Context:
[add more modules to make witnesses.
David Roundy <[EMAIL PROTECTED]>**20080827201217]
[updates to Darcs.Patch.Unit for type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080827165445]
[Refactor get_matcher and apply_inv_to_matcher functions from Darcs.Match module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080827105843]
[Resolve issue966: fix apply_inv_to_matcher_inclusive.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080827091833]
[Simplify withCurrentDirectory.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080823004712]
[updates to Sealed.lhs to support type witness refactor in commands
Jason Dagit <[EMAIL PROTECTED]>**20080827165357]
[updates to Ordered.lhs to support type witness refactor in commands
Jason Dagit <[EMAIL PROTECTED]>**20080827165053]
[make Annotate.lhs compile with type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080827164003]
[fix type witnesses in Internal.
David Roundy <[EMAIL PROTECTED]>**20080827190200]
[updates to Repository.Internal to fix conflicts and support type witness refactor in commands
Jason Dagit <[EMAIL PROTECTED]>**20080827165327]
[fix error in Properties due to new commuteFL
Jason Dagit <[EMAIL PROTECTED]>**20080827044025]
[fix minor type witness compile error with new commuteFL
Jason Dagit <[EMAIL PROTECTED]>**20080827041344]
[fix conflicts with get_extra changes
Jason Dagit <[EMAIL PROTECTED]>**20080827041321]
[improve reporting for bug in get_extra
Jason Dagit <[EMAIL PROTECTED]>**20080825011810]
[Finish refactor of Unrevert as well as making it pass double-unrevert.sh
Jason Dagit <[EMAIL PROTECTED]>**20080825185907]
[add double-unrevert.sh test
Jason Dagit <[EMAIL PROTECTED]>**20080825183235]
[partial type witnesses in Unrevert
Jason Dagit <[EMAIL PROTECTED]>**20080813053837]
[More ChangeLog entries since 2.0.2
Eric Kow <[EMAIL PROTECTED]>**20080826082638]
[fix bug in defaultrepo.
David Roundy <[EMAIL PROTECTED]>**20080827152710]
[fix accidental reversal in tentativelyAddToPending
Jason Dagit <[EMAIL PROTECTED]>**20080826003605]
[minor refator to get_extra improve comments
Jason Dagit <[EMAIL PROTECTED]>**20080825170111]
[Same ChangeLog entries since 2.0.2
Eric Kow <[EMAIL PROTECTED]>**20080825164844]
[Some more globally ignored changes.
Eric Kow <[EMAIL PROTECTED]>**20080825164814]
[Changelog (ignore 'Add a test entries')
Eric Kow <[EMAIL PROTECTED]>**20080822152614]
[Simplify filepath handling, cutting lots of hardly-used code.
David Roundy <[EMAIL PROTECTED]>**20080824173919]
[don't bother computing path when checking prereqs (since we now can handle looking at beginning/ending working directories).
David Roundy <[EMAIL PROTECTED]>**20080823193448]
[resolve issue950: fix fix_filepath to work with --repodir (and add test demonstrating this).
David Roundy <[EMAIL PROTECTED]>**20080823185940]
[eliminate fix_flag.
David Roundy <[EMAIL PROTECTED]>**20080823180947]
[add new framework for ensuring that certain arguments are converted to absolute paths.
David Roundy <[EMAIL PROTECTED]>**20080823164410
Currently this is only used for --output, but there are a few other
commands we can fix. Ideally, we'll fix enough flags that fix_flag
will become identity, and can be removed.
]
[make Darcs.Lock functions accept FilePathLike arguments.
David Roundy <[EMAIL PROTECTED]>**20080823162940]
[refactor maybeMkSubPath very slightly.
David Roundy <[EMAIL PROTECTED]>**20080823143505]
[refactor repoPath very slightly.
David Roundy <[EMAIL PROTECTED]>**20080823143153]
[make makeAbsolute behavior match comment.
David Roundy <[EMAIL PROTECTED]>**20080823121149]
[Fix makeAbsolute to work with '../foo' paths.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080822184823
This fixes option arguments with '../', like 'darcs send -o ../foo.dpatch'.
Part of issue950.
]
[move withCurrentDirectory, withTempDir and withPermDir
David Roundy <[EMAIL PROTECTED]>**20080822155100
out of RepoPath. This is a pretty invasive change, part of a pathetic
attempt to allow AbsolutePath to permeate the code when we know that
paths are absolute. Eventually this will allow us to statically
ensure that paths *are* absolute. For now, it mostly just makes a few
things more ugly. Eventually we'd like to only use (for instance)
Darcs.RepoPath.getCurrentDirectory, which itself witnesses that the
resulting path must be absolute.
]
[rewrite mkAbsolutePath to be safe.
David Roundy <[EMAIL PROTECTED]>**20080822150037]
[resolve conflicts.
David Roundy <[EMAIL PROTECTED]>**20080822133823]
[Resolve issue936: fix type witnesses configure check.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819193228]
[Use forkIO in URL module as suggested by Simon Marlow.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819182648]
[Remove HTTP.copyUrl, integrate it to URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819170350]
[More URL module refactoring.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819145234]
[Canonize Nathaniel Filardo and Simon Marlow.
Eric Kow <[EMAIL PROTECTED]>**20080822021232]
[Add test case for issue966 (from Dan Pascu's bug report)
Eric Kow <[EMAIL PROTECTED]>**20080822020616]
[remove trailing whitespace.
David Roundy <[EMAIL PROTECTED]>**20080821224353]
[Documentation for match touch primitive.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080821193706]
[Resolve issue115: match patches touching given files.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080821183355]
[fix type witnesses in with_selected_patch_from_repo.
David Roundy <[EMAIL PROTECTED]>**20080820130112]
[clean up bugs functions (eliminate darcsBug.h).
David Roundy <[EMAIL PROTECTED]>**20080820124425]
[Fix a bug with incorrectly specified with_selecte_patch_from_repository.
Jason Dagit <[EMAIL PROTECTED]>**20080819233348]
[Remove HTTP.exists, use Autoconf.have_HTTP instead.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819131617]
[fix improper use of bug in HTTP.
David Roundy <[EMAIL PROTECTED]>**20080819211201
In these cases failure is not a bug, it may just as well mean that the
user has typed in a bad URL.
]
[Do not import HTTP module in Darcs.Bug, use bug and debugFail for error reporting in HTTP module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819124207]
[fix incompatibility with ghc 6.6.
David Roundy <[EMAIL PROTECTED]>**20080819161540]
[make scan_bundle create a lazy patch bundle.
David Roundy <[EMAIL PROTECTED]>**20080819154624
The idea is to more easily catch errors in which the patch bundle is
misused.
]
[resolve conflicts with Darcs.Ordered change.
David Roundy <[EMAIL PROTECTED]>**20080819153558]
[replace separate_middle_last_from_first and separate_last_from_first_middle with get_choices
Jason Dagit <[EMAIL PROTECTED]>**20080815222635]
[correct a bug in with_selected_patches_from_repository
Jason Dagit <[EMAIL PROTECTED]>**20080815201125
Fixing this bug allows w_s_p_f_r to have the expected type signature
and also corrects a problem where the non-selected patches were returned
in the wrong context.
]
[refine type witnesses in SelectChanges
Jason Dagit <[EMAIL PROTECTED]>**20080813050425]
[make WhatsNew work with type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080813044354]
[major refactor of SelectChanges to work with type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080813031625]
[Eliminate HopefullyPrivate (fixed patch edition)
[EMAIL PROTECTED]
[Move Darcs.Patch.Ordered to Darcs.Ordered since it isn't patchy
[EMAIL PROTECTED]
[Fix use of threadWaitRead on Windows
Simon Marlow <[EMAIL PROTECTED]>**20080819141151
threadWaitRead doesn't work on Windows in all GHC versions < 6.10.1
(which isn't released yet).
This means that since darcs is compiled with -threaded, when compiled
with GHC < 6.10 on Windows, darcs will not respond to ^C when waiting
for user input.
]
[Fix Windows build
Simon Marlow <[EMAIL PROTECTED]>**20080819134252
On Windows, System.Posix.Types.FileOffset is not the same as the type
of the st_size field of the stat structure: the latter is Int64,
whereas COff == Int32.
This is almost ceratinly not the right fix, but it gets the build
going.
In general I don't recommend using System.Posix.* on Windows. The
right way is to either use the official platform-independent libraries
like System.IO, System.Directory or System.Process, or to use
System.Win32 directly.
]
[URL module refactoring.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080817124816]
[Do not compile curl support if libwww is enabled.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080817121834]
[URL.hs: always import debugFail, again.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080817121101]
[URL.hs: call debugFail when download fails.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080816070213]
[URL.hs: debug messages.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080816070147]
[Spacing in Darcs/Commands/Changes.lhs
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815221245]
[Rename catchInt to catchInterrupt, better message when get is interrupted.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815154421]
[Resolve issue995: changes --context : {--human-readable,--xml-output} have no effect.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815114105]
[Tidy up known failing shell tests.
Eric Kow <[EMAIL PROTECTED]>**20080818102100
* Keeping track of these bugs could be simpler if they were all
associated with a ticket and a short description
* The shell harness allows us to avoid a lot of bureaucracy in
in the scripts. In fact, people should be able to submit a
bug just by sticking a shell script in bugs, no hoops to jump.
]
[Tidy up failing test for issue1013.
Eric Kow <[EMAIL PROTECTED]>**20080818101351
We don't need to use a $DARCS variable anymore, thanks to the shell
harness. Also, I noticed that what used to trigger a bug now hangs.
]
[Add failing test for issue1012 (Simon Marlow).
Eric Kow <[EMAIL PROTECTED]>**20080818094104]
[Add test for issue1017 (as suggested by Bjorn Bringert)
Eric Kow <[EMAIL PROTECTED]>**20080818194115]
[don't print "Wrote patch to -" when writing patch to stdout.
David Roundy <[EMAIL PROTECTED]>**20080819142537]
[always send with context.
David Roundy <[EMAIL PROTECTED]>**20080819140729]
[Resolve issue823: do not exit on keyboard interrupt when getting patches.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815070943
And give a chance for go_to_chosen_version to run.
]
[fix buggy comments in bugs/identical-patches.sh.
David Roundy <[EMAIL PROTECTED]>**20080814135322]
[Add Ian's identical-patch test case.
Eric Kow <[EMAIL PROTECTED]>**20080813171032]
[URL.hs: store only URL in waitToStart queue.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813122246]
[Add (failing) test for issue944.
Eric Kow <[EMAIL PROTECTED]>**20080814055903
This appears to be a reggression from darcs 1.0.9, and was submitted by
Wolfgang Lux on the bug tracker. Interestingly, only the old format
repositories are affected, not the hashed ones.
]
[add type witnesses to TouchesFiles
Jason Dagit <[EMAIL PROTECTED]>**20080810063403]
[add type witnesses to Patch/Choices.lhs
Jason Dagit <[EMAIL PROTECTED]>**20080809000237]
[Split Cache mostly out of Darsc/Repository/Prefs into its own file (take 2)
[EMAIL PROTECTED]
[Make Darcs.Repository.Prefs export the cache hash function
[EMAIL PROTECTED]
[remove a few unsightly functions
Jason Dagit <[EMAIL PROTECTED]>**20080813061256]
[Fix URL module bug with pipelining enabled.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813081218]
[Minor change to URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813074218]
[Enable pipelining by default, add --disable-pipelining option (issue838).
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813011342]
[Generalize HashRepo.clean_pristine to HashIO.clean_hashdir.
[EMAIL PROTECTED]
[Add writeSlurpy to roll out a copy of slurpy into a filesystem.
[EMAIL PROTECTED]
[fix breakage in URL.
David Roundy <[EMAIL PROTECTED]>**20080812141220]
[Parametrize "pristine.hashed" in a bunch of functions.
[EMAIL PROTECTED]
[Rework URL module for multi threading.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080811221209]
[Add thread synchronization to URL module and resume select() if interrupted by signal in curl module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080810092810]
[Handle error case with empty URL in URL.waitNextUrl function.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809221755]
[Add --debug-http flag to enable curl and libwww debug at run-time instead of compile-time.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809154834]
[Print a warning when the remote end does not have darcs 2.
Eric Kow <[EMAIL PROTECTED]>**20080811100933
Two reasons:
(1) right now people get a scary warning from ssh when it can't fetch
some non-essential files (it used to be that we would send stderr from ssh
to /dev/null, but that has other problems...)
(2) darcs transfer-mode more widely deployed could help a lot of people
wrt darcs performance
]
[Added a beware note to the unrecord command
[EMAIL PROTECTED]
[Fixed typo
[EMAIL PROTECTED]
[Better debug messages in URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809215247]
[make Convert.lhs compile.
David Roundy <[EMAIL PROTECTED]>**20080810201725]
[improve type safety of Darcs.Repository.Internal.
Jason Dagit <[EMAIL PROTECTED]>**20080810051109]
[Refactor `darcs convert' warning at kowey's request.
Trent W. Buck <[EMAIL PROTECTED]>**20080810110014]
[Expand formats text based in part on suggestions from darcs-users
Max Battcher <[EMAIL PROTECTED]>**20080809184043]
[Fixes to global cache text based on darcs-users suggestions
Max Battcher <[EMAIL PROTECTED]>**20080809181424]
[Add user-focused documentation of repository format options
Max Battcher <[EMAIL PROTECTED]>**20080807195429]
[Highlight the global cache as a best practice
Max Battcher <[EMAIL PROTECTED]>**20080807193918]
[Describe best practice in `darcs convert --help'.
Trent W. Buck <[EMAIL PROTECTED]>**20080810110615]
[add type witnesses to Population
Jason Dagit <[EMAIL PROTECTED]>**20080808053252]
[add type witnesses to CommandsAux
Jason Dagit <[EMAIL PROTECTED]>**20080808052738]
[Add type witnesses to more modules, rounding out Darcs/Repository/*
Jason Dagit <[EMAIL PROTECTED]>**20080808050947]
[fixed a bug in identity_commutes property
Jason Dagit <[EMAIL PROTECTED]>**20080808023025
In the right identity check the patch order should have gone from
(identity :> p) to (p2 :> i2). I added a rigid type context too
so that ghc 6.8 and newer would type the definition.
]
[Make Darcs.Repository.Internal compile with type witnesses.
Jason Dagit <[EMAIL PROTECTED]>**20080808015343]
[UF8.lhs: remove unusued functions/imports/docs
[EMAIL PROTECTED]
[Resolve issue974 : do not pass both -optc-g and -opta-g to GHC
Eric Kow <[EMAIL PROTECTED]>**20080807073620]
[make this test more cross-platform
Simon Michael <[EMAIL PROTECTED]>**20080807103433]
[document how to run unit tests
Simon Michael <[EMAIL PROTECTED]>**20080807030416]
[move (most) failing tests to bugs for clean test output
Simon Michael <[EMAIL PROTECTED]>**20080806191336]
[fix an old spelling error
Simon Michael <[EMAIL PROTECTED]>**20080806170432]
[make searching for "test:" in makefile work
Simon Michael <[EMAIL PROTECTED]>**20080805222241]
[run only normal (expected to pass) tests by default
Simon Michael <[EMAIL PROTECTED]>**20080805222108]
[Downplay quantum mechanics link.
Eric Kow <[EMAIL PROTECTED]>**20080806124109
Besides, darcs has far more than 3 users by now.
]
[Make patch theory intro more inviting to math people.
Eric Kow <[EMAIL PROTECTED]>**20080806123411]
[cleanup and slight rewrite of the test docs
Simon Michael <[EMAIL PROTECTED]>**20080806165949]
[make order of running tests consistent
Simon Michael <[EMAIL PROTECTED]>**20080806172123]
[small makefile refactoring: allow just the normal tests to be run, without bugs/*
Simon Michael <[EMAIL PROTECTED]>**20080805203242]
[Rectify dist help
[EMAIL PROTECTED]
Removed the "make dist" suggestion, the manual is a better place for that.
Instead, make clear that it operates on a clean copy of the tree, and
mention the "predist" functionality.
]
[website: explain that darcs 2 is required to get the darcs source.
Simon Michael <[EMAIL PROTECTED]>**20080803181216]
[Canonize Gaetan Lehmann and Daniel Buenzli.
Eric Kow <[EMAIL PROTECTED]>**20080730104357
(for Daniel B, avoid an accent in his name)
]
[configure: check for packages needed with split base.
Eric Kow <[EMAIL PROTECTED]>**20080730103840
Now that all packages must be used explicitly.
]
[fix type witness compile errors specific to ghc 6.8
Jason Dagit <[EMAIL PROTECTED]>**20080722182729]
[avoid import of unused function fromMaybe.
David Roundy <[EMAIL PROTECTED]>**20080729172825]
[configure: suggest regex-compat before text
Eric Kow <[EMAIL PROTECTED]>**20080725095336]
[configure: mention Haskell in 'try installing' suggestion
Eric Kow <[EMAIL PROTECTED]>**20080725095015]
[Typo (Text.Regex)
Eric Kow <[EMAIL PROTECTED]>**20080715121708]
[Use haskeline to have a readline-like behavior when asking something to the user
[EMAIL PROTECTED]
Unlike the implementations using readline or editline packages, this code
code doesn't break the Ctrl-C behavior.
]
[Improve generic rules for English plurals.
Eric Kow <[EMAIL PROTECTED]>**20080604123728]
[add configure check for Network.URI.
David Roundy <[EMAIL PROTECTED]>**20080711011914]
[add -hide-all-packages to default GHCFLAGS.
David Roundy <[EMAIL PROTECTED]>**20080711010952]
[add support for outputting patch numbers in darcs changes.
David Roundy <[EMAIL PROTECTED]>**20080710011211]
[add support for matching single patches by index.
David Roundy <[EMAIL PROTECTED]>**20080710004512]
[add support for matching ranges of patches (counting back from present).
David Roundy <[EMAIL PROTECTED]>**20080710003225]
[Better avoid silly manpage error.
Trent W. Buck <[EMAIL PROTECTED]>**20080704024920
It turned out only initialize's help string used 'quotes', so just
remove them. This makes init's docstring consistent with the others.
]
[Missing period at end of sentence.
Trent W. Buck <[EMAIL PROTECTED]>**20080704024232]
[darcs --overview no longer works, so don't document it.
Trent W. Buck <[EMAIL PROTECTED]>**20080704030804]
[Avoid silly manpage error.
Trent W. Buck <[EMAIL PROTECTED]>**20080703010733
man (nroff) treats an apostrophe in the first column specially,
resulting in a syntax error without this patch.
Ideally, all cases of 'foo' in the manpage (i.e. docstrings) should
become `foo', since man -Tps turns ` and ' into left and right single
quotes respectively.
]
[obliterate whitespace in Darcs.Commands.Get
[EMAIL PROTECTED]
'twas causing lhs/haddock difficulties where a \end{code} wasn't getting recognized.
]
[rm haddock CPP business
[EMAIL PROTECTED]
Try as I might, I can't see any reason to special-case some Haddock CPP logic to deal with some *commented-out guards*, unless CPP magically restores and uncomments the code if Haddock isn't being run.
]
[make pull less verbose when --verbose flag is given.
David Roundy <[EMAIL PROTECTED]>**20080624170035]
[fix makefile to remember to regenerate version information after running configure.
David Roundy <[EMAIL PROTECTED]>**20080624170001]
[TAG 2.0.2
David Roundy <[EMAIL PROTECTED]>**20080624012041]
Patch bundle hash:
7e3ce738064081ca145db40ec09707bfa21fbaf3
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users