Hi, I've refactored get_common_and_uncommon and friends so now the return type correctly expresses what they do, which gets rid of a lot of nasty calls to head elsewhere and generally makes the world a better place.
I also added witnesses to several modules where it was easy to do so (in some cases enabled by the above refactoring). I've sent one of these patches (the checkUnrelatedRepos one) but here are some more that depend on it. Cheers, Ganesh Wed Sep 9 20:32:21 BST 2009 Ganesh Sittampalam <[email protected]> * change the type of gcau to reflect its behaviour Previously it returned RL (RL ...) but the outer RL was always singleton. Changing this to RL ... simplifies a lot of client code that was just assuming this behaviour by doing things like taking the head. Tue Sep 8 22:06:52 BST 2009 Ganesh Sittampalam <[email protected]> * make type of checkUnrelatedRepos more general There's no reason why two repos we are comparing for relatedness should have the same ending context. Wed Sep 9 20:30:13 BST 2009 Ganesh Sittampalam <[email protected]> * add witnesses to Darcs.Commands.Diff Wed Sep 9 20:34:05 BST 2009 Ganesh Sittampalam <[email protected]> * add witnesses to Darcs.Commands.Remove Wed Sep 9 20:34:41 BST 2009 Ganesh Sittampalam <[email protected]> * add witnesses to Darcs.Commands.TrackDown Wed Sep 9 20:44:07 BST 2009 Ganesh Sittampalam <[email protected]> * add witnesses to Darcs.Commands.Pull Wed Sep 9 20:48:00 BST 2009 Ganesh Sittampalam <[email protected]> * add witnesses to Darcs.Commands.Apply Wed Sep 9 20:52:58 BST 2009 Ganesh Sittampalam <[email protected]> * add witnesses to Darcs.Commands.Push Wed Sep 9 21:01:51 BST 2009 Ganesh Sittampalam <[email protected]> * add witnesses to Darcs.Commands.Send Wed Sep 9 21:06:43 BST 2009 Ganesh Sittampalam <[email protected]> * need RankNTypes for some of the newly witnessed modules Wed Sep 9 21:07:11 BST 2009 Ganesh Sittampalam <[email protected]> * add newly-witnessed modules to witnesses.hs
New patches: [change the type of gcau to reflect its behaviour Ganesh Sittampalam <[email protected]>**20090909193221 Ignore-this: 5c6b665759572262c0bae0b4b1da20f4 Previously it returned RL (RL ...) but the outer RL was always singleton. Changing this to RL ... simplifies a lot of client code that was just assuming this behaviour by doing things like taking the head. ] hunk ./src/Darcs/Commands/Apply.lhs 134 then cannotApplyPartialRepo pinfo "" else cannotApplyMissing pinfo Right x -> return x - when (null $ unsafeUnRL $ head $ unsafeUnRL them') $ + when (null $ unsafeUnRL them') $ do putStr $ "All these patches have already been applied. " ++ "Nothing to do.\n" exitWith ExitSuccess hunk ./src/Darcs/Commands/Apply.lhs 140 let their_ps = mapFL_FL (n2pia . conscientiously (text ("We cannot apply this patch " ++"bundle, since we're missing:") $$)) - $ reverseRL $ head $ unsafeUnRL them' + $ reverseRL them' with_selected_changes "apply" fixed_opts their_ps $ \ (to_be_applied:>_) -> do print_dry_run_message_and_exit "apply" opts to_be_applied hunk ./src/Darcs/Commands/Apply.lhs 150 check_paths opts to_be_applied redirect_output opts from_whom $ do when am_verbose $ putStrLn "We have the following extra patches:" - when am_verbose $ putDocLn $ vcat $ mapRL description $ head $ unsafeUnRL us' + when am_verbose $ putDocLn $ vcat $ mapRL description us' when am_verbose $ putStrLn "Will apply the following patches:" when am_verbose $ putDocLn $ vcat $ mapFL description to_be_applied definePatches to_be_applied hunk ./src/Darcs/Commands/Apply.lhs 155 Sealed pw <- tentativelyMergePatches repository "apply" opts - (reverseRL $ head $ unsafeUnRL us') to_be_applied + (reverseRL us') to_be_applied invalidateIndex repository withSignalsBlocked $ do finalizeRepositoryChanges repository wait_a_moment -- so work will be more recent than rec hunk ./src/Darcs/Commands/Changes.lhs 166 -> ([(PatchInfoAnd p, [FilePath])], [FilePath], Doc) get_changes_info opts plain_fs ps = case get_common_and_uncommon (p2s,p1s) of - (_,us:\/:_) -> filter_patches_by_names (maxCount opts) fs $ filter pf $ unsafeUnRL $ concatRL us + (_,us:\/:_) -> filter_patches_by_names (maxCount opts) fs $ filter pf $ unsafeUnRL us where fs = map (\x -> "./" ++ x) $ plain_fs p1s = if first_match opts then unsafeUnseal $ match_first_patchset opts ps else NilRL:<:NilRL hunk ./src/Darcs/Commands/Get.lhs 54 import Darcs.Repository.Checkpoint ( write_checkpoint_patch, get_checkpoint ) import Darcs.Patch ( RepoPatch, Patch, apply, patch2patchinfo, invert, effect, description ) -import Darcs.Ordered ( (:\/:)(..), RL(..), unsafeUnRL, mapRL, concatRL, reverseRL, lengthFL ) +import Darcs.Ordered ( (:\/:)(..), RL(..), mapRL, concatRL, reverseRL, lengthFL ) import Darcs.External ( copyFileOrUrl, Cachable(..) ) import Darcs.Patch.Depends ( get_common_and_uncommon, get_patches_beyond_tag ) import Darcs.Repository.Prefs ( set_defaultrepo ) hunk ./src/Darcs/Commands/Get.lhs 273 Sealed context <- get_one_patchset repository opts let (_,us':\/:them') = get_common_and_uncommon (patches, context) case them' of - NilRL:<:NilRL -> return () + NilRL -> return () _ -> errorDoc $ text "Missing these patches from context:" hunk ./src/Darcs/Commands/Get.lhs 275 - $$ (vcat $ mapRL description $ head $ unsafeUnRL them') - let ps = patchSetToPatches us' + $$ (vcat $ mapRL description them') + let ps = patchSetToPatches (us':<:NilRL) putInfo $ text $ "Unapplying " ++ (show $ lengthFL ps) ++ " " ++ (englishNum (lengthFL ps) (Noun "patch") "") invalidateIndex repository hunk ./src/Darcs/Commands/Pull.lhs 49 read_repo, checkUnrelatedRepos ) import Darcs.Hopefully ( info ) import Darcs.Patch ( RepoPatch, description ) -import Darcs.Ordered ( (:>)(..), (:\/:)(..), RL(..), concatRL, +import Darcs.Ordered ( (:>)(..), (:\/:)(..), RL(..), mapFL, nullFL, reverseRL, mapRL ) import Darcs.Patch.Permutations ( partitionFL ) import Darcs.SlurpDirectory ( wait_a_moment ) hunk ./src/Darcs/Commands/Pull.lhs 130 (common, us' :\/: them'') <- return $ get_common_and_uncommon (us, them) (_ , _ :\/: compl') <- return $ get_common_and_uncommon (us, compl) checkUnrelatedRepos opts common us them - let avoided = mapRL info (concatRL compl') - ps :> _ <- return $ partitionFL (not . (`elem` avoided) . info) $ reverseRL $ concatRL them'' + let avoided = mapRL info compl' + ps :> _ <- return $ partitionFL (not . (`elem` avoided) . info) $ reverseRL them'' do when (Verbose `elem` opts) $ do case us' of hunk ./src/Darcs/Commands/Pull.lhs 134 - (x@(_:<:_):<:_) -> putDocLn $ text "We have the following new (to them) patches:" - $$ (vcat $ mapRL description x) + (x@(_:<:_)) -> putDocLn $ text "We have the following new (to them) patches:" + $$ (vcat $ mapRL description x) _ -> return () when (not $ nullFL ps) $ putDocLn $ text "They have the following patches to pull:" $$ (vcat $ mapFL description ps) hunk ./src/Darcs/Commands/Pull.lhs 155 let merge_opts | NoAllowConflicts `elem` opts = opts | AllowConflicts `elem` opts = opts | otherwise = MarkConflicts : opts - Sealed pw <- case us' of - h_us :<: NilRL -> tentativelyMergePatches repository "pull" merge_opts - (reverseRL h_us) to_be_pulled - _ -> impossible -- we believe that get_common_and_uncommon should guarantee this, - -- at least in this case. Error out if we're wrong, so that - -- we find out. An alternative would be to do a concatRL of the whole - -- us' list, but the code originally just took the head, and so we - -- might instead introduce some subtle bug by doing a concat. + Sealed pw <- tentativelyMergePatches repository "pull" merge_opts + (reverseRL us') to_be_pulled invalidateIndex repository withGutsOf repository $ do finalizeRepositoryChanges repository -- so work will be more recent than rec: hunk ./src/Darcs/Commands/Push.lhs 43 read_repo, amInRepository, checkUnrelatedRepos ) import Darcs.Patch ( description ) import Darcs.Ordered ( RL(..), (:>)(..), (:\/:)(..), - nullFL, reverseRL, mapFL_FL, unsafeUnRL, mapRL, lengthRL ) + nullFL, reverseRL, mapFL_FL, mapRL, lengthRL ) import Darcs.Repository.Prefs ( defaultrepo, set_defaultrepo, get_preflist ) import Darcs.External ( maybeURLCmd, signString ) import Darcs.URL ( is_url, is_file ) hunk ./src/Darcs/Commands/Push.lhs 138 (common, us' :\/: them') -> do checkUnrelatedRepos opts common us them putVerbose $ text "We have the following patches to push:" - $$ (vcat $ mapRL description $ head $ unsafeUnRL us') - firstUs <- case us' of - NilRL:<:NilRL -> do putInfo $ text "No recorded local changes to push!" - exitWith ExitSuccess - NilRL -> bug "push_cmd: us' is empty!" - (x:<:_) -> return x - with_selected_changes "push" opts (reverseRL firstUs) $ + $$ (vcat $ mapRL description us') + case us' of + NilRL -> do putInfo $ text "No recorded local changes to push!" + exitWith ExitSuccess + _ -> return () + with_selected_changes "push" opts (reverseRL us') $ \ (to_be_pushed:>_) -> do definePatches to_be_pushed print_dry_run_message_and_exit "push" opts to_be_pushed hunk ./src/Darcs/Commands/Push.lhs 151 putInfo $ text "You don't want to push any patches, and that's fine with me!" exitWith ExitSuccess - let num_to_pull = lengthRL $ head $ unsafeUnRL them' + let num_to_pull = lengthRL them' bundle = make_bundle [] (bug "using slurpy in make_bundle called from Push") common (mapFL_FL hopefully to_be_pushed) hunk ./src/Darcs/Commands/Send.lhs 53 amInRepository, identifyRepositoryFor, withRepoReadLock, ($-), read_repo, slurp_recorded, prefsUrl, checkUnrelatedRepos ) import Darcs.Patch ( RepoPatch, description, apply_to_slurpy, invert ) -import Darcs.Ordered ( FL(..), RL(..), (:>)(..), (:\/:)(..), unsafeUnRL, +import Darcs.Ordered ( FL(..), RL(..), (:>)(..), (:\/:)(..), mapRL_RL, mapFL, mapRL, reverseRL, mapFL_FL, lengthFL, nullFL ) import Darcs.Patch.Bundle ( make_bundle, scan_context ) import Darcs.Patch.Info ( just_name ) hunk ./src/Darcs/Commands/Send.lhs 177 (common, us' :\/: _) -> do checkUnrelatedRepos opts common us them case us' of - NilRL:<:NilRL -> do putInfo "No recorded local changes to send!" - exitWith ExitSuccess + NilRL -> do putInfo "No recorded local changes to send!" + exitWith ExitSuccess _ -> putVerbose $ text "We have the following patches to send:" hunk ./src/Darcs/Commands/Send.lhs 180 - $$ (vcat $ mapRL description $ head $ unsafeUnRL us') + $$ (vcat $ mapRL description us') s <- slurp_recorded repo hunk ./src/Darcs/Commands/Send.lhs 182 - let our_ps = reverseRL $ head $ unsafeUnRL us' + let our_ps = reverseRL us' with_selected_changes "send" opts our_ps $ \ (to_be_sent :> _) -> do print_dry_run_message_and_exit "send" opts to_be_sent hunk ./src/Darcs/Commands/Send.lhs 193 bundle <- signString opts $ make_bundle (Unified:opts) (fromJust $ apply_to_slurpy (invert $ - mapRL_RL hopefully $ head $ unsafeUnRL us') s) + mapRL_RL hopefully us') s) common (mapFL_FL hopefully to_be_sent) let outname = get_output opts (make_fname to_be_sent) case outname of hunk ./src/Darcs/Commands/Unrecord.lhs 48 import Darcs.Patch ( Patchy, RepoPatch, invert, commutex, effect ) import Darcs.Ordered ( RL(..), (:<)(..), (:>)(..), (:\/:)(..), (+<+), mapFL_FL, nullFL, - concatRL, reverseRL, mapRL ) + reverseRL, mapRL ) import Darcs.Patch.Depends ( get_common_and_uncommon ) import Darcs.SelectChanges ( with_selected_last_changes_reversed ) import Progress ( debugMessage ) hunk ./src/Darcs/Commands/Unrecord.lhs 179 get_last_patches opts ps = case match_first_patchset opts ps of Sealed p1s -> case get_common_and_uncommon (ps,p1s) of - (_,us :\/: _) -> FlippedSeal $ concatRL us + (_,us :\/: _) -> FlippedSeal us unpull_description :: String unpull_description = hunk ./src/Darcs/Commands/Unrevert.lhs 41 slurp_recorded, applyToWorking ) import Darcs.Patch ( RepoPatch, Prim, commutex, namepatch, fromPrims ) -import Darcs.Ordered ( RL(..), FL(..), (:<)(..), (:>)(..), (:\/:)(..), reverseRL, +import Darcs.Ordered ( FL(..), (:<)(..), (:>)(..), (:\/:)(..), reverseRL, (+>+) ) import Darcs.SelectChanges ( with_selected_changes_to_files' ) import Darcs.SlurpDirectory ( Slurpy ) hunk ./src/Darcs/Commands/Unrevert.lhs 92 rec <- slurp_recorded repository unrec <- get_unrecorded repository case get_common_and_uncommon (us, them) of - (_, (h_us:<:NilRL) :\/: (h_them:<:NilRL)) -> do + (_, h_us :\/: h_them) -> do Sealed pw <- considerMergeToWorking repository "pull" (MarkConflicts:opts) (reverseRL h_us) (reverseRL h_them) with_selected_changes_to_files' "unrevert" opts [] pw $ hunk ./src/Darcs/Commands/Unrevert.lhs 107 write_unrevert repository skipped rec (unrec+>+p) sync_repo repository debugMessage "Finished unreverting." - _ -> impossible unrevert_cmd _ _ = impossible write_unrevert :: RepoPatch p => Repository p C(r u t) -> FL Prim C(x y) -> Slurpy -> FL Prim C(r x) -> IO () hunk ./src/Darcs/Patch/Depends.hs 58 #include "impossible.h" get_common_and_uncommon :: RepoPatch p => (PatchSet p C(x),PatchSet p C(y)) -> - ([PatchInfo],(RL (RL (PatchInfoAnd p)) :\/: RL (RL (PatchInfoAnd p))) C(x y)) + ([PatchInfo],(RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(x y)) get_common_and_uncommon_or_missing :: RepoPatch p => (PatchSet p C(x),PatchSet p C(y)) -> hunk ./src/Darcs/Patch/Depends.hs 60 - Either PatchInfo ([PatchInfo],(RL (RL (PatchInfoAnd p)) :\/: RL (RL (PatchInfoAnd p))) C(x y)) + Either PatchInfo ([PatchInfo],(RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(x y)) get_common_and_uncommon = either missingPatchError id . get_common_and_uncommon_err hunk ./src/Darcs/Patch/Depends.hs 69 either (\(MissingPatch x _) -> Left x) Right . get_common_and_uncommon_err get_common_and_uncommon_err :: RepoPatch p => (PatchSet p C(x),PatchSet p C(y)) -> - Either MissingPatch ([PatchInfo],(RL (RL (PatchInfoAnd p)) :\/: RL (RL (PatchInfoAnd p))) C(x y)) + Either MissingPatch ([PatchInfo],(RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(x y)) get_common_and_uncommon_err (ps1,ps2) = gcau (optimize_patchset ps1) ps2 {-| hunk ./src/Darcs/Patch/Depends.hs 187 -} gcau :: forall p C(x y). RepoPatch p => PatchSet p C(x) -> PatchSet p C(y) - -> Either MissingPatch ([PatchInfo],(RL (RL (PatchInfoAnd p)) :\/: RL (RL (PatchInfoAnd p))) C(x y)) -gcau NilRL ps2 = return ([], NilRL:<:NilRL :\/: concatRL ps2 :<: NilRL) -gcau ps1 NilRL = return ([], concatRL ps1 :<: NilRL :\/: NilRL:<:NilRL) + -> Either MissingPatch ([PatchInfo],(RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(x y)) +gcau NilRL ps2 = return ([], NilRL :\/: concatRL ps2) +gcau ps1 NilRL = return ([], concatRL ps1 :\/: NilRL) gcau (NilRL:<:ps1) ps2 = gcau ps1 ps2 gcau ps1 (NilRL:<:ps2) = gcau ps1 ps2 gcau ((pi1:<:NilRL):<:_) ((pi2:<:NilRL):<:_) hunk ./src/Darcs/Patch/Depends.hs 195 | info pi1 == info pi2 , IsEq <- sloppyIdentity pi1 - , IsEq <- sloppyIdentity pi2 = return ([info pi1], NilRL:<:NilRL :\/: unsafeCoerceP (NilRL:<:NilRL)) + , IsEq <- sloppyIdentity pi2 = return ([info pi1], NilRL :\/: unsafeCoerceP NilRL) gcau (orig_ps1:<:orig_ps1s) (orig_ps2:<:orig_ps2s) = f (lengthRL orig_ps1) (unseal info $ lastRL orig_ps1) (orig_ps1:>:NilFL) orig_ps1s (lengthRL orig_ps2) (unseal info $ lastRL orig_ps2) (orig_ps2:>:NilFL) orig_ps2s hunk ./src/Darcs/Patch/Depends.hs 203 lx = last $ concatReverseFL psx -} f :: Int -> PatchInfo -> FL (RL (PatchInfoAnd p)) C(r x) -> PatchSet p C(r) -> Int -> PatchInfo -> FL (RL (PatchInfoAnd p)) C(u y) -> PatchSet p C(u) - -> Either MissingPatch ([PatchInfo],(RL (RL (PatchInfoAnd p)) :\/: RL (RL (PatchInfoAnd p))) C(x y)) + -> Either MissingPatch ([PatchInfo],(RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(x y)) f _n1 l1 ps1 _ps1s _n2 l2 ps2 _ps2s | l1 == l2 = gcau_simple (unsafeCoerceP (concatReverseFL ps1)) (unsafeCoerceP (concatReverseFL ps2)) f n1 l1 ps1 ps1s n2 l2 ps2 ps2s hunk ./src/Darcs/Patch/Depends.hs 245 -- | Filters the common elements from @ps1@ and @ps2@ and returns the simplified sequences. gcau_simple :: RepoPatch p => RL (PatchInfoAnd p) C(x y) -- ^ @ps1@ -> RL (PatchInfoAnd p) C(u v) -- ^ @ps2@ - -> Either MissingPatch ([PatchInfo],(RL (RL (PatchInfoAnd p)) :\/: RL (RL (PatchInfoAnd p))) C(y v)) + -> Either MissingPatch ([PatchInfo],(RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(y v)) gcau_simple ps1 ps2 = do FlippedSeal ex1 <- get_extra common ps1 FlippedSeal ex2 <- get_extra common ps2 hunk ./src/Darcs/Patch/Depends.hs 250 let ps1' = filter (`elem` common) $ ps1_info - return (ps1', (unsafeCoerceP ex1 :<: NilRL) :\/: ex2 :<: NilRL) + return (ps1', (unsafeCoerceP ex1 :\/: ex2)) where common = ps1_info `intersect` mapRL info ps2 ps1_info = mapRL info ps1 hunk ./src/Darcs/Patch/Depends.hs 510 f common a b = g_s $ gcau_simple a b where g_s :: Either MissingPatch - ([PatchInfo],(RL (RL (PatchInfoAnd p)) :\/: RL (RL (PatchInfoAnd p))) C(x y)) + ([PatchInfo],(RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(x y)) -> SealedPatchSet p g_s (Left e) = missingPatchError e hunk ./src/Darcs/Patch/Depends.hs 513 - g_s (Right (_, (a' :<: NilRL) :\/: (b' :<: NilRL))) = + g_s (Right (_, a' :\/: b')) = case (merge_sets (a' :\/: b')) of Sealed a'b' -> seal $ (a'b' +<+ b) :<: common hunk ./src/Darcs/Patch/Depends.hs 516 - g_s _ = impossible merge_sets :: RepoPatch p => (RL (PatchInfoAnd p) :\/: RL (PatchInfoAnd p)) C(x y) -> Sealed (RL (PatchInfoAnd p) C(y)) merge_sets (l :\/: r) = hunk ./src/Darcs/Repository/Internal.hs 920 debugMessage "Adjusting the context of the unrevert changes..." ref <- readTentativeRepo repository case get_common_and_uncommon (bundle, ref) of - (common,(h_us:<:NilRL):<:NilRL :\/: NilRL:<:NilRL) -> + (common,(h_us:<:NilRL) :\/: NilRL) -> case commuteRL (reverseFL ps :> hopefully h_us) of Nothing -> unrevert_impossible unrevert_loc Just (us' :> _) -> do hunk ./src/Darcs/Repository/Internal.hs 928 writeDocBinFile unrevert_loc $ make_bundle [] s (common \\ pis) (us':>:NilFL) - (common,(x:<:NilRL):<:NilRL:\/:_) + (common,(x:<:NilRL):\/:_) | isr && any (`elem` common) pis -> unrevert_impossible unrevert_loc | isr -> return () where isr = isJust $ hopefullyM x [make type of checkUnrelatedRepos more general Ganesh Sittampalam <[email protected]>**20090908210652 Ignore-this: 8f2559da573ea899cef219e67dd5229a There's no reason why two repos we are comparing for relatedness should have the same ending context. ] hunk ./src/Darcs/Repository.hs 279 pristineFromWorking repo return repo -checkUnrelatedRepos :: [DarcsFlag] -> [PatchInfo] -> PatchSet p C(x) -> PatchSet p C(x) -> IO () +checkUnrelatedRepos :: [DarcsFlag] -> [PatchInfo] -> PatchSet p C(x) -> PatchSet p C(y) -> IO () checkUnrelatedRepos opts common us them | AllowUnrelatedRepos `elem` opts || not (null common) || concatRL us `isShorterThanRL` 5 || concatRL them `isShorterThanRL` 5 [add witnesses to Darcs.Commands.Diff Ganesh Sittampalam <[email protected]>**20090909193013 Ignore-this: 5fb4fb83967232f11dde5c62c919a531 ] hunk ./src/Darcs/Commands/Diff.lhs 56 import Darcs.Patch.Info ( PatchInfo, human_friendly ) import Darcs.External ( execPipeIgnoreError, clonePaths ) import Darcs.Lock ( withTempDir ) -import Darcs.Sealed ( unsafeUnseal ) +import Darcs.Sealed ( unseal ) import Printer ( Doc, putDoc, vcat, empty, ($$) ) #include "impossible.h" hunk ./src/Darcs/Commands/Diff.lhs 60 +#include "gadts.h" + diff_description :: String diff_description = "Create a diff between two versions of the repository." hunk ./src/Darcs/Commands/Diff.lhs 234 return () return output -get_diff_info :: RepoPatch p => [DarcsFlag] -> PatchSet p -> [PatchInfo] +get_diff_info :: RepoPatch p => [DarcsFlag] -> PatchSet p C(x) -> [PatchInfo] get_diff_info opts ps = hunk ./src/Darcs/Commands/Diff.lhs 236 - let pi1s = mapRL info $ concatRL $ if first_match opts - then unsafeUnseal $ match_first_patchset opts ps - else ps - pi2s = mapRL info $ concatRL $ if second_match opts - then unsafeUnseal $ match_second_patchset opts ps - else ps - in pi2s \\ pi1s + let infos = mapRL info . concatRL + handle (match_cond, do_match) + | match_cond opts = unseal infos (do_match opts ps) + | otherwise = infos ps + in handle (second_match, match_second_patchset) + \\ handle (first_match, match_first_patchset) changelog :: [PatchInfo] -> Doc changelog pis = vcat $ map human_friendly pis [add witnesses to Darcs.Commands.Remove Ganesh Sittampalam <[email protected]>**20090909193405 Ignore-this: b2b55b15428a0d174338ab5ad13d8f9b ] hunk ./src/Darcs/Commands/Remove.lhs 45 import Darcs.Gorsvet( invalidateIndex ) #include "impossible.h" +#include "gadts.h" + remove_description :: String remove_description = "Remove files from version control." hunk ./src/Darcs/Commands/Remove.lhs 85 invalidateIndex repository add_to_pending repository p -make_remove_patch :: RepoPatch p => Repository p -> [SubPath] -> IO (FL Prim) +make_remove_patch :: RepoPatch p => Repository p C(r u t) -> [SubPath] -> IO (FL Prim C(x x)) make_remove_patch repository files = do s <- slurp_pending repository srecorded <- slurp_recorded repository [add witnesses to Darcs.Commands.TrackDown Ganesh Sittampalam <[email protected]>**20090909193441 Ignore-this: 8081b7aa9856ca109b9ef41a5b24725e ] hunk ./src/Darcs/Commands/TrackDown.lhs 33 import Darcs.Hopefully ( hopefully ) import Darcs.Repository ( amInRepository, read_repo, withRepoReadLock, ($-), withRecorded, setScriptsExecutable ) -import Darcs.Ordered ( unsafeUnRL, concatRL ) -import Darcs.Patch ( RepoPatch, Named, description, apply, invert ) +import Darcs.Ordered ( FL(..), mapRL_RL, concatRL ) +import Darcs.Patch ( RepoPatch, Named, description, apply, invert, invertRL ) import Printer ( putDocLn ) import Darcs.Test ( get_test ) import Darcs.Lock ( withTempDir ) hunk ./src/Darcs/Commands/TrackDown.lhs 39 +#include "gadts.h" + trackdown_description :: String trackdown_description = "Locate the most recent version lacking an error." hunk ./src/Darcs/Commands/TrackDown.lhs 84 withRecorded repository (withTempDir "trackingdown") $ \_ -> do when (SetScriptsExecutable `elem` opts) setScriptsExecutable init - track_next opts test $ map (invert . hopefully) $ unsafeUnRL $ concatRL patches + track_next opts test . invertRL . mapRL_RL hopefully . concatRL $ patches hunk ./src/Darcs/Commands/TrackDown.lhs 86 -track_next :: RepoPatch p => [DarcsFlag] -> (IO ExitCode) -> [Named p] -> IO () -track_next opts test (p:ps) = do +track_next :: RepoPatch p => [DarcsFlag] -> (IO ExitCode) -> FL (Named p) C(x y) -> IO () +track_next opts test (p:>:ps) = do test_result <- test if test_result == ExitSuccess then putStrLn "Success!" hunk ./src/Darcs/Commands/TrackDown.lhs 96 putDocLn $ description $ invert p hFlush stdout track_next opts test ps -track_next _ _ [] = putStrLn "Noone passed the test!" +track_next _ _ NilFL = putStrLn "Noone passed the test!" \end{code} Trackdown is helpful for locating when something was broken. It creates [add witnesses to Darcs.Commands.Pull Ganesh Sittampalam <[email protected]>**20090909194407 Ignore-this: 51eb38f21152e1d3d348bff37aea0ddd ] < [Tweak user manual's title page. Trent W. Buck <[email protected]>**20081227011031 It annoyed me that the user manual was just called "Darcs", not "Darcs User Manual". ] [Get setpref description in manual. Dave Love <[email protected]>**20090111151941 Ignore-this: 89b0d00a82582d03fdf51cd9822dba65 ] [Resolve issue1310: create merged \darcsCommand{add}. Trent W. Buck <[email protected]>**20090124144058 Ignore-this: 945f45d0671c1e5a613ebfb3c4f90f59 This replaces inconsistent use of \haskell{add_description}, \options{add} and \haskell{add_help}. ] [Refactor "darcs get" help. Trent W. Buck <[email protected]>**20090314062729 Ignore-this: 21b6229625c608bd027145ca47d36930 ] [Refactor English patch/patches in darcs get. Eric Kow <[email protected]>**20090413180400 Ignore-this: 3762aa5af1a16467a2a1ce00db3fb946 ] [Invalidate index at key positions in relevant (pristine-modifying) commands. Petr Rockai <[email protected]>**20090524092616 Ignore-this: aaff5ce75478c57047c0c9398aa1ebde ] [make type of checkUnrelatedRepos more general Ganesh Sittampalam <[email protected]>**20090908210652 Ignore-this: 8f2559da573ea899cef219e67dd5229a There's no reason why two repos we are comparing for relatedness should have the same ending context. ] [make an assumption in the pull code explicit Ganesh Sittampalam <[email protected]>**20090908214917 Ignore-this: c573c45fb13012ebd28022f44508d6c8 It seems like get_common_and_uncommon always returns a singleton list, which is then relied on later. This patch makes that assumption explicit, by erroring out if it's not true. ] > hunk ./src/Darcs/Commands/Pull.lhs 64 import Darcs.Gorsvet( invalidateIndex ) #include "impossible.h" +#include "gadts.h" + pull_description :: String pull_description = "Copy and apply patches from another repository to this one." hunk ./src/Darcs/Commands/Pull.lhs 192 the second patchset(s) to be complemented against Rc. -} -read_repos :: RepoPatch p => Repository p -> [DarcsFlag] -> [String] -> IO (SealedPatchSet p,SealedPatchSet p) +read_repos :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> [String] -> IO (SealedPatchSet p,SealedPatchSet p) read_repos _ _ [] = impossible read_repos to_repo opts us = do rs <- mapM (\u -> do r <- identifyRepositoryFor to_repo u [add witnesses to Darcs.Commands.Apply Ganesh Sittampalam <[email protected]>**20090909194800 Ignore-this: d7975514d3aea9b53a0b9248c2a50b06 ] hunk ./src/Darcs/Commands/Apply.lhs 58 ) import Darcs.Patch ( RepoPatch, description ) import Darcs.Patch.Info ( human_friendly ) -import Darcs.Ordered ( (:\/:)(..), (:>)(..), unsafeUnRL, - mapFL, nullFL, mapFL_FL, mapRL, concatRL, reverseRL ) +import Darcs.Ordered ( (:\/:)(..), (:>)(..), + mapFL, nullFL, mapFL_FL, nullRL, mapRL, concatRL, reverseRL ) import Darcs.SlurpDirectory ( wait_a_moment ) import ByteStringUtils ( linesPS, unlinesPS ) hunk ./src/Darcs/Commands/Apply.lhs 78 import Darcs.Gorsvet( invalidateIndex ) #include "impossible.h" +#include "gadts.h" + apply_description :: String apply_description = "Apply a patch bundle created by `darcs send'." hunk ./src/Darcs/Commands/Apply.lhs 124 let from_whom = get_from ps us <- read_repo repository either_them <- get_patch_bundle opts ps - them <- case either_them of - Right (Sealed t) -> return t + Sealed them + <- case either_them of + Right t -> return t Left er -> do forwarded <- consider_forwarding opts ps if forwarded then exitWith ExitSuccess hunk ./src/Darcs/Commands/Apply.lhs 137 then cannotApplyPartialRepo pinfo "" else cannotApplyMissing pinfo Right x -> return x - when (null $ unsafeUnRL them') $ + when (nullRL them') $ do putStr $ "All these patches have already been applied. " ++ "Nothing to do.\n" exitWith ExitSuccess [add witnesses to Darcs.Commands.Push Ganesh Sittampalam <[email protected]>**20090909195258 Ignore-this: c0ce49e56d76fc29fb17a9476d95bac5 ] hunk ./src/Darcs/Commands/Push.lhs 57 import English (englishNum, Noun(..)) #include "impossible.h" +#include "gadts.h" + push_description :: String push_description = "Copy and apply patches from this repository to another one." hunk ./src/Darcs/Commands/Push.lhs 141 checkUnrelatedRepos opts common us them putVerbose $ text "We have the following patches to push:" $$ (vcat $ mapRL description us') - case us' of + (case us' of NilRL -> do putInfo $ text "No recorded local changes to push!" exitWith ExitSuccess hunk ./src/Darcs/Commands/Push.lhs 144 - _ -> return () + _ -> return ()) :: IO () with_selected_changes "push" opts (reverseRL us') $ \ (to_be_pushed:>_) -> do definePatches to_be_pushed [add witnesses to Darcs.Commands.Send Ganesh Sittampalam <[email protected]>**20090909200151 Ignore-this: ab87388a6d4469998568784aa36087d8 ] hunk ./src/Darcs/Commands/Send.lhs 73 import HTTP ( postUrl ) #include "impossible.h" +#include "gadts.h" + send_description :: String send_description = "Send by email a bundle of one or more patches." hunk ./src/Darcs/Commands/Send.lhs 164 the_context (_:fs) = the_context fs send_cmd _ _ = impossible -send_to_them :: RepoPatch p => Repository p -> [DarcsFlag] -> [WhatToDo] -> String -> PatchSet p -> IO () +send_to_them :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> [WhatToDo] -> String -> PatchSet p C(x) -> IO () send_to_them repo opts wtds their_name them = do let am_verbose = Verbose `elem` opts am_quiet = Quiet `elem` opts hunk ./src/Darcs/Commands/Send.lhs 171 putVerbose s = when am_verbose $ putDocLn s putInfo s = when (not am_quiet) $ putStrLn s patch_desc p = just_name $ info p - make_fname tbs = patch_filename $ patch_desc $ headFL tbs - headFL (x:>:_) = x - headFL _ = impossible + make_fname (tb:>:_) = patch_filename $ patch_desc tb + make_fname _ = impossible us <- read_repo repo case get_common_and_uncommon (us, them) of (common, us' :\/: _) -> do hunk ./src/Darcs/Commands/Send.lhs 177 checkUnrelatedRepos opts common us them - case us' of + (case us' of NilRL -> do putInfo "No recorded local changes to send!" exitWith ExitSuccess _ -> putVerbose $ text "We have the following patches to send:" hunk ./src/Darcs/Commands/Send.lhs 181 - $$ (vcat $ mapRL description us') + $$ (vcat $ mapRL description us')) :: IO () s <- slurp_recorded repo let our_ps = reverseRL us' with_selected_changes "send" opts our_ps $ hunk ./src/Darcs/Commands/Send.lhs 206 cleanup f Nothing -> let + auto_subject :: forall p C(x y) . FL (PatchInfoAnd p) C(x y) -> String auto_subject (p:>:NilFL) = "darcs patch: " ++ trim (patch_desc p) 57 auto_subject (p:>:ps) = "darcs patch: " ++ trim (patch_desc p) 43 ++ " (and " ++ show (lengthFL ps) ++ " more)" hunk ./src/Darcs/Commands/Send.lhs 322 | SendMail String -- ^ send patch via email -decide_on_behavior :: RepoPatch p => [DarcsFlag] -> Repository p -> IO [WhatToDo] +decide_on_behavior :: RepoPatch p => [DarcsFlag] -> Repository p C(r u t) -> IO [WhatToDo] decide_on_behavior opts the_remote_repo = case the_targets of [] -> hunk ./src/Darcs/Commands/Send.lhs 421 \end{verbatim} \begin{code} -get_description :: RepoPatch p => [DarcsFlag] -> FL (PatchInfoAnd p) -> IO (Doc, Maybe String) +get_description :: RepoPatch p => [DarcsFlag] -> FL (PatchInfoAnd p) C(x y) -> IO (Doc, Maybe String) get_description opts patches = case get_filename of Just f -> do file <- f [need RankNTypes for some of the newly witnessed modules Ganesh Sittampalam <[email protected]>**20090909200643 Ignore-this: d9bd0724f91b6a435d75ca8d93ac24fd ] hunk ./darcs.cabal 124 src/Crypt/sha2.c extensions: - CPP + CPP, RankNTypes if !flag(type-witnesses) buildable: False [add newly-witnessed modules to witnesses.hs Ganesh Sittampalam <[email protected]>**20090909200711 Ignore-this: 5f6c6ec561586c01956c3a7ff228ab3d ] < [make type of checkUnrelatedRepos more general Ganesh Sittampalam <[email protected]>**20090908210652 Ignore-this: 8f2559da573ea899cef219e67dd5229a There's no reason why two repos we are comparing for relatedness should have the same ending context. ] [add witnesses to Darcs.Commands.Diff Ganesh Sittampalam <[email protected]>**20090909193013 Ignore-this: 5fb4fb83967232f11dde5c62c919a531 ] [add witnesses to Darcs.Commands.Remove Ganesh Sittampalam <[email protected]>**20090909193405 Ignore-this: b2b55b15428a0d174338ab5ad13d8f9b ] [add witnesses to Darcs.Commands.TrackDown Ganesh Sittampalam <[email protected]>**20090909193441 Ignore-this: 8081b7aa9856ca109b9ef41a5b24725e ] [add witnesses to Darcs.Commands.Pull Ganesh Sittampalam <[email protected]>**20090909194407 Ignore-this: 51eb38f21152e1d3d348bff37aea0ddd ] [add witnesses to Darcs.Commands.Apply Ganesh Sittampalam <[email protected]>**20090909194800 Ignore-this: d7975514d3aea9b53a0b9248c2a50b06 ] [add witnesses to Darcs.Commands.Push Ganesh Sittampalam <[email protected]>**20090909195258 Ignore-this: c0ce49e56d76fc29fb17a9476d95bac5 ] [add witnesses to Darcs.Commands.Send Ganesh Sittampalam <[email protected]>**20090909200151 Ignore-this: ab87388a6d4469998568784aa36087d8 ] [need RankNTypes for some of the newly witnessed modules Ganesh Sittampalam <[email protected]>**20090909200643 Ignore-this: d9bd0724f91b6a435d75ca8d93ac24fd ] > hunk ./src/witnesses.hs 13 import Darcs.Repository.Pristine import Darcs.Repository.DarcsRepo import Darcs.Repository.Internal -import Darcs.Commands.Unrevert -import Darcs.Commands.WhatsNew -import Darcs.Commands.Show -import Darcs.Commands.Unrecord +import Darcs.Commands.Annotate +import Darcs.Commands.Apply +import Darcs.Commands.Diff import Darcs.Commands.Dist hunk ./src/witnesses.hs 17 -import Darcs.Commands.TransferMode import Darcs.Commands.GZCRCs hunk ./src/witnesses.hs 18 +import Darcs.Commands.Init +import Darcs.Commands.Pull +import Darcs.Commands.Push +import Darcs.Commands.Send +import Darcs.Commands.Show +import Darcs.Commands.TrackDown +import Darcs.Commands.TransferMode +import Darcs.Commands.Unrevert +import Darcs.Commands.Unrecord +import Darcs.Commands.WhatsNew main = return () Context: [More descriptive name for issue1488 test. Eric Kow <[email protected]>**20090909192238 Ignore-this: 6bc0dddf87b12f0b269110ae5d29796d ] [Accept issue1488: a 'fromJust error' in 'darcs whatsnew -l' Marnix Klooster <[email protected]>**20090909180046 Ignore-this: d064a42a78efef5c327d41e425a6fefc ] [Make the ./tests/issue1465_ortryrunning.sh a little more foolproof. Petr Rockai <[email protected]>**20090909144349 Ignore-this: 2e0f7370f2e53e3c104e68a9c5aeeafe ] [Skip the time-stamps test on windows. Petr Rockai <[email protected]>**20090909142844 Ignore-this: 72b0bc3d549cab38bceda55113334dd ] [Print expansions of simple commands in testsuite output. Petr Rockai <[email protected]>**20090907072337 Ignore-this: d78e78a155da6f30ebcc592780cfd699 This helps with debugging failures, since we see the exact command that was executed, after all shell expansion has been done. Moreover, we see exactly which command failed -- the existing -v will eg. print a whole "if" statement with body and it cannot be discerned which branch was taken or which command exactly has failed. ] [make an assumption in the pull code explicit Ganesh Sittampalam <[email protected]>**20090908214917 Ignore-this: c573c45fb13012ebd28022f44508d6c8 It seems like get_common_and_uncommon always returns a singleton list, which is then relied on later. This patch makes that assumption explicit, by erroring out if it's not true. ] [Use the correct slash in push-formerly-pl. Petr Rockai <[email protected]>**20090906131345 Ignore-this: b2fe686adcdccbcaf58ca839c19634c9 This is usually not required, but in this particular case, the bad slash confuses darcs path comparison (it keeps around the mixed slashes in one of the paths, but has backslashes-only in the other one and wrongly concludes that the paths are different). ] [Exit 200 in abort_windows to indicate the skip to the harness. Petr Rockai <[email protected]>**20090906131236 Ignore-this: 18c60417b1c986eebbfddba896738ddb ] [Add a simple testcase for the --external-merge option. Petr Rockai <[email protected]>**20090806063953 Ignore-this: e848f9b8d5d926fbcc05064d85c49316 ] [Add a rudimentary release script. Petr Rockai <[email protected]>**20090906154343 Ignore-this: 7ace3f8e435b04258b270dcd094b9f13 This should automate most of the boring and (more importantly) error-prone work that needs to be done upon a darcs release. Work in progress. ] [Avoid relying on /dev/stdin in tests/emailformat.sh. Petr Rockai <[email protected]>**20090903115749 Ignore-this: 43b85a6dd1fcefeb7fd32628a5311a8c ] [More extensive haddocks on Darcs.Patch.Depends.get_extra. Eric Kow <[email protected]>**20090905222525 Ignore-this: c8e2ac70e5f61ea12afc479636d9e0cd ] [specify CPP globally for witnesses build Ganesh Sittampalam <[email protected]>**20090829061922] [missing LANGUAGE in Darcs.ProgressPatches Ganesh Sittampalam <[email protected]>**20090829061256] [missing LANGUAGE in Darcs.Commands.Unrevert Ganesh Sittampalam <[email protected]>**20090829061208] [remove some derived classes from Tag Ganesh Sittampalam <[email protected]>**20090727060203 Ignore-this: 933bd408aff78744925ec2e6cb2475ce This helps to make the representation more abstract ] [couple of GADT build fixes for recent GHCs Ganesh Sittampalam <[email protected]>**20090803050514 Ignore-this: 6c20e60426da722d0119e00be4eb6816 ] [add a comment Ganesh Sittampalam <[email protected]>**20090803055736 Ignore-this: aad4e733fede7c8abe552893159e0fef ] [minor clean up in TouchesFiles Jason Dagit <[email protected]>**20090830080712 Ignore-this: dd23aa84c47234c72f14948981214960 ] [silence a warning that happens when compiling witnesses Jason Dagit <[email protected]>**20090830022548 Ignore-this: 58f61bce80505de12ede5095d209b577 ] [remove unused argument to readPrim Jason Dagit <[email protected]>**20090830022354 Ignore-this: df9164c70fa9be8f274bdb8e634956d1 ] [use gzipFormat instead of GZip to work around deprecation warning. Jason Dagit <[email protected]>**20090830022209 Ignore-this: a556704bf2c974c10619a8051ebb90b4 ] [Resolve issue1578: Don't put newlines in the Haskeline prompts. Judah Jacobson <[email protected]>**20090829072733 Ignore-this: 48a17fb0f45f3aee76aa56361bfd97df Haskeline doesn't expect to get control characters in its prompt. The fix is to manually print all but the last line of a prompt message separately, and then pass the last line as the Haskeline prompt. So far we've only seen this cause a problem when mark-conflicts is run in the emacs shell (see the issue for more information). ] [Whoops, one more obviated line from Darcs.Repository.Checkpoint. Trent W. Buck <[email protected]>**20090829070738 Ignore-this: b9aef33a8b34db9d41f8d0b83025c85b ] [Resolve issue1548: show contents requires at least one argument. Trent W. Buck <[email protected]>**20090829073643 Ignore-this: c15286919e827a5e7fdad01c75acccfe ] [Add a hidden alias "darcs log" for "darcs changes". Trent W. Buck <[email protected]>**20090829032545 Ignore-this: 96d8bec96c5bf39387a534fa62a79e28 Reduces disparity with CVS, svn, hg, git &c, who all use "log". ] [Mark issue68 test as failing (and fix issue number). Eric Kow <[email protected]>**20090828101717 Ignore-this: 63c0ba22d171cefe5a0244b4ee57a991 ] [Resolve issue1373: don't use a broken example. Trent W. Buck <[email protected]>**20090828062131 Ignore-this: 35d59b69c8018f55191486c6a0175c9a ] [Reorder paragraphs and minor rewrite of darcs replace --help. Trent W. Buck <[email protected]>**20090828041241 Ignore-this: 72137bca5de55b77173db6758445b4a7 ] [Remove unused code from Darcs.Repository.Checkpoint. Trent W. Buck <[email protected]>**20090828030127 Ignore-this: 25ab977e5ac0b735ca6ee90aea0349c9 ] [The record-scaling test still fails. Trent W. Buck <[email protected]>**20090828025648 Ignore-this: 5ca16bd011676b083cdfcd4359f4744a ] [Clean up leftover conflicts from merge with David's test suite work. Eric Kow <[email protected]>**20090824104840 Ignore-this: ec4ef00d4c5b4da6e24f008f854da2e8 ] [Resolve conflicts between David and mainline test suite work. Eric Kow <[email protected]>**20090815232335 Ignore-this: 72f386bd5345c344f32ca2db9f5594e3 Patches involved from David's end: * add failing test demonstrating nasty conflict markings. * mark check.sh test as passing. * mark issue27 test as passing. * mark issue 1043 test as passing. * mark nfs-failure.sh as passing (even though it might not be fixed). * mark dist-v as passing. * mark check.sh as failing. * clean up and mark as passing the broken-pipe.sh test. * mark issue 525 is no longer failing. * move bugs into tests/ directory. The main patch involved is the 'move bugs into tests/ directory' which conflicts with some new bugs we added. I re-added these manually from the mainline branch of darcs along with some bugs we added that we later marked as passing. I also had to clean up a few tests along the way: - check.sh because of conflicts, - broken-pipe.sh because of temp dir garbage and - record-scaling.sh because of MacOS X incompatiblity ] [add failing test demonstrating nasty conflict markings. David Roundy <[email protected]>**20090329022150 Ignore-this: 17b0df1e2a33e5efccd92f1930850c15fbf12b1e ] [mark check.sh test as passing. David Roundy <[email protected]>**20081207192451 Ignore-this: bb0d26124eb69bb88e981d06caa88206 ] [mark issue27 test as passing. David Roundy <[email protected]>**20081201170526 Ignore-this: 49c7b75f79d9bf25610162d079f7dde9 ] [mark issue 1043 test as passing. David Roundy <[email protected]>**20081119150515 Ignore-this: 8b46c9feb0680f0ee9b4f95ee93eb580 ] [mark nfs-failure.sh as passing (even though it might not be fixed). David Roundy <[email protected]>**20081117160036 Ignore-this: d13ebd26c2a799668068132f9c4d05bc ] [mark dist-v as passing. David Roundy <[email protected]>**20081115221319 Ignore-this: 6fbea237af32801e7207f25af032f408 ] [mark check.sh as failing. David Roundy <[email protected]>**20081115220504 Ignore-this: 812ad08924c9d713646c7adc26d34b75 ] [clean up and mark as passing the broken-pipe.sh test. David Roundy <[email protected]>**20081115213750 Ignore-this: db9fb0de61a4099c73e42365047dc9d2 ] [mark issue 525 is no longer failing. David Roundy <[email protected]>**20081115212158 Ignore-this: 8398c09d03c2e900251f46c41106d94 ] [move bugs into tests/ directory. David Roundy <[email protected]>**20081115205509 Ignore-this: 6b249e3ba90b455331ba31fee36ef5ad ] [Eliminate references to the autotools-based build system. Taylor R Campbell <[email protected]>**20090826170519 Now that the autotools-based build system is gone, various vestiges of it can be eliminated. This patch also eliminates some text in src/darcs.tex about the Darcs cgi script in contrib/cgi/, which was built using `make install-server' and appears to have no way to be built now. This does not eliminate the script, however. The following tests still refer to the old autotools- and make-based build system: release/darcs.spec.in src/Darcs/Commands/Send.lhs tests/README.test_maintainers.txt tests/run-all-tests I didn't change them because I don't know what to substitute for them. The sendmail options could use some clearer documentation anyway, which is outside the scope of this patch. ] [Mark issue1317 test as failing (and note issue number). Eric Kow <[email protected]>**20090824110437 Ignore-this: bbecb8d3a4e60c3bc96b28b729375b6c ] [Regression test for issue1317. Marco Túlio Gontijo e Silva <[email protected]>**20090811220616 Ignore-this: 846d37873b06a70bed87afeb0fbf2d38 ] [Explain a slightly obtuse one-liner. Trent W. Buck <[email protected]>**20090824033200 Ignore-this: 8d6ed336b0a2d932eed879fc85183943 ] [Support tests/failing-foo.sh convention for bugs. Eric Kow <[email protected]>**20090814103659 Ignore-this: 4729f6553910660be921af7d1199abb1 ] [Minor style tweaks in cabal test. Eric Kow <[email protected]>**20090814102234 Ignore-this: 9ce3479022f3c177af3c4fa17426b177 ] [Support command line arguments in PAGER or DARCS_PAGER [email protected]**20090823011449 Ignore-this: d979af618b5f193b58867e43dd2e0171 For example: PAGER="less -is" darcs help ] [Rename xml_summary to xmlSummary and summarize to plainSummary. Eric Kow <[email protected]>**20090818220119 Ignore-this: b1e29f45f0599a406ffb6496acac2488 ] [Cut unused imports in Darcs.Patch.Viewing. Eric Kow <[email protected]>**20090818214432 Ignore-this: f83f5ce55279a5b96a14770dbcb7dd0b ] [Simpler types for changes --summary. Eric Kow <[email protected]>**20090818213946 Ignore-this: 22fdc7984753eedf3d35ff88762a2eb2 ] [update docs for darcs mv to reflect reality Ganesh Sittampalam <[email protected]>**20090827230453 Ignore-this: 7f5c30b5711b8bbcbec47f6217662b0d ] [Print helpful message in gzcrcs command when visiting other repos Ganesh Sittampalam <[email protected]>**20090827054315 Ignore-this: a7f997c441f0e246c4d31d827ebc9d2b ] [Camel-case some Darcs.Patch.Viewing functions. Eric Kow <[email protected]>**20090817153751 Ignore-this: b3b03f3408f1097e5b476a35215ecec6 ] [A tiny bit more separation of concerns in changes --summary core. Eric Kow <[email protected]>**20090817230414 Ignore-this: b9f5e9625862d19c356667dc2ce6710d ] [Resolve issue183: Do not sort changes --summary output. Eric Kow <[email protected]>**20090817225814 Ignore-this: 2749e08a69592f49bb7e2400ae89e8a6 This adds move patches to our high-level representation of summary output. ] [Refactor changes --summary core code. Eric Kow <[email protected]>**20090817225735 Ignore-this: 1078c3bf42fa5e2acef6e6a31c81c42b This uses some custom types representing summarised changes on a higher level and also moves the XML and 'line' based rendering of summaries into separate blocks of code. ] [Accept issue1472: "darcs record ./foo" shouldn't open ./bar. Trent W. Buck <[email protected]>**20090815084306 Ignore-this: 23d5392008872369ba9b509b75aeb5bc This bug was present in Darcs 2.0, but gone by 2.3. Thus, this patch simply adds a regression test. ] [Remove tabs from src/Exec.hs Reinier Lamers <[email protected]>**20090809163015 Ignore-this: 30952fddf0ae0f60b3af442e90411ca7 ] [Remove optimize --checkpoint cruft. Eric Kow <[email protected]>**20090811143734 Ignore-this: c36c818704171289ff388cdd539626d5 ] [darcs.cabal turn on -fwarn-tabs per dupree [email protected]**20090807013047 Ignore-this: c7961b5512d2f8392f3484c81ca197e0 ] [Add script that tricks cabal into installing our build-depends only. Petr Rockai <[email protected]>**20090805152653 Ignore-this: 6a70f5ff464d26a944b81967606e7af0 ] [Avoid unescaped hyphens and backslashes in manpage. Trent W. Buck <[email protected]>**20090803063335 Ignore-this: 4db2b484b68590f754d36f4751e93962 Fixes these bugs: W: darcs: manpage-has-errors-from-man darcs.1.gz: 297: a tab character is not allowed in an escape name I: darcs: hyphen-used-as-minus-sign darcs.1.gz (87 times) http://lintian.debian.org/tags/manpage-has-errors-from-man.html http://lintian.debian.org/tags/hyphen-used-as-minus-sign.html ] [Typo: s/comand/command/. Trent W. Buck <[email protected]>**20090803042007 Ignore-this: fcbe6f2cbcb3743872b0431b11dea10c Thanks to http://lintian.debian.org/tags/spelling-error-in-binary.html. ] [Update hpc.README to use Cabal. Petr Rockai <[email protected]>**20090730190304 Ignore-this: 7f63751a7daa418ffdca2ca6d20af1b1 ] [Add a flag for enabling HPC for the darcs library. Petr Rockai <[email protected]>**20090730185959 Ignore-this: e0246133e84e8547e223f61b67a28066 ] [Combine the HPC tix files after each test in ShellHarness. Petr Rockai <[email protected]>**20090730185951 Ignore-this: 577a6e1614aa8c5ff6f25d9df6f81554 This is done when HPCTIXDIR is set, so presumably we are generating coverage report. We need to do this, because otherwise, a full testsuite run produces over a gigabyte of tixfiles, even though the combined tix is less than 200K. ] [Require haskell zlib, dropping the legacy internal zlib binding. Petr Rockai <[email protected]>**20090722091325 Ignore-this: 348c1fd005fe19900e4a9706567b4ee0 ] [Fix link to autoconf tarball. Eric Kow <[email protected]>**20090723135420 Ignore-this: cfe87256fbd5af286a00fbb84ca443d0 ] [Update web page for 2.3.0 release. Eric Kow <[email protected]>**20090723134705 Ignore-this: dfa04b99e5c0170448d635bf0e496a66 ] [Resolve conflict between autoconf removal and version number updates. Eric Kow <[email protected]>**20090723133543 Ignore-this: efcf724bf0230243cee1e88502428ccd ] [Makefile: fix dependency on no longer existing distclean target. Eric Kow <[email protected]>**20090722093438 Ignore-this: d0f8da797e26b0c42a2da76eddd4ed31 ] [Make utf8-string mandatory. Eric Kow <[email protected]>**20090721194433 Ignore-this: cd8a94b3e4e41bb938e82dffbcb27e2d ] [Remove UTF8 module completely. Eric Kow <[email protected]>**20090721194220 Ignore-this: f4ec3fe853ecbc928a8d3e3c3b9aa07c The utf8-string package has been the default for a while. Now we're wholly dependent on it. ] [Add support for skipping tests (exit 200). Petr Rockai <[email protected]>**20090720095346 Ignore-this: 133cb02e8cca03a4678068450cb150a9 ] [Remove the --checkpoint option from the UI. Petr Rockai <[email protected]>**20090720093634 Ignore-this: 2fb627cd1e64bbe264fda6e19f0b085b ] [Remove the support for writing out new checkpoints. Petr Rockai <[email protected]>**20090720091809 Ignore-this: 87eb23fe7604ed0abe5c38daafb87a7e ] [Remove unused determine_release_state.pl. Eric Kow <[email protected]>**20090721205227 Ignore-this: 15331bbb258fbdeb6bd4887c8dabb8ed ] [Remove ununsed test/shell_harness.hs. Eric Kow <[email protected]>**20090721192027 Ignore-this: 7efbe97744c698beecd4f17a09868467 ] [Remove autoconf support and cut GNUmakefile to only build manual and tags. Petr Rockai <[email protected]>**20090717160355 Ignore-this: 8a45c095c566172076adbe6e44b37827 ] [Slightly refactor the run function in ShellHarness. Petr Rockai <[email protected]>**20090714134205 Ignore-this: 92c7f05b9c4d6973e95706f23ea27dfc ] [Slightly refactor test machinery in Setup.lhs. Petr Rockai <[email protected]>**20090714134119 Ignore-this: 32206a331658d407d9c0fb3b48405db6 ] [Use tee in pending_has_conflicts.sh for easier debugging. Petr Rockai <[email protected]>**20090713180404 Ignore-this: 7b96b7f7df6358ddb0466cfe58803f71 ] [Roll back the getSymbolicLinkStatus workaround, since it constitutes a fd leak. Petr Rockai <[email protected]>**20090710143149 Ignore-this: cd2aa7e13cc902852a7c5d0855d55538 rolling back: Sun Jun 21 17:39:42 CEST 2009 Petr Rockai <[email protected]> * Avoid getSymbolicLinkStatus in mmap implementation, works around GHC 6.8.2 bug. ] [Note darcs 2.3 pre-release and darcs 2.2 stable versions in website. Eric Kow <[email protected]>**20090716133323 Ignore-this: bbe9c36213a07890816b8599f2f29aee ] [Remove website automation from Makefile. Eric Kow <[email protected]>**20090716133230 Ignore-this: f0cdb9afaa9d314321b345a08e2784bf ] [Rename index.html.in to index.html, forgoing website automation. Eric Kow <[email protected]>**20090716133023 Ignore-this: a4c62db2d3ca341e95262cd05328473f The website automation allowed us to avoid duplication of information (ie. version numbers), but we're in the process of changing our build and release system, which breaks the site. For now, we go for simplicity and robustness, perhaps restoring the automation in the future when things have settled down somewhat. ] [Remove bytestring flag from darcs.cabal. Eric Kow <[email protected]>**20090714165021 Ignore-this: 4325773231f9679054c7d045657bdae0 Now that we're requiring GHC 6.8 or above, we always use the external bytestring package. ] [Move email unit tests to Darcs.Test module space Reinier Lamers <[email protected]>**20090629203409 Ignore-this: 3187d24822e7a125a46e0a273956d792 ] [Teach cabal about new Darcs.Test modules Reinier Lamers <[email protected]>**20090629193208 Ignore-this: c27c8398fd637e100259fdf1f4d42e0a ] [Move unit tests to Darcs.Test module space Reinier Lamers <[email protected]>**20090629192934 Ignore-this: e88d9ecb7ca8f0b5679fba2cd2813ff0 ] [Bound size of trees generated in Darcs.Patch.QuickCheck Reinier Lamers <[email protected]>**20090628134952 Ignore-this: c499b850ad5ca15d4bada56b69ee98f3 This keeps the 'Checking that tree flattenings are consistent' test from occasionally taking hours and hours to complete. The maximum depth of 5 was found by experiment. ] [Add some comments in Darcs.Patch.QuickCheck Reinier Lamers <[email protected]>**20090628134908 Ignore-this: c66a386865832e75427f99febfb91a91 ] [Avoid getSymbolicLinkStatus in mmap implementation, works around GHC 6.8.2 bug. Petr Rockai <[email protected]>**20090621153942 Ignore-this: 91092453d97c87edfc4e46b11e4ae208 ] [TAG 2.3.0 Petr Rockai <[email protected]>**20090723115125 Ignore-this: e326d4ddff92c578e8fe8a3c23d00193 ] Patch bundle hash: d4ce7a2a705b67bea078af934c2a2698e4690e3b
_______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
