I'm not 100% sure that the witnesses patch is a good idea, so would appreciate
comment/discussion.

Mon Aug  3 06:19:07 BST 2009  Ganesh Sittampalam <[email protected]>
  * remove unused export

Mon Aug  3 06:24:57 BST 2009  Ganesh Sittampalam <[email protected]>
  * add type witnesses to Darcs.Diff
  
  This doesn't affect the internal safety at all, in the same way that 
  construction of primitive patches is not safe. However together with the 
  introduction of "witnessed slurpies" it does enable a "safe" interface to be 
  exported.
  

New patches:

[remove unused export
Ganesh Sittampalam <[email protected]>**20090803051907
 Ignore-this: 30eb91fce9ad114d83fc04127939c7e2
] hunk ./src/Darcs/Diff.hs 24
 #include "gadts.h"
 
 module Darcs.Diff ( unsafeDiffAtPaths, unsafeDiff, sync, cmp
-#ifndef GADT_WITNESSES
-                  , diff_files
-#endif
                   ) where
 
 import System.Posix
[add type witnesses to Darcs.Diff
Ganesh Sittampalam <[email protected]>**20090803052457
 Ignore-this: 32b27848f2488e89cd4ba067b21cdb54
 
 This doesn't affect the internal safety at all, in the same way that 
 construction of primitive patches is not safe. However together with the 
 introduction of "witnessed slurpies" it does enable a "safe" interface to be 
 exported.
 
] hunk ./src/Darcs/Diff.hs 24
 #include "gadts.h"
 
 module Darcs.Diff ( unsafeDiffAtPaths, unsafeDiff, sync, cmp
+                  , diffAtPaths, diff
                   ) where
 
 import System.Posix
hunk ./src/Darcs/Diff.hs 35
                  )
 import Control.Monad ( when )
 import Data.List ( sort
-#ifndef GADT_WITNESSES
                  , intersperse, isPrefixOf
hunk ./src/Darcs/Diff.hs 36
-#endif
                  )
hunk ./src/Darcs/Diff.hs 37
-#ifndef GADT_WITNESSES
 import Data.Maybe ( catMaybes )
hunk ./src/Darcs/Diff.hs 38
-#endif
 
hunk ./src/Darcs/Diff.hs 39
-#ifndef GADT_WITNESSES
 import ByteStringUtils ( is_funky, linesPS)
 import qualified Data.ByteString.Char8 as BC (last)
 import qualified Data.ByteString as B       (null, empty, take, ByteString)
hunk ./src/Darcs/Diff.hs 42
-#endif
 import qualified Data.ByteString as B       (hGet, length)
 
