> I'll welcome (and apply) haddock patches (or comment patches in
> general) that include personal statements of uncertainty.  This adds
> transparency to the comments, and helps other developers to interpret
> them properly.  Later patches can remove the uncertainty.
>
> e.g. a patch like
>
> --| invisiblePS doesn't seem to print anything, which seems a bit odd
> to me.  - Florent
>
> would be welcome.

Here it comes…

Tue Oct  7 23:19:59 CEST 2008  [EMAIL PROTECTED]
  * haddock documentation for Printer

New patches:

[haddock documentation for Printer
[EMAIL PROTECTED] hunk ./src/Printer.lhs 63
 import System.IO (Handle, stdout, hPutStr)
 import FastPackedString (PackedString, packString, hPutPS, unpackPS, concatPS)
 
+-- | A 'Printable' is either a String, a packed string, or a chunk of
+-- text with both representations.
 data Printable = S !String
                | PS !PackedString
                | Both !String !PackedString
hunk ./src/Printer.lhs 69
 
-space_p, newline_p :: Printable
+-- | 'space_p' is the 'Printable' representation of a space.
+space_p :: Printable
 space_p   = Both " "  (packString " ")
hunk ./src/Printer.lhs 72
+
+-- | 'newline_p' is the 'Printable' representation of a newline.
+newline_p :: Printable
 newline_p = S "\n"
 
hunk ./src/Printer.lhs 77
+-- | Minimal 'Doc's representing the common characters 'space', 'newline'
+-- 'minus', 'plus', and 'backslash'.
 space, newline, plus, minus, backslash :: Doc
 space     = unsafeBoth " "  (packString " ")
 newline   = unsafeChar '\n'
hunk ./src/Printer.lhs 86
 plus      = unsafeBoth "+"  (packString "+")
 backslash = unsafeBoth "\\" (packString "\\")
 
-lparen, rparen :: Doc
+-- | 'lparen' is the 'Doc' that represents @\"(\"@
+lparen :: Doc
 lparen = unsafeBoth  "(" (packString "(")
hunk ./src/Printer.lhs 89
+
+-- | 'rparen' is the 'Doc' that represents @\")\"@
+rparen :: Doc
 rparen = unsafeBoth ")" (packString ")")
 
hunk ./src/Printer.lhs 94
+-- | @'parens' doc@ returns a 'Doc' with the content of @doc@ put within
+-- a pair of parenthesis.
 parens :: Doc -> Doc
 parens d = lparen <> d <> rparen
 
hunk ./src/Printer.lhs 102
 errorDoc :: Doc -> a
 errorDoc = error . renderStringWith simplePrinters'
 
-putDocWith, putDocLnWith :: Printers -> Doc -> IO ()
+
+-- | 'putDocWith' puts a doc on stdout using the given printer.
+putDocWith :: Printers -> Doc -> IO ()
 putDocWith prs = hPutDocWith prs stdout
hunk ./src/Printer.lhs 106
+
+-- | 'putDocLnWith' puts a doc, followed by a newline on stdout using
+-- the given printer.
+putDocLnWith :: Printers -> Doc -> IO ()
 putDocLnWith prs = hPutDocLnWith prs stdout
 
hunk ./src/Printer.lhs 112
-putDoc, putDocLn :: Doc -> IO ()
+
+-- | 'putDoc' puts a doc on stdout using the simple printer 'simplePrinters'.
+putDoc :: Doc -> IO ()
+-- | 'putDocLn' puts a doc, followed by a newline on stdout using
+-- 'simplePrinters'
+putDocLn :: Doc -> IO ()
 putDoc = hPutDoc stdout
 putDocLn = hPutDocLn stdout
 
hunk ./src/Printer.lhs 121
-hPutDocWith, hPutDocLnWith :: Printers -> Handle -> Doc -> IO ()
+-- | 'hputDocWith' puts a doc on the given handle using the given printer.
+hPutDocWith :: Printers -> Handle -> Doc -> IO ()
+-- | 'hputDocLnWith' puts a doc, followed by a newline on the given
+-- handle using the given printer.
+hPutDocLnWith :: Printers -> Handle -> Doc -> IO ()
+
 hPutDocWith prs h d = hPrintPrintables h (renderWith (prs h) d)
 hPutDocLnWith prs h d = hPutDocWith prs h (d <?> newline)
 
hunk ./src/Printer.lhs 130
-hPutDoc, hPutDocLn :: Handle -> Doc -> IO ()
+-- |'hputDoc' puts a doc on the given handle using 'simplePrinters'
+hPutDoc :: Handle -> Doc -> IO ()
+-- 'hputDocLn' puts a doc, followed by a newline on the given handle using
+-- 'simplePrinters'.
+hPutDocLn :: Handle -> Doc -> IO ()
 hPutDoc = hPutDocWith simplePrinters
 hPutDocLn = hPutDocLnWith simplePrinters
 
hunk ./src/Printer.lhs 138
+-- | @'hPrintPrintables' h@ prints a list of 'Printable's to the handle h
 hPrintPrintables :: Handle -> [Printable] -> IO ()
 hPrintPrintables h = mapM_ (hPrintPrintable h)
 
hunk ./src/Printer.lhs 142
+-- | @hPrintPrintable h@ prints a 'Printable' to the handle h.
 hPrintPrintable :: Handle -> Printable -> IO ()
 hPrintPrintable h (S ps) = hPutStr h ps
 hPrintPrintable h (PS ps) = hPutPS h ps
hunk ./src/Printer.lhs 148
 hPrintPrintable h (Both _ ps) = hPutPS h ps
 
+-- | a 'Doc' is a bit of enriched text. 'Doc's get concatanated using
+-- '<>', which is right-associative.
 newtype Doc = Doc { unDoc :: Reader St Document }
 
hunk ./src/Printer.lhs 152
+-- | The State associated with a doc. Contains a set of printers for each
+-- hanlde, and the current prefix of the document.
 data St = St { printers :: !Printers', current_prefix :: !DocumentInternals }
 type Printers = Handle -> Printers'
hunk ./src/Printer.lhs 156
+
+-- | A set of printers to print different types of text to a handle.
 data Printers' = Printers {colorP :: !(Color -> Printer),
                            invisibleP :: !Printer,
                            hiddenP :: !Printer,
hunk ./src/Printer.lhs 170
 
 data Color = Blue | Red | Green | Cyan | Magenta
 
+-- | 'DocumentInternals' represents a 'Printable' by the function
+-- which concatenates another 'Printable' to its right.
 type DocumentInternals = [Printable] -> [Printable]
hunk ./src/Printer.lhs 173
+
+-- | 'Document' is a wrapper around 'DocumentInternals' which allows
+-- for empty Documents. The simplest 'Documents' are built from 'String's
+-- using 'text'.
 data Document = Document DocumentInternals
               | Empty
 
hunk ./src/Printer.lhs 180
+-- | renders a 'Doc' into a 'String' with control codes for the
+-- special features of the doc.
 renderString :: Doc -> String
 renderString = renderStringWith simplePrinters'
 
hunk ./src/Printer.lhs 185
+-- | renders a 'Doc' into a 'String' using a given set of printers.
 renderStringWith :: Printers' -> Doc -> String
 renderStringWith prs d = concatMap toString $ renderWith prs d
     where toString (S s) = s
hunk ./src/Printer.lhs 192
           toString (PS ps) = unpackPS ps
           toString (Both s _) = s
 
+-- | renders a 'Doc' into 'PackedString' with control codes for the
+-- special features of the Doc. See also 'readerString'.
 renderPS :: Doc -> PackedString
 renderPS = renderPSWith simplePrinters'
 
hunk ./src/Printer.lhs 197
+-- | renders a 'Doc' into a list of 'PackedStrings', one for each line.
 renderPSs :: Doc -> [PackedString]
 renderPSs = renderPSsWith simplePrinters'
 
hunk ./src/Printer.lhs 201
+-- | renders a doc into a 'PackedString' using a given set of printers.
 renderPSWith :: Printers' -> Doc -> PackedString
 renderPSWith prs d = concatPS $ renderPSsWith prs d
 
hunk ./src/Printer.lhs 205
+-- | renders a 'Doc' into a list of 'PackedStrings', one for each
+-- chunk of text that was added to the doc, using the given set of
+-- printers.
 renderPSsWith :: Printers' -> Doc -> [PackedString]
 renderPSsWith prs d = map toPS $ renderWith prs d
     where toPS (S s) = packString s
hunk ./src/Printer.lhs 214
           toPS (PS ps) = ps
           toPS (Both _ ps) = ps
 
+-- | renders a 'Doc' into a list of 'Printables' using a set of
+-- printers. Each item of the list corresponds to a string that was
+-- added to the doc.
 renderWith :: Printers' -> Doc -> [Printable]
 renderWith ps (Doc d) = case runReader d (init_state ps) of
                         Empty -> []
hunk ./src/Printer.lhs 249
                              Document d'' -> return $ Document $ (p:) . d''
                              Empty -> return Empty)
 
+-- | 'unsafeBoth' builds a Doc from a 'String' and a 'PackedString' representing
+-- the same text, but does not check that they do.
 unsafeBoth :: String -> PackedString -> Doc
 unsafeBoth s ps = Doc $ simplePrinter (Both s ps)
 
hunk ./src/Printer.lhs 254
+-- | 'unsafeBothText' builds a 'Doc' from a 'String'. The string is stored in the
+-- Doc as both a String and a 'PackedString'.
 unsafeBothText :: String -> Doc
 unsafeBothText s = Doc $ simplePrinter (Both s (packString s))
 
hunk ./src/Printer.lhs 259
-packedString, unsafePackedString, invisiblePS, userchunkPS :: PackedString -> Doc
+-- | 'packedString' builds a 'Doc' from a 'PackedString' using 'printable'
+packedString :: PackedString -> Doc
+-- | 'unsafePackedString' builds a 'Doc' from a 'PackedString' using 'simplePrinter'
+unsafePackedString :: PackedString -> Doc
+-- | 'invisiblePS' creates a 'Doc' with invisible text from a 'PackedString'
+invisiblePS :: PackedString -> Doc
+-- | 'userchunkPS' creates a 'Doc' representing a user chunk from a 'PackedString'.
+userchunkPS :: PackedString -> Doc
 packedString = printable . PS
 unsafePackedString = Doc . simplePrinter . PS
 invisiblePS = invisiblePrintable . PS
hunk ./src/Printer.lhs 272
 userchunkPS = userchunkPrintable . PS
 
+-- | 'unsafeChar' creates a Doc containing just one character.
 unsafeChar :: Char -> Doc
 unsafeChar = unsafeText . return
 
hunk ./src/Printer.lhs 276
-text, unsafeText, invisibleText, hiddenText, userchunk, blueText, redText, greenText, magentaText, cyanText :: String -> Doc
+-- | 'text' creates a 'Doc' from a @String@, using 'printable'.
+text :: String -> Doc
+-- | 'unsafeText' creates a 'Doc' from a 'String', using 'simplePrinter' directly
+unsafeText :: String -> Doc
+-- | 'invisibleText' creates a 'Doc' containing invisible text from a @String@
+invisibleText :: String -> Doc
+-- | 'hiddenText' creates a 'Doc' containing hidden text from a @String@
+hiddenText :: String -> Doc
+-- | 'userchunk' creates a 'Doc' containing a user chunk from a @String@
+userchunk :: String -> Doc
+-- | 'blueText' creates a 'Doc' containing blue text from a @String@
+blueText, redText, greenText, magentaText, cyanText :: String -> Doc
 text = printable . S
 unsafeText = Doc . simplePrinter . S
 invisibleText = invisiblePrintable . S
hunk ./src/Printer.lhs 299
 magentaText = colorText Magenta
 cyanText = colorText Cyan
 
+-- | 'colorText' creates a 'Doc' containing colored text from a @String@
 colorText :: Color -> String -> Doc
 colorText c = mkColorPrintable c . S
 
hunk ./src/Printer.lhs 303
+-- | @'wrap_text' n s@ is a 'Doc' representing @s@ line-wrapped at 'n' characters
 wrap_text :: Int -> String -> Doc
 wrap_text n s =
     vcat $ map text $ reverse $ "": (foldl add_to_line [] $ words s)
hunk ./src/Printer.lhs 312
         add_to_line (l:ls) new | length l + length new > n = new:l:ls
         add_to_line (l:ls) new = (l ++ " " ++ new):ls
 
+-- | 'printable x' creates a 'Doc' from any 'Printable'.
 printable, invisiblePrintable, hiddenPrintable, userchunkPrintable :: Printable -> Doc
 printable x = Doc $ do st <- ask
                        defP (printers st) x
hunk ./src/Printer.lhs 326
 userchunkPrintable x = Doc $ do st <- ask
                                 userchunkP (printers st) x
 
+-- | 'simplePrinters' is a 'Printers' which uses the set 'simplePriners\'' on any
+-- handle.
 simplePrinters :: Printers
 simplePrinters _ = simplePrinters'
 
hunk ./src/Printer.lhs 331
+-- | A set of default printers suitable for any handle. Does not use color.
 simplePrinters' :: Printers'
 simplePrinters'  = Printers { colorP = const simplePrinter,
                               invisibleP = simplePrinter,
hunk ./src/Printer.lhs 342
                               lineColorS = id
                             }
 