hunk ./src/Darcs/Diff.hs 44
-import Darcs.SlurpDirectory ( Slurpy, slurp_name, is_dir, is_file,
-#ifndef GADT_WITNESSES
+import Darcs.SlurpDirectory ( Slurpy, WSlurpy, slurp_name, is_dir, is_file,
                         get_slurp,
hunk ./src/Darcs/Diff.hs 46
-#endif
                         get_dircontents, get_filecontents,
                         get_mtime, get_length,
                         undefined_time
hunk ./src/Darcs/Diff.hs 49
-#ifndef GADT_WITNESSES
                         , FileContents, undefined_size
hunk ./src/Darcs/Diff.hs 50
-#endif
                       )
hunk ./src/Darcs/Diff.hs 51
-#ifndef GADT_WITNESSES
 import System.FilePath.Posix ( (</>) )
hunk ./src/Darcs/Diff.hs 52
-#endif
 import Darcs.Patch ( Prim
hunk ./src/Darcs/Diff.hs 53
-#ifndef GADT_WITNESSES
                    , hunk, canonize, rmfile, rmdir
                    , addfile, adddir
                    , binary, invert
hunk ./src/Darcs/Diff.hs 56
-#endif
                    )
hunk ./src/Darcs/Diff.hs 57
-#ifndef GADT_WITNESSES
+import Darcs.Patch.Patchy ( Invert )
 import Darcs.Patch.FileName( fp2fn, breakup )
hunk ./src/Darcs/Diff.hs 59
-#endif
 import System.IO ( openBinaryFile )
 import Darcs.Repository.Prefs ( FileType(..) )
 import Darcs.Flags ( DarcsFlag(..) )
hunk ./src/Darcs/Diff.hs 63
 import Darcs.Utils ( catchall )
-import Darcs.Ordered ( FL(..)
-#ifndef GADT_WITNESSES
-                           , (+>+)
-#endif
-                           )
-#ifndef GADT_WITNESSES
+import Darcs.Ordered ( FL(..), (+>+), unsafeCoerceP )
+import Darcs.Sealed
+
 #include "impossible.h"
hunk ./src/Darcs/Diff.hs 67
-#endif
+
+type DiffList p C(x y) = FORALL(z) (FL p C(y z) -> FL p C(x z))
+
+noPatches :: DiffList p C(x y)
+noPatches = unsafeCoerceP
+
+-- diff and diffAtPaths are the "safe" interface to diffing, as they produce
+-- a patch whose witnesses correspond to those of the slurpies that are
+-- diffed. However, there are multiple possible diffs between the slurpies,
+-- depending on the various options like whether we look for adds or whether
+-- we restrict to certain paths. The safety is therefore only partial.
+-- It might make sense to only provide the witness for one of the two slurpies,
+-- and leave the other one sealed. Need to investigate the calling sites to
+-- determine if this makes sense or not.
+diff :: [DarcsFlag]
+     -> (FilePath -> FileType) -> WSlurpy C(x) -> WSlurpy C(y) -> FL Prim C(x y)
+diff flags ft (Witnessed s1) (Witnessed s2) = unsafeDiff flags ft s1 s2
+
+diffAtPaths :: (Bool, Bool, Bool) -> (FilePath -> FileType) ->
+               WSlurpy C(x) -> WSlurpy C(y) -> [FilePath] -> FL Prim C(x y)
+diffAtPaths opts ft (Witnessed s1) (Witnessed s2) paths
+  = unsafeDiffAtPaths opts ft s1 s2 paths
 
 -- | The unsafeDiffAtPaths function calls diff_at_path for a set of files and
 --   and directories, and returns all changes to those files. It recurses into
hunk ./src/Darcs/Diff.hs 109
 --   made at all those paths.
 unsafeDiffAtPaths :: (Bool, Bool, Bool) -> (FilePath -> FileType) ->
                Slurpy -> Slurpy -> [FilePath] -> FL Prim C(x y)
-#ifdef GADT_WITNESSES
-unsafeDiffAtPaths = undefined
-#else
 unsafeDiffAtPaths flags filetypeFunction s1 s2 paths =
hunk ./src/Darcs/Diff.hs 110
-    foldr (+>+) NilFL (catMaybes diffsPerPath)
+    foldr (.) noPatches (catMaybes diffsPerPath) NilFL
   where diffsPerPath = map differ safePaths
         differ       = diff_at_path flags filetypeFunction s1 s2
         safePaths    = make_nonoverlapping_path_set paths
hunk ./src/Darcs/Diff.hs 116
 
 diff_at_path :: (Bool, Bool, Bool) -> (FilePath -> FileType)
-                -> Slurpy -> Slurpy -> FilePath -> Maybe (FL Prim)
+                -> Slurpy -> Slurpy -> FilePath -> Maybe (FL Prim C(y z) -> FL Prim C(x z))
 diff_at_path (ignoreTimes, lookForAdds, summary) filetypeFunction s1 s2 path =
     case (pathIn1, pathIn2) of
         (Nothing, Nothing) -> Nothing
hunk ./src/Darcs/Diff.hs 121
         (Nothing, Just s2PathSlurpy) -> do
-            Just $ diff_added summary filetypeFunction initialFps s2PathSlurpy NilFL
+            Just $ diff_added summary filetypeFunction initialFps s2PathSlurpy 
         (Just s1PathSlurpy, Nothing) -> do
hunk ./src/Darcs/Diff.hs 123
-            Just $ diff_removed filetypeFunction initialFps s1PathSlurpy NilFL
+            Just $ diff_removed filetypeFunction initialFps s1PathSlurpy
         (Just s1PathSlurpy, Just s2PathSlurpy) ->
             Just $ gendiff (ignoreTimes, lookForAdds, summary) filetypeFunction
hunk ./src/Darcs/Diff.hs 126
-                           initialFps s1PathSlurpy s2PathSlurpy NilFL
+                           initialFps s1PathSlurpy s2PathSlurpy
   where pathIn1 = get_slurp (fp2fn path) s1
         pathIn2 = get_slurp (fp2fn path) s2
         initialFps = tail $ reverse (breakup path)
hunk ./src/Darcs/Diff.hs 140
                                       else p1 : delete_overlapping (p2:ps)
     delete_overlapping ps         = ps
     unbreakup = concat . intersperse "/"
-#endif
 
 -- The diff function takes a recursive diff of two slurped-up directory trees.
 -- The code involved is actually pretty trivial.  \verb!paranoid_diff! runs a
hunk ./src/Darcs/Diff.hs 148
 
 unsafeDiff :: [DarcsFlag]
            -> (FilePath -> FileType) -> Slurpy -> Slurpy -> FL Prim C(x y)
-#ifdef GADT_WITNESSES
-unsafeDiff = undefined
-#else
 unsafeDiff opts wt s1 s2
     = case diff_at_path (ignoreTimes, lookForAdds, summary)  wt s1 s2 "" of
hunk ./src/Darcs/Diff.hs 150
-          Just d -> d
+          Just d -> d NilFL
           _      -> impossible -- because "" always exists in a slurpy 
   where -- NoSummary/Summary both present gives False
         -- Just Summary gives True
hunk ./src/Darcs/Diff.hs 165
 
 gendiff :: (Bool,Bool,Bool)
         -> (FilePath -> FileType) -> [FilePath] -> Slurpy -> Slurpy
-        -> (FL Prim -> FL Prim)
+        -> DiffList Prim C(x y)
 gendiff opts@(isparanoid,_,_) wt fps s1 s2
     | is_file s1 && is_file s2 = diff_regular_files isparanoid wt f s1 s2
     | is_dir s1 && is_dir s2 =
hunk ./src/Darcs/Diff.hs 173
                          "." -> fps
                          _ -> n2:fps
           in fps' `seq` recur_diff opts (wt . (n2</>)) fps' dc1 dc2
-    | otherwise = id
+    | otherwise = noPatches
     where n2 = slurp_name s2
           f = mk_filepath (n2:fps)
           dc1 = get_dircontents s1
hunk ./src/Darcs/Diff.hs 183
 -- First parameter is (IgnoreTimes?, LookforAdds?, Summary?)
 recur_diff :: (Bool,Bool,Bool)
            -> (FilePath -> FileType) -> [FilePath] -> [Slurpy] -> [Slurpy]
-           -> (FL Prim -> FL Prim)
-recur_diff _ _ _ [] [] = id
+           -> DiffList Prim C(x y)
+recur_diff _ _ _ [] [] = noPatches
 recur_diff opts@(_,doadd,summary) wt fps (s:ss) (s':ss')
     -- this is the case if a file has been removed in the working directory
     | s < s' = diff_removed wt fps s . recur_diff opts wt fps ss (s':ss')
hunk ./src/Darcs/Diff.hs 199
     diff_removed wt fps s . recur_diff opts wt fps ss []
 recur_diff opts@(_,True,summary) wt fps [] (s':ss') =
     diff_added summary wt fps s' . recur_diff opts wt fps [] ss'
-recur_diff (_,False,_) _ _ [] _ = id
+recur_diff (_,False,_) _ _ [] _ = noPatches
 recur_diff _ _ _ _ _ = impossible
 
 -- diff, taking into account paranoidness and file type, two regular files
hunk ./src/Darcs/Diff.hs 203
-diff_regular_files :: Bool -> (FilePath -> FileType) -> FilePath -> Slurpy -> Slurpy -> (FL Prim -> FL Prim)
+diff_regular_files :: Bool -> (FilePath -> FileType) -> FilePath -> Slurpy -> Slurpy -> DiffList Prim C(x y)
 diff_regular_files ignoreTimes filetypeFunction f s1 s2 = 
     if maybe_differ   
         then case filetypeFunction (slurp_name s2) of                                     
hunk ./src/Darcs/Diff.hs 209
                TextFile -> diff_files f b1 b2                    
                BinaryFile -> if b1 /= b2 then (binary f b1 b2:>:)
-                                         else id                 
-        else id
+                                         else noPatches
+        else noPatches
   where maybe_differ = ignoreTimes
                      || get_mtime s1 == undefined_time
                      || get_mtime s1 /= get_mtime s2
hunk ./src/Darcs/Diff.hs 222
 -- creates a diff for a file or directory which needs to be added to the
 -- repository
 diff_added :: Bool -> (FilePath -> FileType) -> [FilePath] -> Slurpy
-           -> (FL Prim -> FL Prim)
+           -> DiffList Prim C(x y)
 diff_added summary wt fps s
     | is_file s = case wt n of
                   TextFile -> (addfile f:>:) .
hunk ./src/Darcs/Diff.hs 227
                               (if summary
-                               then id
+                               then noPatches
                                else diff_from_empty id f (get_filecontents s))
                   BinaryFile -> (addfile f:>:) .
                                 (if summary then id else
hunk ./src/Darcs/Diff.hs 234
                                 (bin_patch f B.empty (get_filecontents s)))
     | otherwise {- is_dir s -} =
         (adddir f:>:)
-      . foldr (.) id (map (diff_added summary wt (n:fps)) (get_dircontents s))
+      . foldr (.) noPatches (map (diff_added summary wt (n:fps)) (get_dircontents s))
     where n = slurp_name s
           f = mk_filepath (n:fps)
 
hunk ./src/Darcs/Diff.hs 244
 empt :: FileContents
 empt = B.empty
 
+invertQ :: (Invert p) => (FORALL(x y) p C(x y)) -> (FORALL(x y) p C(x y))
+invertQ p = invert p
+
 diff_files :: FilePath -> FileContents -> FileContents
hunk ./src/Darcs/Diff.hs 248
-           -> (FL Prim -> FL Prim)
-diff_files f o n | get_text o == [B.empty] && get_text n == [B.empty] = id
+           -> DiffList Prim C(x y)
+diff_files f o n | get_text o == [B.empty] && get_text n == [B.empty] = noPatches
                  | get_text o == [B.empty] = diff_from_empty id f n
hunk ./src/Darcs/Diff.hs 251
-                 | get_text n == [B.empty] = diff_from_empty invert f o
+                 | get_text n == [B.empty] = diff_from_empty invertQ f o
 diff_files f o n = if o == n
hunk ./src/Darcs/Diff.hs 253
-                   then id
+                   then noPatches
                    else if has_bin o || has_bin n
                         then (binary f o n:>:)
                         else (canonize (hunk f 1 (linesPS o) (linesPS n)) +>+)
hunk ./src/Darcs/Diff.hs 258
 
-diff_from_empty :: (Prim -> Prim) -> FilePath -> FileContents
-                -> (FL Prim -> FL Prim)
+diff_from_empty :: ((FORALL(x y) Prim C(x y)) -> (FORALL(x y) Prim C(x y)))
+                -> FilePath -> FileContents -> DiffList Prim C(x y)
 diff_from_empty inv f b =
     if b == B.empty
hunk ./src/Darcs/Diff.hs 262
-    then id
+    then noPatches
     else let p = if has_bin b
                  then binary f B.empty b
                  else if BC.last b == '\n'
hunk ./src/Darcs/Diff.hs 279
 falls down on large files, but just the first 4096 characters. -}
 has_bin :: FileContents -> Bool
 has_bin = is_funky . B.take 4096
-#endif
 
hunk ./src/Darcs/Diff.hs 280
-#ifndef GADT_WITNESSES
 bin_patch :: FilePath -> B.ByteString -> B.ByteString
hunk ./src/Darcs/Diff.hs 281
-          -> FL Prim -> FL Prim
-bin_patch f o n | B.null o && B.null n = id
+          -> DiffList Prim C(x y)
+bin_patch f o n | B.null o && B.null n = noPatches
                 | otherwise = (binary f o n:>:)
hunk ./src/Darcs/Diff.hs 284
-#endif
 
hunk ./src/Darcs/Diff.hs 285
-#ifndef GADT_WITNESSES
 diff_removed :: (FilePath -> FileType) -> [FilePath] -> Slurpy
hunk ./src/Darcs/Diff.hs 286
-             -> (FL Prim -> FL Prim)
+             -> DiffList Prim C(x y)
 diff_removed wt fps s
     | is_file s = case wt n of
                   TextFile -> diff_files f (get_filecontents s) empt
hunk ./src/Darcs/Diff.hs 299
         $ map (diff_removed wt (n:fps)) (get_dircontents s)
     where n = slurp_name s
           f = mk_filepath (n:fps)
-#endif
 
 sync :: String -> Slurpy -> Slurpy -> IO ()
 sync path s1 s2