+-- | 'simplePrinter' is the simplest 'Printer': it just concatenates together
+-- the pieces of the 'Doc'
 simplePrinter :: Printer
hunk ./src/Printer.lhs 345
+-- | 'invisiblePrinter' is the 'Printer' for hidden text. It seems to
+-- just replace the document with 'empty'. I'm confused (Florent).
 invisiblePrinter :: Printer
 simplePrinter x = unDoc $ doc (\s -> x:s)
 invisiblePrinter _ = unDoc empty
hunk ./src/Printer.lhs 355
 infixr 6 <+>
 infixr 5 $$
 
+-- | The empty 'Doc'.
 empty :: Doc
 empty = Doc $ return Empty
 doc :: ([Printable] -> [Printable]) -> Doc
hunk ./src/Printer.lhs 361
 doc f = Doc $ return $ Document f
 
-(<>), (<?>), (<+>), ($$) :: Doc -> Doc -> Doc
+-- | '(<>)' is the concatenation operator for 'Doc's
+(<>) :: Doc -> Doc -> Doc
+-- | @a '<?>' b@ is @a@ if it is not empty, else @[EMAIL PROTECTED]
+(<?>) :: Doc -> Doc -> Doc
+-- | @a '<+>' b@ is @a@ followed by a space, then @[EMAIL PROTECTED]
+(<+>) :: Doc -> Doc -> Doc
+-- | @a '$$' b@ is @a@ above @[EMAIL PROTECTED]
+($$) :: Doc -> Doc -> Doc
 -- a then b
 Doc a <> Doc b =
    Doc $ do ad <- a
hunk ./src/Printer.lhs 419
                                                     Document bf ->
                                                         sf (newline_p:pf (bf s)))
 
+-- | 'vcat' piles vertically a list of 'Doc's.
 vcat :: [Doc] -> Doc
 vcat [] = empty
 vcat ds = foldr1 ($$) ds
hunk ./src/Printer.lhs 424
 
+-- | 'vsep' piles vertically a list of 'Doc's leaving a blank line between each.
 vsep :: [Doc] -> Doc
 vsep [] = empty
 vsep ds = foldr1 ($$) $ intersperse (text "") ds
hunk ./src/Printer.lhs 429
 
+-- | 'hcat' concatenates (horizontally) a list of 'Doc's
 hcat :: [Doc] -> Doc
 hcat [] = empty
 hcat ds = foldr1 (<>) ds

Context:

[fix issue966 test, use better temp dir name, and start clean
Tommy Pettersson <[EMAIL PROTECTED]>**20081005000117] 
[fix wrong ../path in failing issue1013 test
Tommy Pettersson <[EMAIL PROTECTED]>**20081004140200] 
[mv issue1111 to tests/
David Roundy <[EMAIL PROTECTED]>**20081004143649
 Ignore-this: 51683a80094a4d7733a31b4a40e94016
] 
[resolve issue1111: patchset_intersection used wrong selection for partitionRL
Tommy Pettersson <[EMAIL PROTECTED]>**20081004123851
 We want to commute the non-common patches away, so we can stick the
 remaining common patches to the rest of the common patch set.
] 
[use longer patch names in issue1111 test for safer grep result
Tommy Pettersson <[EMAIL PROTECTED]>**20081003230323
 The 'not grep C out' found the author--date line of patch A, which
 contained my timezone (CEST), so the test failed even when it should have
 succeeded.
] 
[The pager defaults to less(1), not more(1)
Matthias Kilian <[EMAIL PROTECTED]>**20081003212319
 
 It would be better to change get_viewer in Darcs/Utils.lhs to default
 to more(1), but since this may be too intrusive for the upcoming
 release, just let the manual tell the truth (i.e., we're using
 less(1) by default).
 
] 
[Fix cd bugs in conflict-doppleganger test.
Eric Kow <[EMAIL PROTECTED]>**20081004094407
 We were not always exiting from darcs repositories when we
 meant to.
] 
[fix test issue1110, remove duplicates of cd ..
Tommy Pettersson <[EMAIL PROTECTED]>**20081003182126
 They got us out of the test dir, up in the file tree hierarchy, to the
 darcs root dir, and beyond, where the test continued to run test commands
 and cleanups (ooops!!)
] 
[Add a shell test template.
Eric Kow <[EMAIL PROTECTED]>**20081003095005
 This provides helper functions and a basic repository
 setup.  The idea is that when making a new shell test,
 you start by making a copy of the template.
] 
[Reformat Darcs.CommandsAux comments as haddock.
Eric Kow <[EMAIL PROTECTED]>**20080927123217] 
[haddock documentation for ColorPrinter
Tommy Pettersson <[EMAIL PROTECTED]>**20081003175214] 
[only  show 'diffing dir' when debugging.
David Roundy <[EMAIL PROTECTED]>**20081001134124
 Ignore-this: 277810d9083e36b42f27fa7ac4c47386
] 
[TAG 2.1.0pre3
Eric Kow <[EMAIL PROTECTED]>**20081002091241] 
[Bump version number to 2.1.0pre3.
Eric Kow <[EMAIL PROTECTED]>**20081002091226] 
[ChangeLog entries for darcs 2.1.0pre3
Eric Kow <[EMAIL PROTECTED]>**20081002091155] 
[make boring file and tests work with hpc.
David Roundy <[EMAIL PROTECTED]>**20081001202849
 Ignore-this: a699af014f672cc32c1a88863db8ffec
] 
[trim exports of IsoDate.
David Roundy <[EMAIL PROTECTED]>**20081001194015
 Ignore-this: 6f1ef595002c05c07821c2d1332e054b
] 
[fix bugs in second issue1110 test.
David Roundy <[EMAIL PROTECTED]>**20081001171147
 Ignore-this: 2757852f2b599cfd55936cccd1b83b5f
] 
[Add another test case for issue1110.
Eric Kow <[EMAIL PROTECTED]>**20080930220818] 
[resolve issue1110: fix get --hashed.
David Roundy <[EMAIL PROTECTED]>**20080929175725
 Ignore-this: d0aaaa26583dd3ab37bedfc738fb6117
] 
[generate a tidier hoogle frame, add required files, simplify framed doc generation
Simon Michael <[EMAIL PROTECTED]>**20080930204518
 Ignore-this: e60b456f1fdd001b5ae456f9aae05999
] 
[make installdocs should not install TeX intermediaries.
Trent W. Buck <[EMAIL PROTECTED]>**20080930030315
 I'm unilaterally classing the DVI and PostScript versions as
 "intermediaries" to the PDF version, and only installing the latter.
] 
[Add test cases for issue1043.
Eric Kow <[EMAIL PROTECTED]>**20080930105032
 There are two known variants, one of which was fixed by
 resolve issue1043: fix bug in mergeAfterConflicting.
] 
[resolve issue1043: fix bug in mergeAfterConflicting.
David Roundy <[EMAIL PROTECTED]>**20080926211928
 Ignore-this: 1416605539b44b32c18b348f3b4f459d
 This is moderately deep in the internals of the darcs-2 conflict
 handling code.  I had made an assumption that turned out not to be
 correct.  I fix this by switching to use a variant of the commute
 function that doesn't allow conflicting patches to commute, which I
 think should restore correctness here.  It's a scary bug, though, and
 if anyone were to create a moderately small test case, I'd be
 extremely grateful.
] 
[add test that show bug works right.
David Roundy <[EMAIL PROTECTED]>**20080929152909
 Ignore-this: 4829e300015120adeed108079324e5e2
] 
[Add a test case for issue1110.
Eric Kow <[EMAIL PROTECTED]>**20080929151743] 
[Tone down unnecessarily scary language when cancelling
Simon Michael <[EMAIL PROTECTED]>**20080928004013
 Ignore-this: c5940d14099953b7bc963c70591739d1
] 
[darcshoogle script and emacs integration example
Simon Michael <[EMAIL PROTECTED]>**20080927210609
 Ignore-this: 93d5a0ff269d314d32f213dfbe4325be
] 
[Fix doubled verb `be' in documentation on apply posthooks in _darcs/prefs/defaults.
Taylor R Campbell <[EMAIL PROTECTED]>**20080928200954] 
[the issue864 test was misnamed
Simon Michael <[EMAIL PROTECTED]>**20080928231942
 Ignore-this: a0b643bf0abc6f4b6237e5683e9f6dad
] 
[add tests for pull --union and --intersection.
David Roundy <[EMAIL PROTECTED]>**20080929150711
 Ignore-this: 356f506f79ca89a2d1246d068aaa8b2b
 --intersection fails, which is issue1111.
] 
[add more output to URL bug message.
David Roundy <[EMAIL PROTECTED]>**20080929145544
 Ignore-this: 868e0ba5819dba2a4f5b8819080e9407
 I triggered this bug a few times, but once I added the extra output, I
 wasn't able to do it again.  So I'm leaving the extra information in
 the bug message so if someone else runs into it, we can more easily
 track down the issue.
] 
[answer darcs-doc question: no, that would be wrong.
David Roundy <[EMAIL PROTECTED]>**20080926220229
 Ignore-this: 419afd7bd9832e06d3dca45880276296
] 
[Make UglyFileName.super_name work with "/foo" paths.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080926223753
 Ignore-this: 6e4abb72087272ed03e5839a5420f82f
] 
["make api-doc-frames" converts api docs to a frame layout
Simon Michael <[EMAIL PROTECTED]>**20080927091919
 Ignore-this: 2a600aefe4399d17a4c2f14ea1cec350
] 
[hoogleindex no longer depends on api-doc dir
Simon Michael <[EMAIL PROTECTED]>**20080927090139
 Ignore-this: 3a29b9bbd1ba1cdbccea03f4c04727c8
] 
[make hoogle targets more robust
Simon Michael <[EMAIL PROTECTED]>**20080927083125
 Ignore-this: 2aac81020d3855ce8ffc9c4deef3e949
] 
[fix makefile indentation
Simon Michael <[EMAIL PROTECTED]>**20080927020444
 Ignore-this: 847051698f40dc1fd03a8e1db93ff7a1
] 
["make hoogleweb" configures the hoogle web interface in hoogle/ 
Simon Michael <[EMAIL PROTECTED]>**20080927015904
 Ignore-this: dcc4e2526b3c92859ccf9a6f1cb57ad2
 The hoogle index target is now "make hoogleindex". Requires the hoogle
 source tree (perhaps patched to configure result link urls).
 Tested on GNU/Linux with hoogle 4.0.0.5.
] 
[make haddock less noisy 
Simon Michael <[EMAIL PROTECTED]>**20080927012958
 Ignore-this: 84921fbd34b1f7345dec2571c3ec32ae
] 
[Rollback 'simplify patches in rollback'
Eric Kow <[EMAIL PROTECTED]>**20080926225411
 I made the mistake of pulling this into stable despite a darcs 2.1
 feature freeze.
 rolling back:
 
 Tue Sep 23 16:06:19 BST 2008  David Roundy <[EMAIL PROTECTED]>
   * simplify patches in rollback.
] 
[Resolve issue1102: recognise but do not generate patch log 'junk'.
Eric Kow <[EMAIL PROTECTED]>**20080926220119
 
 This is a partial rollback of the two issue27 patches below.  The patches exist
 to (a) generate patch log 'junk' and (b) hide such junk from users' view.
 Because of a feature freeze, we do not want junk generation to be part of darcs
 2.1; however, we do anticipate junk-generation being part of subsequent
 versions of darcs.  To avoid users being confused by this future junk, we only
 rollback the junk-generation part, retaining the junk-hiding part.
 
 rolling back:
 
 Wed Sep 17 16:46:57 BST 2008  David Roundy <[EMAIL PROTECTED]>
   * resolve issue27: add junk to patch identifiers.
 
 Wed Sep 17 18:09:13 BST 2008  David Roundy <[EMAIL PROTECTED]>
   * hokey fix to allow unit tests to generate random input.
 
] 
[Roll back Dmitry's drop_dotdot change in Darcs.Patch.Filename.  
David Roundy <[EMAIL PROTECTED]>**20080926145013
 Ignore-this: d432374bbbe4cc006a26deeb3d15c3ec
 
 The key here is that he didn't want to change the internal
 patch-handling code, just the use of drop_dotdots in Darcs.RepoPath,
 which now uses UglyFileName for this purpose (which has Dmitry's code
 in it).
 
 rolling back:
 
 Thu Sep 25 13:57:11 EDT 2008  Dmitry Kurochkin <[EMAIL PROTECTED]>
   * Make FileName.drop_dotdot work with absolute paths.
 
     M ./src/Darcs/Patch/FileName.lhs -7 +12
] 
[split FileName into two modules.
David Roundy <[EMAIL PROTECTED]>**20080926144501
 Ignore-this: dbb6650c6300745101bacd41bef431f0
 This duplicates some code, and makes a Darcs.Patch.FileName into the
 module (which FileName originally was) for handling paths within a
 darcs repository.  Code that had gotten agglomerated into this module
 is now in UglyFileName.lhs, which I hope to eliminate.  I went through
 the imports of FileName and tried to separate them between those that
 use FileName to deal with paths in a repository and those that use the
 extra functions what were added there, and those that abuse FileName
 to handle other sorts of paths (absolute paths, in particular).
] 
["make api-doc-with-source" generates docs with links to colourised source code
Simon Michael <[EMAIL PROTECTED]>**20080925213719
 Ignore-this: c16b935c727838c606fa5daa29ccc41f
 This works with current hs-colour on GNU/Linux but may not be
 portable; I made it a separate make target to start with.  Only
 per-module source links are enabled until there is a fix for the
 haddock/hoogle issue noted.
] 
[issue27.sh is still sporadically buggy.
David Roundy <[EMAIL PROTECTED]>**20080926134948
 Ignore-this: ec2bf07485a6dc0fda83c786a7982df1
] 
[add test that fails sporadically on nfs under ghc 6.6.
David Roundy <[EMAIL PROTECTED]>**20080925202350
 Ignore-this: 8aae9073ea132935f1951f7e187bc2ea
 I haven't time to track this down, but it doesn't look like a bug in
 the test script.  This was the issue27 test.
] 
[haddock documenation for DateTester
[EMAIL PROTECTED] 
[haddock documentation for DateMatcher
[EMAIL PROTECTED] 
[haddockification of IsoDate
[EMAIL PROTECTED]
 Docstrings by Eric Kow
] 
[Move issue1078 test from bugs to tests.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080925180103
 Ignore-this: f735ee2e36bdf8f446cab61d1f7ac334
] 
[Resolve issue1078: make ioAbsolute work with symbolic links in file paths.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080925175726
 Ignore-this: af4cf0bd842b9aae5e2fffe4500a1aa5
] 
[Make FileName.drop_dotdot work with absolute paths.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080925175711
 Ignore-this: 46c625a35bb11bea19b0749756d1a225
] 
[Force hidden conflicts test to use the darcs-2 format.
Eric Kow <[EMAIL PROTECTED]>**20080925175251
 Move it to the tests directory because it passes if we do
 this.  We consider this to be a bug that is solved by using
 the darcs 2 format.
] 
[Use init+pull instead of get in issue27 test.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080925142606
 Ignore-this: e8be404b0ccbc56d8f547b11b6e58c76
 This would hopefully make it pass on NFS.
] 
[Exceptions to GPL granted as of 2008-09-11.
Eric Kow <[EMAIL PROTECTED]>**20080911120758] 
[Update manual to reflect --darcs-2 default.
Eric Kow <[EMAIL PROTECTED]>**20080925142538] 
[resolve issue1003: don't sever transfer-mode connection on IO error.
David Roundy <[EMAIL PROTECTED]>**20080925145150
 Ignore-this: 3aecb8cffa83170847b0a2452c5763f0
 There was a bug in Ssh, in which unless the very first file we access
 on a given server was present, we severed the connection.  This fixes
 that bug.
] 
[preliminary hoogle indexing
Simon Michael <[EMAIL PROTECTED]>**20080925084432
 If haddock and hoogle are installed, "make hoogle" generates api-doc/main.hoo.
 Use it at the command-line like so: hoogle --data=api-doc/main.hoo something
] 
[TAG 2.1.0pre2
Eric Kow <[EMAIL PROTECTED]>**20080925081049
 Ignore-this: 99b608f2401e8f14358e121e9b95e211
] 
[Bump version number to 2.1.0pre2.
Eric Kow <[EMAIL PROTECTED]>**20080925081019
 Ignore-this: 9d1aa701ce0b8cfc87007216207166fe
 It was initially planned that the upcoming release be called 2.0.3, but
 since we are initializing darcs-2 format repositories by default, we are
 bumping the version number higher.
] 
[ChangeLog entries for 2.1.0pre2
Eric Kow <[EMAIL PROTECTED]>**20080925080141
 Ignore-this: 1b1e57d425f8528e00e03e7b4a23ad78
] 
[ChangeLog entries: more stuff to ignore
Eric Kow <[EMAIL PROTECTED]>**20080925080129
 Ignore-this: 45362ed8bbabdacf222928cba6756aa4
] 
[resolve issue805: make darcs-2 format the default for new repositories.
David Roundy <[EMAIL PROTECTED]>**20080924141158
 Ignore-this: e7952cb0cdc3124ffa50b0775822000e
] 
[make flagsToPristine obey repository format.
David Roundy <[EMAIL PROTECTED]>**20080924135319
 Ignore-this: 6038a7d05126af9e446406022ca608a0
 This reduces the number of places we set the default repository format
 (hopefully to one?).
] 
[simplify patches in rollback.
David Roundy <[EMAIL PROTECTED]>**20080923150619
 Ignore-this: fd3d327f800e2f1799ec97bc4524f612
 This makes it nicer to incrementally rollback changes from one large
 change:  you aren't prompted for changes that have already been rolled
 back.
] 
[More readable length comparison.
Eric Kow <[EMAIL PROTECTED]>**20080924142304] 
[Haddock some primitive patch functions.
Eric Kow <[EMAIL PROTECTED]>**20080924142157] 
[move issue27 test to bugs directory, since it fails.
David Roundy <[EMAIL PROTECTED]>**20080923215936
 Ignore-this: 4556b273a9f8728de8ac855aae8442d0
] 
[Add test for issue27.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080918135923] 
[Add a test case for issue1078
Eric Kow <[EMAIL PROTECTED]>**20080923081757
 Ignore-this: 33f7f1f63c7b707ff148531f8229ceb0
] 
[give more useful failure message in HTTP for proxy errors.
David Roundy <[EMAIL PROTECTED]>**20080923153400
 Ignore-this: 3d6d204da399175eedf68bedfed8e504
] 
[HTTP: detect proxy server (failing if we want one)
Eric Kow <[EMAIL PROTECTED]>**20080923123539
 The HTTP package has proxy server support, but putting it to use seems
 to be complicated.  Since fetchUrl seems to be used only in optional
 situations, it seems safe to just return an error message (as opposed
 to waiting around for a timeout).
] 
[fix filepath code to work with FilePath package that preceded filepath.
[EMAIL PROTECTED]
 Ignore-this: 6aa0d8b357b0f966403ebe5965dcdec4
] 
[fix type witness bug in createRepository.
David Roundy <[EMAIL PROTECTED]>**20080922234321
 Ignore-this: 2c50393ca25740ce3e210dd24fe8d8fa
] 
[Resolve conflict between replace patches in Darcs.Arguments
Eric Kow <[EMAIL PROTECTED]>**20080922202647] 
[Resolve issue53: check for windows filename validity in darcs add/mv.
Eric Kow <[EMAIL PROTECTED]>**20080922172004] 
[Use --reserved-ok to allow a file with ':' in it in tests.
Eric Kow <[EMAIL PROTECTED]>**20080922171519
 It's likely that this test will just fail under Windows and
 we will have to disable it.
] 
[Add test for issue53.
Eric Kow <[EMAIL PROTECTED]>**20080922152256] 
[Add --reserved-ok flag for darcs add and mv.
Eric Kow <[EMAIL PROTECTED]>**20080922141532
 This is just the flag, not the actual effect.
] 
[Check for filepath package in configure.
Eric Kow <[EMAIL PROTECTED]>**20080922140520] 
[simplify fix for issue1041.
David Roundy <[EMAIL PROTECTED]>**20080922233019
 Ignore-this: a3002e9bba5271790c62ac634e08f472
 It turns out that the simple solution works once a bug in the
 conflict-doppleganger test was fixed!
] 
[translate conflict-doppleganger test to bash.
David Roundy <[EMAIL PROTECTED]>**20080922232839
 Ignore-this: de2a050022dea4251cdc2cc5e8b55c8c
] 
[Translate mark-conflicts test into shell.
Eric Kow <[EMAIL PROTECTED]>**20080922224858
 It was failing because it expects init to be completely silent.  Since we
 were going to tweak it anyway, we might as well simplify the script.
] 
[Stop calling the darcs-2 format experimental.
Eric Kow <[EMAIL PROTECTED]>**20080922221024] 
[Move repository creation to Darcs.Repository.
Eric Kow <[EMAIL PROTECTED]>**20080922215913
 This is just to avoid importing the DarcsRepo and HashedRepo code in higher
 level code.
] 
[remove test_unit from disttest to speed things up.
David Roundy <[EMAIL PROTECTED]>**20080922225355
 Ignore-this: b3b21bcd3fa72c8d602b5bd0e601021a
 The unit test is only affected by very rarely-modified code, and it's
 overkill to run it absolutely every single time we push code
 (particularly as it sometimes takes exponentially long to generate its
 test cases).
] 
[resolve issue1041: add test for issue1041.
David Roundy <[EMAIL PROTECTED]>**20080922183320
 Ignore-this: 5a6330158d16a24d45f58268c0edb823
 Note that this issue was actually resolved by Vlad Dogaru.  I just
 wrote the test.
] 
[Get: if URL is invalid, direcotry is not created (#1041)
Vlad Dogaru <[EMAIL PROTECTED]>**20080922171705] 
[Replace --without-docs with less ambiguous --without-manual (issue1082).
Trent W. Buck <[EMAIL PROTECTED]>**20080922002602
 It's confusing for ./configure --without-docs to complain about missing haddock.
] 
[Documentation for --allow-unrelated-repos.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080922121122
 Ignore-this: d2630826313c8aeb00acb6853030c22d
] 
[Rename --ignore-unrelated-repos to --allow-unrelated-repos.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080922120727
 Ignore-this: a5990f1741c867316a948e6721118651
] 
[fix  bug I introduced into issue1039 test.
David Roundy <[EMAIL PROTECTED]>**20080921213043
 Ignore-this: 5b3c6476abae6bb050be014555d05bbe
] 
[Fix hang after a user input error (for example, EOF).
Judah Jacobson <[EMAIL PROTECTED]>**20080918163017] 
[replace consRLSealed with a more  general mapFlipped.
David Roundy <[EMAIL PROTECTED]>**20080921185241
 Ignore-this: c28f73f165254582cba6a14ba6ce93
] 
[make issue1039 fix allow small dissimilar  repositories.
David Roundy <[EMAIL PROTECTED]>**20080921184515
 Ignore-this: 918a09df18ef48c649c1bfaa866d6176
] 
[revert refactor that breaks type witnesses.
David Roundy <[EMAIL PROTECTED]>**20080921182331
 Ignore-this: dd692cffc1a238d6726448bacfe9cacc
] 
[Add '--ignore-unrelated-repos' option to disable unrelated repositories check.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919152631] 
[Resolve issue1039: detect seemingly unrelated repositories when doing push, pull and send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919144553] 
[Refactor in pull_cmd.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919135349
 Ignore-this: e26a489a7a53aeaba544ae5ad0006700
] 
[Test for issue1039.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919153011] 
[manual: add an example of record --pipe prompts similar to tag --pipe docs
Simon Michael <[EMAIL PROTECTED]>**20080918205353] 
[user manual corrections regarding what record and tag --pipe prompt for
Simon Michael <[EMAIL PROTECTED]>**20080918204500] 
[clarify the short help for --pipe
Simon Michael <[EMAIL PROTECTED]>**20080918193717] 
[Use gmakeisms for prettier output.
Trent W. Buck <[EMAIL PROTECTED]>**20080919071358] 
[Spaces in Darcs.Arguments.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919150440] 
[Spaces in Darcs.Commands.Send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919150139] 
[Spaces in Darcs.Commands.Pull.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919145812] 
[Spaces in Darcs.Commands.Push.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919145553] 
[Print "We have the following patches to send:" only when we really have somthing to send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080919114229] 
[fix changes.pl test (translating to bash)
David Roundy <[EMAIL PROTECTED]>**20080917182432
 Ignore-this: 5f8bc7e1f9eadc073402a935142281c4
 This test made assumptions such as that darcs wouldn't ever add a long
 comment to its internal representation of changes, which are now
 broken.
] 
[hokey fix to allow unit tests to generate random input.
David Roundy <[EMAIL PROTECTED]>**20080917170913
 Ignore-this: 31e847e82eef741f4c6cc857fd79a245
 A nicer fix would be to move namepatch and patchinfo into some sort of
 random-number monad rather than leaving them in IO and using
 unsafePerformIO in the example-generation scripts.
] 
[resolve issue27: add junk to patch identifiers.
David Roundy <[EMAIL PROTECTED]>**20080917154657
 Ignore-this: b91ab6f6e05e0fda25488fa51653b741
] 
[TAG 2.0.3pre1
Eric Kow <[EMAIL PROTECTED]>**20080918023645] 
Patch bundle hash:
6b861c4bb7095d7760098a859ef8405753cd7bbc
> Which is why I'm not a huge fan of comments--it's such a common source
> of bugs.  It's better to write readable code, and better to read code,
> when trying to figure out what a function does.  If the code is
> complicated, then it probably does something complicated, and odds are
> high that a simple explanation may lead to bugs.

I think that haddock comments can still help: function names are not
checked by the compiler either, and no one advocates using f for
everything. Maybe it's because I'm not a native english speaker, but I'm
*much* more comfortable with a sentence than with the same information
carried through a noun phrase. So trivial haddock comments are a net win
for me. Coming from french (for instance), english has a very implicit
grammatical structures, which means many ambiguities which can make
non-native speakers uncomfortable. To borrow a contrived example from
Claude Piron, the following function:

malaria_therapy :: SickPerson -> IO (Maybe SanePerson) 
malaria_therpay poorguy = do 
                            malariaGuy <- inoculate malaria poorguy 
                            return $ if (not $ isdead malariaGuy)
                                     then Just malariGuy
                                     else Nothing

is well coded and well named, but you do need to add a comment like 

-- | In 'malaria_therapy', we inoculate malaria to our patient, in
-- order to cure him.

to be friendly to your contributors, even if the comment brings zero new
information with respect to the function name. It's an extreme example,
but trivial comments do help, even with well-written code.

> I  don't intend to discourage you from working on haddock (since much
> of darcs'  code is *not* well-written, and there are many cases that
> even well-written code is complicated and hard to read, but does
> something simple), but rather to  encourage you to be cautious, and in
> particular, not to rely on your reviewers catching anything you may
> have written that was wrong.

Ok, the rest of what i've written in that file should be good.
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to