hunk ./src/Darcs/Sealed.hs 30
 #endif
                       Sealed2(..), seal2, unseal2, mapSeal2,
                       FlippedSeal(..), flipSeal, unsealFlipped, mapFlipped,
-                      unsealM, liftSM
+                      unsealM, liftSM,
+                      Witnessed(..)
                     ) where
 
 import GHC.Base ( unsafeCoerce# )
hunk ./src/Darcs/Sealed.hs 37
 import Darcs.Show
 
+newtype Witnessed t C(x) = Witnessed { unWitnessed :: t }
+
 data Sealed a where
     Sealed :: a C(x ) -> Sealed a
 
hunk ./src/Darcs/SlurpDirectory.hs 19
 -- Boston, MA 02110-1301, USA.
 
 module Darcs.SlurpDirectory
- (Slurpy, empty_slurpy, slurp,
+ (Slurpy, WSlurpy, empty_slurpy, slurp,
   mmap_slurp, co_slurp, slurp_unboring,
   FileContents,
   undefined_time, undefined_size,
hunk ./src/Darcs/SlurpDirectory/Internal.hs 25
 -- trees.
 module Darcs.SlurpDirectory.Internal
                       ( Slurpy(..), SlurpyContents(..), slurpies_to_map, map_to_slurpies,
-                        FileContents, empty_slurpy,
+                        WSlurpy, FileContents, empty_slurpy,
                         slurp, mmap_slurp, slurp_unboring, co_slurp,
                         slurp_name, is_file, is_dir,
                         get_filecontents, get_dircontents, get_mtime,
hunk ./src/Darcs/SlurpDirectory/Internal.hs 73
 
 import Darcs.Patch.FileName ( FileName, fn2fp, fp2fn, norm_path, break_on_dir,
                               own_name, super_name )
+import Darcs.Sealed ( Witnessed(..) )
 #if mingw32_HOST_OS
 import Data.Int ( Int64 )
 #else
hunk ./src/Darcs/SlurpDirectory/Internal.hs 82
 
 #include "impossible.h"
 
+#include "gadts.h"
+
 #if mingw32_HOST_OS
 type FileOffset = Int64
 #endif
hunk ./src/Darcs/SlurpDirectory/Internal.hs 88
 
+type WSlurpy C(x) = Witnessed Slurpy C(x)
+
 data Slurpy = Slurpy !FileName !SlurpyContents
 
 slurpy_to_pair :: Slurpy -> (FileName, SlurpyContents)

Context:

[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:
7a02c9e300b10d88e8efe5683a84730f5ec3d16f
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to