[darcs-users] darcs patch: resolve issue1358: encode non-ASCII char... (and 2 more)

Eric Kow kowey at darcs.net
Thu Mar 5 08:40:14 UTC 2009


Hi Petr,

Is this one you could review?

Thanks!

On Thu, Mar 05, 2009 at 03:00:03 +0100, Reinier Lamers wrote:
> Here is a fix for issue 1358. The code is pretty contrived, but I think that's
> because the email spec is pretty contrived too.


> Sadly, there's no email sending package on hackage yet.
> 
> Thu Mar  5 02:17:58 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>   * resolve issue1358: encode non-ASCII characters in mail headers
> 
> Thu Mar  5 02:32:24 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>   * Add tests for email header formatting
> 
> Thu Mar  5 02:52:47 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>   * Kill unused imports in External.hs
> 

Content-Description: A darcs patch for your repository!
> 
> New patches:
> 
> [resolve issue1358: encode non-ASCII characters in mail headers
> Reinier Lamers <tux_rocker at reinier.de>**20090305011758
>  Ignore-this: 1e65771afb6174bd751c6c7f6b8837f8
> ] hunk ./src/Darcs/Email.hs 3
>  {-# OPTIONS_GHC -cpp #-}
>  {-# LANGUAGE CPP #-}
> -module Darcs.Email ( make_email, read_email ) where
> +module Darcs.Email ( make_email, read_email, formatHeader ) where
>  
> hunk ./src/Darcs/Email.hs 5
> -import Data.Char ( digitToInt, isHexDigit )
> +import Data.Char ( digitToInt, isHexDigit, ord, intToDigit, isPrint, toUpper )
> +import Data.List ( isInfixOf )
> +import qualified UTF8 ( encode )
>  import Printer ( Doc, ($$), (<+>), (<>), text, empty, packedString, renderPS)
>  
>  import ByteStringUtils (dropSpace, linesPS, betweenLinesPS )
> hunk ./src/Darcs/Email.hs 11
> -import qualified Data.ByteString          as B  (ByteString, length, null, tail, drop, head)
> +import qualified Data.ByteString          as B  (ByteString, length, null, tail
> +                                                ,drop, head, concat, singleton
> +                                                ,pack, append, empty
> +                                                )
>  import qualified Data.ByteString.Char8    as BC (index, head, pack)
>  #if __GLASGOW_HASKELL__ > 606
>  import Data.ByteString.Internal as B (c2w, createAndTrim)
> hunk ./src/Darcs/Email.hs 26
>  import Foreign.Storable ( poke )
>  import Data.Word ( Word8 )
>  
> -line_max :: Int
> -line_max = 75
> +-- line_max is maximum number of characters in an e-mail line excluding the CRLF
> +-- at the end. qline_max is the number of characters in a q-encoded or
> +-- quoted-printable-encoded line.
> +line_max, qline_max :: Int
> +line_max  = 78
> +qline_max = 75
> +
> +-- | Formats an e-mail header by encoding any non-ascii characters using UTF-8
> +--   and Q-encoding, and folding lines at appropriate points. It doesn't do
> +--   more than that, so the header name and header value should be
> +--   well-formatted give or take line length and encoding. So no non-ASCII
> +--   characters within quoted-string, quoted-pair, or atom; no semantically
> +--   meaningful signs in names; no non-ASCII characters in the header name;
> +--   etcetera.
> +formatHeader :: String -> String -> B.ByteString
> +formatHeader headerName headerValue =
> +    B.append nameColon encodedValue
> +  where nameColon = B.pack (map B.c2w (headerName ++ ":")) -- space for folding
> +        encodedValue = fold_and_encode (' ':headerValue)
> +                                       (B.length nameColon) False False
> +
> +-- run through a string and encode non-ascii words and fold where appropriate.
> +-- the integer argument is the current position in the current line.
> +-- the string in the first argument must begin with whitespace, or be empty.
> +fold_and_encode :: String -> Int -> Bool -> Bool -> B.ByteString
> +fold_and_encode [] _ _               _         = B.empty
> +fold_and_encode s  p lastWordEncoded inMidWord = 
> +  let newline  = B.singleton 10
> +      space    = B.singleton 32
> +      s2bs     = B.pack . map B.c2w
> +      -- the twelve there is the max number of ASCII chars to encode a single
> +      -- character: 4 * 3, 4 UTF-8 bytes times 3 ASCII chars per byte
> +      safeEncChunkLength = (qline_max - B.length encoded_word_start
> +                                      - B.length encoded_word_end) `div` 12
> +      (curSpace, afterCurSpace) = break (not . (== ' ')) s
> +      (curWord,  afterCurWord)  = break (== ' ') afterCurSpace
> +      qEncWord | lastWordEncoded = qEncode (curSpace ++ curWord)
> +               | otherwise       = qEncode curWord
> +      mustEncode = inMidWord
> +                   || any (\c -> not (isPrint c) || (ord c) > 127) curWord
> +                   || length curWord > line_max - 1
> +                   || isInfixOf "=?" curWord
> +      mustFold
> +        | mustEncode && lastWordEncoded
> +            = p + 1 + B.length qEncWord > line_max
> +        | mustEncode
> +            = p + length curSpace + B.length qEncWord > line_max
> +        | otherwise
> +            = p + length curSpace + length curWord > line_max
> +      mustSplit = (B.length qEncWord > qline_max && mustEncode)
> +                  || length curWord > line_max - 1
> +      spaceToInsert | mustEncode && lastWordEncoded = space
> +                    | otherwise                     = s2bs curSpace
> +      wordToInsert
> +        | mustEncode && mustSplit = qEncode (take safeEncChunkLength curWord)
> +        | mustEncode = qEncWord
> +        | otherwise  = s2bs curWord
> +      doneChunk | mustFold  = B.concat [newline, spaceToInsert, wordToInsert]
> +                | otherwise = B.concat [spaceToInsert, wordToInsert]
> +      (rest, nextP)
> +        | mustSplit
> +            = (drop safeEncChunkLength curWord ++ afterCurWord, qline_max + 1)
> +        | mustEncode && mustFold 
> +            = (afterCurWord, B.length spaceToInsert + B.length wordToInsert)
> +        | otherwise
> +            = (afterCurWord, p + B.length doneChunk)
> +  in B.append doneChunk (fold_and_encode rest nextP mustEncode mustSplit)
> +
> +-- | Turns a piece of string into a q-encoded block
> +--   Applies q-encoding, for use in e-mail header values, as defined in RFC 2047.
> +--   It just takes a string and builds an encoded-word from it, it does not check
> +--   length or necessity.
> +qEncode :: String -> B.ByteString
> +qEncode s = B.concat [encoded_word_start,
> +                      encodedString,
> +                      encoded_word_end]
> +  where encodedString =  B.concat (map q_encode_if_needed s)
> +
> +encoded_word_start, encoded_word_end :: B.ByteString
> +encoded_word_start = B.pack (map B.c2w "=?UTF-8?Q?")
> +encoded_word_end   = B.pack (map B.c2w "?=")
> +
> +-- turns a character into its q-encoded bytestring value. For most printable
> +-- ASCII characters, that's just the singleton bytestring with that char.
> +q_encode_if_needed :: Char -> B.ByteString
> +q_encode_if_needed c
> +    | c == ' '                          = c2bs '_'
> +    | isPrint c
> +      && not (c `elem` ['?', '=', '_'])
> +      && ord c < 128                    = c2bs c
> +    | otherwise                         = B.concat (map qbyte (UTF8.encode [c]))
> +  where c2bs = B.singleton . B.c2w
> +        -- qbyte turns a byte into its q-encoded "=hh" representation
> +        qbyte b = B.pack (map B.c2w ['='
> +                                    ,word8ToUDigit (b `div` 16)
> +                                    ,word8ToUDigit (b `mod` 16)
> +                                    ])
> +        word8ToUDigit :: Word8 -> Char
> +        word8ToUDigit = toUpper . intToDigit . fromIntegral
>  
>  -- TODO is this doing mime encoding??
>  qpencode :: B.ByteString -> B.ByteString
> hunk ./src/Darcs/Email.hs 130
>  qpencode s = unsafePerformIO
>             -- Really only (3 + 2/75) * length or something in the worst case
> -           $ B.createAndTrim (4 * B.length s) (\buf -> encode s line_max buf 0)
> +           $ B.createAndTrim (4 * B.length s) (\buf -> encode s qline_max buf 0)
>  
>  encode :: B.ByteString -> Int -> Ptr Word8 -> Int -> IO Int
>  encode ps _ _ bufi | B.null ps = return bufi
> hunk ./src/Darcs/Email.hs 137
>  encode ps n buf bufi = case B.head ps of
>    c | c == newline ->
>          do poke (buf `plusPtr` bufi) newline
> -           encode ps' line_max buf (bufi+1)
> +           encode ps' qline_max buf (bufi+1)
>      | n == 0 && B.length ps > 1 ->
>          do poke (buf `plusPtr` bufi) equals
>             poke (buf `plusPtr` (bufi+1)) newline
> hunk ./src/Darcs/Email.hs 141
> -           encode ps line_max buf (bufi + 2)
> +           encode ps qline_max buf (bufi + 2)
>      | (c == tab || c == space) ->
>          if B.null ps' || B.head ps' == newline
>          then do poke (buf `plusPtr` bufi) c
> hunk ./src/Darcs/Email.hs 147
>                  poke (buf `plusPtr` (bufi+1)) equals
>                  poke (buf `plusPtr` (bufi+2)) newline
> -                encode ps' line_max buf (bufi + 3)
> +                encode ps' qline_max buf (bufi + 3)
>          else do poke (buf `plusPtr` bufi) c
>                  encode ps' (n - 1) buf (bufi + 1)
>      | (c >= bang && c /= equals && c <= tilde) ->
> hunk ./src/Darcs/External.hs 67
>  import ByteStringUtils (gzReadFilePS, linesPS, unlinesPS)
>  import qualified Data.ByteString as B (ByteString, empty, null, readFile -- ratify readFile: Just an import from ByteString
>              ,hGetContents, writeFile, hPut, length -- ratify hGetContents: importing from ByteString
> -            ,take, concat, drop, isPrefixOf)
> +            ,take, concat, drop, isPrefixOf, singleton, append)
>  import qualified Data.ByteString.Char8 as BC (unpack, pack)
>  
>  import Darcs.Lock ( withTemp, withOpenTemp, tempdir_loc, removeFileMayNotExist )
> hunk ./src/Darcs/External.hs 84
>  import Printer ( Doc, Printers, putDocLnWith, hPutDoc, hPutDocLn, hPutDocWith, ($$), (<+>), renderPS,
>                   simplePrinters,
>                   text, empty, packedString, vcat, renderString )
> +import Darcs.Email ( formatHeader )
>  #include "impossible.h"
>  
>  sendmail_path :: IO String
> hunk ./src/Darcs/External.hs 416
>      -> Doc     -- ^ body
>      -> IO ()
>  generateEmail h f t s cc body = do
> -     hPutDocLn h $
> -           text "To:"      <+> text t
> -        $$ text "From:"    <+> text f
> -        $$ text "Subject:" <+> text s
> -        $$ formated_cc
> -        $$ text "X-Mail-Originator: Darcs Version Control System"
> -        $$ text ("X-Darcs-Version: " ++ darcs_version)
> -        $$ body
> -  where formated_cc = if cc == ""
> -                      then empty
> -                      else text "Cc:" <+> text cc
> +     putHeader "To" t
> +     putHeader "From" f
> +     putHeader "Subject" s
> +     when (not (null cc)) (putHeader "Cc" cc)
> +     putHeader "X-Mail-Originator" "Darcs Version Control System"
> +     hPutDocLn h body
> +  where putHeader field value
> +            = B.hPut h (B.append (formatHeader field value) (B.singleton 10))
>  
>  have_sendmail :: IO Bool
>  have_sendmail = (sendmail_path >> return True) `catch` (\_ -> return False)
> [Add tests for email header formatting
> Reinier Lamers <tux_rocker at reinier.de>**20090305013224
>  Ignore-this: ad3cf5cecdd6bc63432289dc0a22424a
> ] hunk ./src/unit.lhs 53
>  import System.IO.Unsafe ( unsafePerformIO )
>  import ByteStringUtils
>  import qualified Data.ByteString.Char8 as BC ( unpack, pack )
> -import qualified Data.ByteString as B ( empty, concat )
> +import qualified Data.ByteString as B ( empty, concat, length, unpack, foldr,
> +                                        cons, ByteString, null, filter, head )
> +import Data.Char ( isPrint )
>  import Darcs.Patch
>  import Darcs.Patch.Test
>  import Darcs.Patch.Unit ( run_patch_unit_tests )
> hunk ./src/unit.lhs 71
>  import Control.Monad.ST
>  import Darcs.Ordered
>  import Darcs.Sealed ( Sealed(Sealed), unsafeUnseal )
> +import Darcs.Email ( make_email, read_email, formatHeader )
>  
> hunk ./src/unit.lhs 73
> -import Darcs.Email ( make_email, read_email )
>  #include "impossible.h"
>  \end{code}
>  
> hunk ./src/unit.lhs 103
>                BC.unpack (read_email (renderPS
>                         $ make_email "reponame" [] (Just (text "contents\n"))
>                         (text $ unlines s) (Just "filename")))
> +  putStr "Checking email header line length... "
> +  quickCheck email_header_no_long_lines
> +  putStr "Checking email for illegal characters... "
> +  quickCheck email_header_ascii_chars
> +  putStr "Checking for spaces at beginning of folded email header lines... "
> +  quickCheck email_header_lines_start
> +  putStr "Checking that there are no empty lines in email headers... "
> +  quickCheck email_header_no_empty_lines
>    --putStr $ test_patch
>    --exitWith ExitSuccess
>    case run_tests returnval of
> hunk ./src/unit.lhs 238
>      = (thetest p1 p2)++(pair_unit_tester thetest ps)
>  \end{code}
>  
> +\chapter{Email format tests}
> +
> +These tests check whether the emails generated by darcs meet a few criteria.
> +We check for line length and non-ASCII characters. We apparently do not have to
> +check for CR-LF newlines because that's handled by sendmail.
> +
> +\begin{code}
> +
> +-- Check that formatHeader never creates lines longer  than 78 characters
> +-- (excluding the carriage return and line feed)
> +email_header_no_long_lines :: String -> String -> Bool
> +email_header_no_long_lines field value =
> +    not $ any (>78) $ map B.length $ bs_lines $ formatHeader cleanField value 
> +  where cleanField = clean_field_string field
> +
> +bs_lines :: B.ByteString -> [B.ByteString]
> +bs_lines = finalizeFold . B.foldr splitAtLines (B.empty, [])
> +  where splitAtLines 10 (thisLine, prevLines) = (B.empty, thisLine:prevLines)
> +        splitAtLines c  (thisLine, prevLines) = (B.cons c thisLine, prevLines)
> +        finalizeFold (lastLine, otherLines) = lastLine : otherLines
> +
> +-- Check that an email header does not contain non-ASCII characters
> +-- formatHeader doesn't escape field names, there is no such thing as non-ascii
> +-- field names afaik
> +email_header_ascii_chars :: String -> String -> Bool
> +email_header_ascii_chars field value 
> +    = not (any (>127) (B.unpack (formatHeader cleanField value)))
> +  where cleanField = clean_field_string field
> +
> +-- Check that header the second and later lines of a header start with a space
> +email_header_lines_start :: String -> String -> Bool
> +email_header_lines_start field value =
> +    all (\l -> B.null l || B.head l == 32) (tail headerLines)
> +  where headerLines = bs_lines (formatHeader cleanField value)
> +        cleanField  = clean_field_string field
> +
> +-- Checks that there are no lines in email headers with only whitespace
> +email_header_no_empty_lines :: String -> String -> Bool
> +email_header_no_empty_lines field value =
> +    all (not . B.null . B.filter (not . (`elem` [10, 32, 9]))) headerLines
> +  where headerLines = bs_lines (formatHeader cleanField value)
> +        cleanField  = clean_field_string field
> +
> +clean_field_string :: String -> String
> +clean_field_string = filter (\c -> isPrint c && c < '\x80' && c /= ':')
> +
> +{-
> +-- an arbitrary instance for pretty printer documents 
> +-- perhaps move this to a separate test library file?
> +instance Arbitrary Doc where
> +    arbitrary = let recur :: (Arbitrary a) => (a -> Doc) -> Gen Doc
> +                    recur f = do arbChunk <- f `fmap` arbitrary
> +                                 arbDoc   <- arbitrary
> +                                 combiner <- oneof [return (<>), return ($$)]
> +                                 return (combiner arbChunk arbDoc)
> +                in frequency [(1, return empty)
> +                             ,(4, oneof [recur packedString
> +                                        ,recur text
> +                                        ,recur invisibleText
> +                                        ,recur hiddenText
> +                                        ,recur userchunk
> +                                        ,recur blueText
> +                                        ,recur redText
> +                                        ,recur greenText
> +                                        ,recur magentaText
> +                                        ,recur cyanText
> +                                        ])]
> +    shrink _ = []
> +-}
> +
> +\end{code}
> +
>  \chapter{LCS}
>  
>  Here are a few quick tests of the shiftBoundaries function.
> addfile ./tests/emailformat.sh
> hunk ./tests/emailformat.sh 1
> +#!/usr/bin/env bash
> +
> +set -ev
> +# TODO: is this really enough to make all commands interpret the given strings 
> +# as latin1?
> +export LANG="en_US.ISO-8859-1"
> +
> +rm -rf temp1
> +rm -rf temp2
> +mkdir temp1
> +mkdir temp2
> +cd temp1
> +
> +seventysevenaddy="<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa at bbbbbbbbbb.cccccccccc.abrasoft.com>"
> +
> +/home/reinier/Sources/darcs.net/dist/build/darcs/darcs init
> +
> +echo "Have you seen the sm?rrebr?d of Ren? ?av?sant?" > non_ascii_file
> +/home/reinier/Sources/darcs.net/dist/build/darcs/darcs add non_ascii_file
> +/home/reinier/Sources/darcs.net/dist/build/darcs/darcs record -am "non-ascii file add" -A test
> +
> +cd ../temp2
> +/home/reinier/Sources/darcs.net/dist/build/darcs/darcs init
> +cd ../temp1
> +
> +# long email adress: check that email adresses of <= 77 chars don't get split up
> +/home/reinier/Sources/darcs.net/dist/build/darcs/darcs send --from="Kj?lt ?berstr?m $seventysevenaddy" \
> +           --subject "Un patch pour le r?positorie" \
> +           --to="Un gar?on fran?ais <garcon at francais.fr>" \
> +           --sendmail-command='cp /dev/stdin mail_as_file %<' \
> +           -a ../temp2
> +
> +cat mail_as_file
> +# The long mail address should be in there as a whole
> +grep $seventysevenaddy mail_as_file
> +
> +# Check that there are no non-ASCII characters in the mail
> +ghc -e 'getContents >>= return . not . any (> Data.Char.chr 127)' < mail_as_file | grep '^True$'
> +
> +
> +cd ..
> +rm -rf temp1
> +rm -rf temp2
> +
> [Kill unused imports in External.hs
> Reinier Lamers <tux_rocker at reinier.de>**20090305015247
>  Ignore-this: 6eab59cf3c0c1a04712bd0282caba72f
> ] hunk ./src/Darcs/External.hs 72
>  
>  import Darcs.Lock ( withTemp, withOpenTemp, tempdir_loc, removeFileMayNotExist )
>  import CommandLine ( parseCmd, addUrlencoded )
> -import ThisVersion ( darcs_version )
>  #if defined(HAVE_LIBWWW) || defined(HAVE_LIBCURL) || defined(HAVE_HTTP)
>  import URL ( copyUrl, copyUrlFirst, waitUrl )
>  #endif
> hunk ./src/Darcs/External.hs 80
>  import Exec ( exec, Redirect(..), withoutNonBlock )
>  import Darcs.URL ( is_file, is_url, is_ssh )
>  import Darcs.Utils ( catchall )
> -import Printer ( Doc, Printers, putDocLnWith, hPutDoc, hPutDocLn, hPutDocWith, ($$), (<+>), renderPS,
> +import Printer ( Doc, Printers, putDocLnWith, hPutDoc, hPutDocLn, hPutDocWith, ($$), renderPS,
>                   simplePrinters,
>                   text, empty, packedString, vcat, renderString )
>  import Darcs.Email ( formatHeader )
> 
> Context:
> 
> [Use ghc --make for hspwd intsead of runghc.
> Petr Rockai <me at mornfall.net>**20090304182040
>  Ignore-this: 30683ae3feb28165be1c8604e1a7bb33
>  
>  For some reason, runghc hspwd.hs segfaults on the nooxie buildslave (running
>  Nexenta x86_64 with ghc 6.10.1).
> ] 
> [Add a simple donations page.
> Eric Kow <kowey at darcs.net>**20090303214114
>  Ignore-this: b7f2100c67ec1934c387290f8df8384c
> ] 
> [Accept issue1337: darcs changes shows unrelated patches.
> Trent W. Buck <trentbuck at gmail.com>**20090303003848
>  Ignore-this: 711356eb63bbc1a72f214b5f76199553
> ] 
> [remove escape of latex special chars in ShowRepo help text
> Tommy Pettersson <ptp at lysator.liu.se>**20090302011145
>  Ignore-this: a95061b2f9e7617202528a75f9873beb
> ] 
> [put back latex-unfriendly example in SetPref help text
> Tommy Pettersson <ptp at lysator.liu.se>**20090302011047
>  Ignore-this: 67711e3851547eda9c94be15ac50c7a4
> ] 
> [change to conforming quoting in Record help text
> Tommy Pettersson <ptp at lysator.liu.se>**20090302011007
>  Ignore-this: e7387e0f498251abcfb4c630d60611f4
> ] 
> [put back latex-unfriendly markers in MarkConflicts help text
> Tommy Pettersson <ptp at lysator.liu.se>**20090302010908
>  Ignore-this: deb902ee57073540318c8ff5894e8f91
> ] 
> [remove latex escapes from Dist help text
> Tommy Pettersson <ptp at lysator.liu.se>**20090302010809
>  Ignore-this: b2823e6b46e01c6396b4bfd71a8ea284
> ] 
> [remove latex formatting from AmendRecord help text
> Tommy Pettersson <ptp at lysator.liu.se>**20090302010737
>  Ignore-this: 398f3d83e976d7346eda50c51a420a4a
> ] 
> [escape latex special chars from command help text in manual
> Tommy Pettersson <ptp at lysator.liu.se>**20090302010403
>  Ignore-this: 8c5edf5481981ba4ce52dc8364984157
>  This is an ugly hack. It doesn't cope with "formatted ascii text", but it
>  is an improvement until the help texts can be formatted with reST or
>  something similar.
> ] 
> [put each command usage in new paragraph in manual
> Tommy Pettersson <ptp at lysator.liu.se>**20090302010210
>  Ignore-this: badb1b750850b52c7611e7fd14b124f5
> ] 
> [fix error on homepage.
> David Roundy <droundy at darcs.net>**20090228171403
>  Ignore-this: fe3009d341e976bf2fc4caaa2f95e6604a25bc27
> ] 
> [Add an executable to darcs.cabal to build unit tests
> Reinier Lamers <tux_rocker at reinier.de>**20090228123756
>  Ignore-this: 1a7851ac63c0b7c3728cc39dc68634f
> ] 
> [Sunset the external-bytestring flag (it goes out after 2009-07).
> Eric Kow <kowey at darcs.net>**20090221143824
>  Ignore-this: c77361850cc00b3cf4c53fd160d2ff7d
> ] 
> [Simplify flag names to just refer to hackage names.
> Eric Kow <kowey at darcs.net>**20090221143626
>  Ignore-this: cacef1b5d92923d5011b97e9afad51e6
> ] 
> [Cabal: require utf8-string by default.
> Eric Kow <kowey at darcs.net>**20090217153111
>  Ignore-this: e9f37c379b46a403ccd9f6359aa8d92e
>  The user can go back to the internal utf8-string binding with cabal configure -f-utf8-string
> ] 
> [Remove unused import.
> Trent W. Buck <trentbuck at gmail.com>**20090225035946
>  Ignore-this: d2a12457ca82d1aa2c72f5f7c1759a0f
>  Cleans up after this patch:
>  
>  Fri Feb 20 23:43:22 EST 2009  Christian Kellermann <Christian.Kellermann at nefkom.net>
>    * show patch names on push/pull only when using 'l'
> ] 
> [Avoid "unused import" warning.
> Trent W. Buck <trentbuck at gmail.com>**20090223071349] 
> [Fix FTBFS on Windows.
> Trent W. Buck <trentbuck at gmail.com>**20090223070906] 
> [Restore 'or later' in doc warning about GHC 6.4 and control characters.
> Eric Kow <kowey at darcs.net>**20090221150133
>  Ignore-this: 33523246b21116821fec97e672c6ed0
>  
>  The 'or later' was removed in the following changelog patch:
>  Sun Dec  4 15:13:12 GMT 2005  Tommy Pettersson <ptp at lysator.liu.se>
>    * add changelog entries
>  
>  I believe the removal was accidental.
> ] 
> [Note GHC 6.6 as the new build requirement.
> Eric Kow <kowey at darcs.net>**20090221145431
>  Ignore-this: 1c6a25fb6908487ba0ac6dc937f8e6bf
> ] 
> [Explain #ifdef HAVE_HTTP in check for _darcs/prefs/post.
> Eric Kow <kowey at darcs.net>**20090221141553
>  Ignore-this: 1e75f1230c4bfc79f3c7a83f364ed003
> ] 
> [show patch names on push/pull only when using 'l'
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20090220124322
>  Ignore-this: ac72d63dd8880257d851f99c7b8682ff
> ] 
> [Remove "unused import/definition" warnings with -fzlib.
> Trent W. Buck <trentbuck at gmail.com>**20090220073544
>  Ignore-this: 55400327516c0a2b3fcd95f911bd187a
> ] 
> [Only import things if they are needed.
> Trent W. Buck <trentbuck at gmail.com>**20090220033734
>  Ignore-this: ab0558b58e4ccf6cd4deba1e66ba2df
> ] 
> [Typo: have_HTTP should be HAVE_HTTP.
> Trent W. Buck <trentbuck at gmail.com>**20090220033456
>  Ignore-this: a9f418e6fe39d705e994b96e90d5711f
> ] 
> [Add a sunset notice to our UTF8 module
> Eric Kow <kowey at darcs.net>**20090204165922
>  Ignore-this: e29bed6a8fa818419eee49ea17e9caa6
> ] 
> [Replace Autoconf.hs with consistent use of CPP.
> Trent W. Buck <trentbuck at gmail.com>**20090219064516
>  Ignore-this: 2ff5eedd03d98cc0544260305a0c9ea0
>  
>  It's annoying how recording a patch causes a bunch of unrelated
>  modules like SHA1 to be recompiled, simply because they use *other*
>  variables exported by Autoconf.
>  
>  Since everything is now available via processor definitions, and these
>  definitions are already used in several places, let's just use them
>  everywhere and remove Autoconf entirely.
> ] 
> [Replace our (///) function with filepath's (</>) in Darcs.Resolution
> Eric Kow <kowey at darcs.net>**20090218104812
>  Ignore-this: 152445b2470967ccdd7664150495fa3f
> ] 
> [Remove unused Slurpy parameter from with_selected_*.
> Petr Rockai <me at mornfall.net>**20090214065119
>  Ignore-this: fd563444400705972b8be84e3946f966
> ] 
> [resolve issue1361: specify required includes for curl in cabal file
> Reinier Lamers <tux_rocker at reinier.de>**20090215123415
>  Ignore-this: 2581d04c7534d750575dd4732911fb8f
> ] 
> [Explain why readFile is in the haskell policy test.
> Eric Kow <kowey at darcs.net>**20090213165322
>  Ignore-this: 1a796f69b6bdcf32c7a98bffd46d73f2
> ] 
> [add suggested fix to readFile policy warning
> Simon Michael <simon at joyful.com>**20090212183255
>  Ignore-this: f8430012bbc4113a5e6b17c22409b59f
> ] 
> [Work around weird haddock error.
> Eric Kow <kowey at darcs.net>**20090212201348
>  Ignore-this: 5cca0eef7b7490490bb2163804cee30
> ] 
> [haddock typo
> Simon Michael <simon at joyful.com>**20090212193131] 
> [Cabal: Fix haddock generation.
> Petr Rockai <me at mornfall.net>**20090212191024
>  Ignore-this: 564aff636fba5684b7e37410f14859d7
>  
>  Haddock parses the sources, but does not pass the -D options, and without
>  these, ThisVersion.hs is not compilable. Adding fallback definitions fixes
>  that...
> ] 
> [Fix test failure by ratifying the offending readFile.
> Petr Rockai <me at mornfall.net>**20090212193035
>  Ignore-this: 347a2b873062a30e7dcea0471619078f
> ] 
> [Ratify readFile in list_authors
> Eric Kow <kowey at darcs.net>**20090212194225
>  Ignore-this: 1b7c130f1be5980dd1925451f080edad
> ] 
> [Export read_pending from Darcs.Repository.Internal.
> Petr Rockai <me at mornfall.net>**20090212151601
>  Ignore-this: ec52212b33309fa92b273a9b5f69b9d1
> ] 
> [Resolve issue1347: Check for unsafeMMapFile if mmap use enabled.
> Dave Love <fx at gnu.org>**20090211164509
>  Ignore-this: a6f2807ea7e6d25ce1b2228936170720
> ] 
> [doc: Fix a typo and some trailing whitespace.
> Eric Kow <kowey at darcs.net>**20090210202059
>  Ignore-this: 261c2ce84c1f9c28128789efe55909a8
> ] 
> [MS Windows specific docs
> kari at hoijarvi.org**20090207164149
>  Ignore-this: beae9c64645056a474e74a3b395967
> ] 
> [document .authorspellings in show authors --help
> Simon Michael <simon at joyful.com>**20090208004517
>  Ignore-this: 37cca0a913105b1d2f767f9c2f729bd5
> ] 
> [add help to authorspellings file
> Simon Michael <simon at joyful.com>**20090208003225
>  Ignore-this: 5d404d6958cb66ae38ebb2fae29bae2c
> ] 
> [small authorspellings fix
> Simon Michael <simon at joyful.com>**20090208002825
>  Ignore-this: 1ac99c082d857dfabcce2275b7bc93e4
> ] 
> [add list_authors-style canonicalizing to the show authors command
> Simon Michael <simon at joyful.com>**20090207232835
>  Ignore-this: deac150ed2e2de58442e8fd398c9b14e
> ] 
> [add .authorspellings file appropriate for our repo
> Simon Michael <simon at joyful.com>**20090207235751
>  This .authorspellings file is equivalent to the old hard-coded
>  spellings in list_authors.hs. With this in place, darcs show authors
>  gives the same output as list_authors.
> ] 
> [canonical authors may be defined in an .authorspellings file
> Simon Michael <simon at joyful.com>**20090207221321
>  Example:
>  
>  Joe Blogg <a at b.c>
>  -- authors containing d at e.f or d at g.h or matching just "sue" are Sue Bragg
>  Sue Bragg <d at e.f>, d at g.h, ^sue$
>  
> ] 
> [configuring author spelling variations was complicated, now easier
> Simon Michael <simon at joyful.com>**20090207204248] 
> [Update tests/network/changes.sh (we don't use $DARCS for ages now).
> Petr Rockai <me at mornfall.net>**20090206061737
>  Ignore-this: 22da10c3a4233e61e337de8f1bffad43
> ] 
> [Update shell_harness to work with new Distribution.ShellHarness.
> Eric Kow <kowey at darcs.net>**20090205184707
>  Ignore-this: 345ec618b597a2b454e0a137d750bff2
> ] 
> [Cabal: In test, use the darcs binary in the build directory.
> Petr Rockai <me at mornfall.net>**20090205120452
>  Ignore-this: a335d9c1dfc54d33ca87816e2a9ccde8
> ] 
> [Interestingly, witnesses also need send_email.c on win32.
> Petr Rockai <me at mornfall.net>**20090205110142
>  Ignore-this: a8c4d4add08b1b54040eb8f4c4f256e5
> ] 
> [Look for diff & sendmail at runtime, not compile time.
> Petr Rockai <me at mornfall.net>**20090204091320
>  Ignore-this: 37900b4856a324cd423b57b7f933d701
> ] 
> [One more witnesses build fix (-lz).
> Petr Rockai <me at mornfall.net>**20090204170848
>  Ignore-this: 95fd79f9685632429da47de0c9e856d
> ] 
> [Remove a redundant clause from the Cabal file."
> Judah Jacobson <judah.jacobson at gmail.com>**20090203165258
>  Ignore-this: baa557fd2d2a9993daa53b9da525909f
> ] 
> [Tell Cabal about send_email.c on Windows.
> Judah Jacobson <judah.jacobson at gmail.com>**20090203165206
>  Ignore-this: cf720fe0a9ed812a348726e84a72b7a
> ] 
> [Don't use the bytestring-mmap package on Windows.
> Judah Jacobson <judah.jacobson at gmail.com>**20090203164824
>  Ignore-this: 360f890524bfe0f5d4dac2f17af3ed6a
> ] 
> [Handle empty files in mmapFilePS. Also cater for FD shortage.
> Petr Rockai <me at mornfall.net>**20090204172953
>  Ignore-this: a7cad4f4aa1aed12b7f121ea4c5aa591
> ] 
> [doc: Correct path to darcs cache on Windows
> Eric Kow <kowey at darcs.net>**20090131211156
>  Ignore-this: 235c6883a132fd41dbe958224134cac
> ] 
> [System.Posix is also needed by witnesses on win32.
> Petr Rockai <me at mornfall.net>**20090203140001
>  Ignore-this: 7c331bb358cc5e4a56b602443486b76c
> ] 
> [Cabal: Do not make absence of a diff tool fatal.
> Petr Rockai <me at mornfall.net>**20090203155656
>  Ignore-this: 89c3337030556b9ca4a945d82283d356
> ] 
> [Pass -DWIN32 when compiling witnesses, on win32.
> Petr Rockai <me at mornfall.net>**20090203132055
>  Ignore-this: 7054bba42feb211424a4762ab7106897
> ] 
> [Outsource the (optional) mmap support to bytestring-mmap.
> Petr Rockai <me at mornfall.net>**20090128173825
>  Ignore-this: b497434fc44b93c41252f83464f08db2
> ] 
> [Relax regex and parsec dependencies in darcs.cabal.
> Petr Rockai <me at mornfall.net>**20090128151230
>  Ignore-this: b8e46f9551c0dac608ba3584ccb725bc
> ] 
> [Cabal: Look around for diff and sendmail properly.
> Petr Rockai <me at mornfall.net>**20090128141151
>  Ignore-this: fd299a492c38fca04c791884226e63d9
> ] 
> [Update push-formerly-pl.sh test for issue1333
> Eric Kow <kowey at darcs.net>**20090128145030
>  Ignore-this: a4d765ab6b212e4bbedb14093a680054
> ] 
> [Canonize Don Stewart, Petr Rockai, Benedikt Schmidt and Spencer Janssen
> Eric Kow <kowey at darcs.net>**20090128142742
>  Ignore-this: 94e76427b82465a7ddfea79b39b54c33
> ] 
> [Resolve issue1333: Improve "cannot push to current repository" warning.
> Petr Rockai <me at mornfall.net>**20090128094353
>  Ignore-this: 1cc9fe3631f323a9a66639f5a1cee8ce
> ] 
> [autoconf: Fix definition of SENDMAIL macro when sendmail is not found
> Eric Kow <kowey at darcs.net>**20090127155329
>  Ignore-this: 9799e7838d1a1843f562ad14c08aa337
> ] 
> [autoconf: Define BIGENDIAN instead of setting it.
> Eric Kow <kowey at darcs.net>**20090127140114
>  Ignore-this: 65855789f62b42c4cc84b14f714ff086
>  The new Autoconf.hs just checks if BIGENDIAN is defined, not its value.
> ] 
> [Relax a few version constraints in darcs.cabal.
> Petr Rockai <me at mornfall.net>**20090126154834
>  Ignore-this: d3c7c92513dfffe14fc501d8e84c679d
>  
>  These should be reasonably safe, as they only cover part of what has been
>  previously accepted by configure.
> ] 
> [Add missing doublequotes to multiple tests.
> Petr Rockai <me at mornfall.net>**20090126151705
>  Ignore-this: eb8553ec6ea036f49fee4b9bc20d8f04
> ] 
> [Accept issue1266: warn on init inside a repo.
> Trent W. Buck <trentbuck at gmail.com>**20090126011404
>  Ignore-this: abf7526335f0975340a9a6d06df63470
> ] 
> [Have autoconf forget about .hs.in.
> Trent W. Buck <trentbuck at gmail.com>**20090126125644
>  Ignore-this: 4fa6a3ce806c726dcaec5771d3059c8b
> ] 
> [Drop autogeneration of Autoconf.hs, use CPP instead.
> Petr Rockai <me at mornfall.net>**20090125175413
>  Ignore-this: 5ba936527bad6d85bedf125b01f884d5
> ] 
> [Produce -DPACKAGE_VERSION="..." programatically in Setup.lhs.
> Petr Rockai <me at mornfall.net>**20090124215200
>  Ignore-this: 6c3b0010d7de2397a7d81056523399dd
> ] 
> [Replace ThisVersion.hs generation within Setup with some simple CPP.
> Petr Rockai <me at mornfall.net>**20090124215149
>  Ignore-this: 4a6a9baf2e0d016616d98ee9774c01f4
> ] 
> [Add -fglasgow-exts to Darcs.Patch.Show
> Eric Kow <kowey at darcs.net>**20090125221422
>  Ignore-this: 38fa728c6dd08d8be30712b79b56f634
>  This probably broke when we moved it from the cabal file to Darcs.Show
> ] 
> [Remove stale import from Darcs.Commands.ShowRepo
> Eric Kow <kowey at darcs.net>**20090125215507
>  Ignore-this: 85cc913ca9532b3aec3c6ce616b896d1
> ] 
> [Flip the repo test over to Cabal.
> Petr Rockai <me at mornfall.net>**20090124223836
>  Ignore-this: fc99853532cadcc9a9a77a2e26e2b077
> ] 
> [A grand unified pwd hack.
> Petr Rockai <me at mornfall.net>**20090125182013
>  Ignore-this: edfd791d6780e3b01e5158895e7903a1
>  
>  I have replaced all pwd occurances with a call to hspwd, and I am using runghc
>  to do so. This might be slow-ish, but should be reasonably portable. Moreover,
>  I am experimentally removing the IFS='' hack and adding missing doublequotes to
>  some places (and to some where they are not needed by POSIX but who knows). I
>  believe IFS='' is equivalent to adding proper quoting to expansions (ie $DIR ->
>  "$DIR").
> ] 
> [Refactor version machinery in Setup.lhs.
> Petr Rockai <me at mornfall.net>**20090124211015
>  Ignore-this: 590b4c7825cd858dfc2faa60d9440697
>  
>  Sanctify the notion that 97, 98 and 99 are special in a darcs version
>  number. Assign fancy names to them, for prettier darcs --version.
> ] 
> [Resolve issue1310: create merged \darcsCommand{add}.
> Trent W. Buck <trentbuck at gmail.com>**20090124144058
>  Ignore-this: 945f45d0671c1e5a613ebfb3c4f90f59
>  This replaces inconsistent use of \haskell{add_description},
>  \options{add} and \haskell{add_help}. 
> ] 
> [Resolve issue1313: Clickable ToC and xrefs in PDF user manual.
> Trent W. Buck <trentbuck at gmail.com>**20090125091034
>  Ignore-this: 29bde3a5a170f5965d10d6c160b2099e
> ] 
> [Test for strace first.
> Trent W. Buck <trentbuck at gmail.com>**20090125062905
>  Ignore-this: 76cbe2cb451d226cfa5cf0b39f43722
>  This just results in more accurate "it didn't work because ..." output
>  from "cabal test bugs". 
> ] 
> [(cabal build) build 'witnesses' only with -ftype-witnesses
> Bertram Felgenhauer <int-e at gmx.de>**20090122224907
>  Ignore-this: 6d627163a3d4258baf22f34e304bd767
> ] 
> [(cabal build) add two missing modules to darcs library
> Bertram Felgenhauer <int-e at gmx.de>**20090122224608
>  Ignore-this: 6164fef661fa5f31cae007e523012e68
> ] 
> [Tell the configure script to require haskeline>=0.6.0.
> Judah Jacobson <judah.jacobson at gmail.com>**20090122214543
>  Ignore-this: 13e0549a6a2c75eb22f3b75a915908e7
> ] 
> [use forM_ from the standard library
> Florent Becker <florent.becker at ens-lyon.org>**20090122125344
>  Ignore-this: 4d9c0e4b98f9f43a0b519584806ddd1a
> ] 
> [Remove LANGUAGE GADTs pragma in Darcs.Show (GHC 6.6 compatibility)
> Eric Kow <kowey at darcs.net>**20090122102846
>  Ignore-this: 488aa7c372f5deee415ae2bae0c578ac
> ] 
> [Remove duplication in fields in the .cabal file
> Duncan Coutts <duncan at haskell.org>**20090122021052
>  Looks like it was a copy and paste error.
> ] 
> [Remove unused ghc -threaded flag in library section
> Duncan Coutts <duncan at haskell.org>**20090122021038
>  The -threaded flag applies only to linking programs.
>  Despte this, ghc regects the combinaton of using the -threaded
>  and profiling flags, even for building a library. New Cabal
>  versions will ignore the -threaded flag when building programs
>  but not for libs because that combination is senseless. So there
>  is a positive benefit to dropping it from the darcs library as
>  it will let people build a profiling darcs with ghc-6.8 without
>  having to modify the .cabal file to drop the -threaded flag.
> ] 
> [Clean up after shell harness.
> Trent W. Buck <trentbuck at gmail.com>**20090122050123
>  We were only cleaning .o and .hi files within src.  Doing "make test"
>  results in some .o and .hi files elsewhere.  We should add these
>  directories to the "find src" calls above, but this hack is easier to
>  understand and should suffice until we finish switching to Cabal.
> ] 
> [Syntax highlighting for new-style NEWS entries.
> Trent W. Buck <trentbuck at gmail.com>**20090122064107] 
> [NEWS for Darcs 2.2.0.
> Trent W. Buck <trentbuck at gmail.com>**20090122064014] 
> [Use conventional name "NEWS" for "new in $version" notes.
> Trent W. Buck <trentbuck at gmail.com>**20090122063959] 
> [Resolve issue1292: re-encode line input from the Haskeline backend.
> Judah Jacobson <judah.jacobson at gmail.com>**20090121172422
>  Ignore-this: e6c94db8cbef0f8fa3f3d0011c6ef88f
>  This patch bumps dependencies to haskeline-0.6.* (which provides the required
>  functionality) and terminfo-0.3.* (which is required by that version of
>  Haskeline).  Haskeline is also enabled by default now that non-ASCII line input
>  works correctly.
> ] 
> [mv -fglasgow-exts to Darcs.Show
> gwern0 at gmail.com**20090120150052
>  Ignore-this: 21000375294de932f303baadba815b8b
> ] 
> [Remove obsolete import.
> Trent W. Buck <trentbuck at gmail.com>**20090118014801
>  Ignore-this: d6bd196c7d088b7e7121637d7c1b1323
> ] 
> [Refactor initial argument dispatcher.
> Trent W. Buck <trentbuck at gmail.com>**20090117081533
>  Ignore-this: fe101e61cc7b46a8c6b4415f08c737b
> ] 
> [Simplify some of my own code.
> Trent W. Buck <trentbuck at gmail.com>**20090117015505
>  Ignore-this: 42a7df5c21ae0416441572380490e127
> ] 
> [Haddocks for HashedIO
> florent.becker at ens-lyon.org**20090116170955
>  Ignore-this: 1c54191a243bd11d6d22d74600251587
> ] 
> [Haddocks for Cache
> florent.becker at ens-lyon.org**20090116170931
>  Ignore-this: 3aa035bd5f805929113a616df9faefb6
> ] 
> [Haddock for Darcs.External.fetchFile
> florent.becker at ens-lyon.org**20090116170742
>  Ignore-this: 96041231ca2800c3fcde4f56ec49e267
> ] 
> [Refactor: use more guards.
> Trent W. Buck <trentbuck at gmail.com>**20090115072617
>  Ignore-this: b41bb970198ed1f42aebdfc63c90e115
> ] 
> [Resolve issue1311:  Use time zones from GNU coreutils; improve doc.
> Dave Love <fx at gnu.org>**20090112135012
>  Ignore-this: 883bc4ccdb1d27fde14ec9c76a4d2a45
> ] 
> [omit empty line at the end of output in darcs diff
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20090114110607
>  Ignore-this: d71a3d5460fbe21244c4eba77dc47885
> ] 
> [Clean up when previous test crashed.
> Trent W. Buck <trentbuck at gmail.com>**20090113001345] 
> [Make "make clean" remove microbench.
> Trent W. Buck <trentbuck at gmail.com>**20090111152130
>  Put the clean target directly below the build target, so it's harder
>  to get them out of sync in future.
> ] 
> [Fix test optimize_relink.sh when no hard linking available
> Thorkil Naur <naur at post11.tele.dk>**20090113223335
>  The semicolon in the echo command causes the test to fail with the
>  message
>  
>  > optimize_relink.sh: line 37: assuming: command not found
>  
>  when no hard linking is available.
> ] 
> [Consistently use sh (not csh) prompts in user manual.
> Trent W. Buck <trentbuck at gmail.com>**20090111114801
>  
>  The sh prompt ($) was already used elsewhere in the manual, and I
>  choose to standardize on it instead of csh (%) because sh (especially
>  bash) seems more widespread and recognizable as the user shell prompt.
> ] 
> [resolve issue1270: don't show the motd when --xml-output is given
> lele at nautilus.homeip.net**20090109090726
>  Ignore-this: e1dae49ceb510668a1358e2103268cc3
> ] 
> [Get setpref description in manual.
> Dave Love <fx at gnu.org>**20090111151941
>  Ignore-this: 89b0d00a82582d03fdf51cd9822dba65
> ] 
> [Example for issue1284.
> Trent W. Buck <trentbuck at gmail.com>**20090111051101] 
> [resolve issue1235: added --summary to obliterate
> Rob Hoelz <rob at hoelzro.net>**20090110032907] 
> [Haddock for Darcs.Repository.Format
> Florent Becker <florent.becker at ens-lyon.org>**20090108160035
>  Ignore-this: f88f0223ebbbe5694845dd1060e6f978
> ] 
> [Remove stale comment (we now require GHC 6.6)
> Eric Kow <kowey at darcs.net>**20081231080929
>  Ignore-this: b19da9fabc8d2e38bccafc84a77fa278
> ] 
> [do not use concatenation in src/Context.hs
> Florent Becker <florent.becker at ens-lyon.org>**20090107135552
>  Ignore-this: 9e86505a445730b7653e75f08e8ff81e
> ] 
> [Print malicious paths and optional way around them when they cause a failure.
> David Caldwell <david at porkrind.org>**20090105101628
>  Ignore-this: cdb706087869e19e046bc0dd424ca38d
> ] 
> [Fix typo in --dont-restrict-paths documentation.
> David Caldwell <david at porkrind.org>**20090105024208
>  Ignore-this: 16197eeef34dedddeda036b47747f234
> ] 
> [Add --restrict-paths (and --dont-restrict-paths) to "darcs apply".
> David Caldwell <david at porkrind.org>**20090102101737
>  Ignore-this: f6ab937573bf0d5397361ddefed902c9
> ] 
> [Add --restrict-paths (and --dont-restrict-paths) to "darcs pull".
> David Caldwell <david at porkrind.org>**20090102101726
>  Ignore-this: dd3bc04632d341be16709e0aee6753ec
> ] 
> [Revert --restrict-paths removal.
> David Caldwell <david at porkrind.org>**20090102101705
>  Ignore-this: 1fba1f9a589aaabb1fa27a268f7c972e
> ] 
> [Resolve issue1302: set closed bugs to resolved (not resolved-in-unstable).
> Trent W. Buck <trentbuck at gmail.com>**20090105001351] 
> [make stringify cut the string
> florent.becker at ens-lyon.org**20090104102125
>  Ignore-this: e1a0cd83fce5085f60b812d894ca26e7
>  This avoids choking utilities such as grep (or emacs' internal grep) which parse haskell files line-by-line.
> ] 
> [make unit's return value depend on all tests
> Florent Becker <florent.becker at ens-lyon.org>**20090102184930
>  Ignore-this: fce3636c70bcb4a80413823c88e3ac6a
> ] 
> [Resolve issue1285: remove "cabal test" intermediaries.
> Trent W. Buck <trentbuck at gmail.com>**20090103095347] 
> [Resolve issue1206: Countable Nouns.
> Trent W. Buck <trentbuck at gmail.com>**20090101062452
>  Use the conventional term "Countable" instead of "Numbered".
> ] 
> [Improve readability of bug reporting.
> Trent W. Buck <trentbuck at gmail.com>**20081226120833
>  Moving "at <location>" to the first line gives the descriptive string
>  a line all to itself.  For example, darcs show bug:
>  
>      darcs: bug at src/Darcs/Commands/ShowBug.lhs:57 compiled Nov  4 2008 12:05:43
>      This is actually a fake bug in darcs.
> ] 
> [Use imperative mood for primitive matcher help.
> Trent W. Buck <trentbuck at gmail.com>**20081228114434] 
> [Check GADT witnesses when doing Cabal-based builds.
> Petr Rockai <me at mornfall.net>**20081228111229] 
> [Fix haddock error
> Eric Kow <kowey at darcs.net>**20081227204218
>  Ignore-this: 60f05d20e5f37312f6b477067114fac7
> ] 
> [Haddock for primitiveMatchers (untested).
> Trent W. Buck <trentbuck at gmail.com>**20081227141921] 
> [Rewrite primitive matcher examples.
> Trent W. Buck <trentbuck at gmail.com>**20081227141845] 
> [Rewrite "darcs help --match" output.
> Trent W. Buck <trentbuck at gmail.com>**20081227141819
>  Add an introductory paragraph, and put all the examples into a single
>  code block, since one-line paragraphs are kind hard to read.
> ] 
> [Delete superfluous "Introduction" headings.
> Trent W. Buck <trentbuck at gmail.com>**20081227034129
>  I don't think it's useful to grant a subsection heading to the single
>  introductory paragraph of a section.
> ] 
> [Refactor error text for readability.
> Trent W. Buck <trentbuck at gmail.com>**20081109144007] 
> [Tweak user manual's title page.
> Trent W. Buck <trentbuck at gmail.com>**20081227011031
>  It annoyed me that the user manual was just called "Darcs", not "Darcs
>  User Manual".
> ] 
> [Improve readability of bug reporting.
> Trent W. Buck <trentbuck at gmail.com>**20081226104243
>  Moving "at <location>" to the first line gives the descriptive string
>  a line all to itself.  For example, darcs show bug:
>  
>      darcs: bug at src/Darcs/Commands/ShowBug.lhs:57 compiled Nov  4 2008 12:05:43
>      This is actually a fake bug in darcs.
> ] 
> [Haddockize developer comment.
> Trent W. Buck <trentbuck at gmail.com>**20081214041902] 
> [Darcs.ColorPrinter: factor out getPolicy call
> gwern0 at gmail.com**20081222180227
>  Ignore-this: aee5b5415ee8bbfe1dac06e240b90080
>  Less redundancy. 'getPolicy' is being called with the same args, and it's
>  not like the environmental variables are going to change in between each
>  call.
> ] 
> [Make it possible to run just specific tests from cabal commandline.
> Petr Rockai <me at mornfall.net>**20081223083742
>  
>  All of `cabal test repair-corrupt bugs/newlines bugs/issue27.sh` should work as
>  expected. The implementation is not very efficient, but seems to work fine.
> ] 
> [Neatify "cabal test" option munging in Setup.lhs.
> Petr Rockai <me at mornfall.net>**20081223080811] 
> [Sort the list of tests that are run by cabal.
> Petr Rockai <me at mornfall.net>**20081223073642] 
> [Remove now-unused replacePristine.
> Petr Rockai <me at mornfall.net>**20081210065138] 
> [resolve issue948: rewrite darcsman.
> Trent W. Buck <trentbuck at gmail.com>**20081221081934
>  
>  Significant changes are:
>  
>   - Avoid duplicating groups from TheCommands.
>   - Due to growing command_helps, list commands in SYNOPSIS.
>   - Use subsections (.SS) for groups.
>   - Include (with fancy markup!) command arguments.
>   - Include darcs help --match.
>   - Copy-and-paste description from darcs.cabal.
>   - Remove AUTHORS section as suggested by man-pages(7).
>   - Declare my copyright.
>  
> ] 
> [Tweak punctuation in "darcs help --match".
> Trent W. Buck <trentbuck at gmail.com>**20081221080949
>  
>  Manpages treat apostrophes in the first line specially.  Use `TeX
>  style' quotes instead, so this string can be included in the manpage.
>  
>  Also omit mention of &&, || and ! until I find time to clarify that
>  they are aliases for the human-readable and, or and not.
> ] 
> [TAG 2.2.0
> Petr Rockai <me at mornfall.net>**20090115150916] 
> [Bump version to 2.2.0 in configure.ac.
> Petr Rockai <me at mornfall.net>**20090115150910] 
> [Bump version in darcs.cabal to 2.2.0.
> Petr Rockai <me at mornfall.net>**20090115150836] 
> [In README, mention that cabal builds need curl (or -f-curl).
> Petr Rockai <me at mornfall.net>**20090115150810] 
> [TAG 2.2.0rc1
> Petr Rockai <me at mornfall.net>**20090110091538] 
> [Bump version in configure.ac to 2.2.0rc1.
> Petr Rockai <me at mornfall.net>**20090110091519] 
> [Bump version in darcs.cabal to 2.1.99.0.
> Petr Rockai <me at mornfall.net>**20090110090407] 
> [Resolve issue1307: allow QuickCheck-less build.
> Trent W. Buck <trentbuck at gmail.com>**20090110020008
>  
>  Due to the eager way dependency information is built, QuickCheck 2.1
>  was needed to during build even though the darcs binary doesn't use
>  it.  Because QuickCheck 2.1 is not available to Debian and Ubuntu
>  (without resorting to cabal), this would have meant that Darcs 2.2
>  could not be packaged for those platforms.
>  
>  Because of .depend, the --disable-unit option added by Eric was just
>  meaning that the error happened during "make" instead of "configure".
>  This patch removes --disable-unit and makes QuickCheck always tested
>  for, but *not* finding QuickCheck is no longer an error.
> ] 
> [Fix spurious file not in repository warning
> Eric Kow <kowey at darcs.net>**20090107162646
>  Ignore-this: ef39bc74b5525258c8f857266035460f
> ] 
> [Resolve issue1279: fix spurious does-not-exist warning on directories
> Eric Kow <kowey at darcs.net>**20090107162042
>  Ignore-this: f3244448e14c7b062efeb4279ccab85b
> ] 
> [Fix a missed "show" in generateContextModule in Setup.lhs.
> Petr Rockai <me at mornfall.net>**20090105075055] 
> [TAG 2.2.0pre2
> Petr Rockai <me at mornfall.net>**20090104115909] 
> [Bump darcs version to 2.2.0pre2, in configure.ac.
> Petr Rockai <me at mornfall.net>**20090104115743] 
> [Distribute README in Cabal-based tarballs.
> Petr Rockai <me at mornfall.net>**20090104111358] 
> [Cabal does not allow listing of autogen'd modules in exposed-modules.
> Petr Rockai <me at mornfall.net>**20090104111344] 
> [Fix a bug in release/distributed-context generation in Setup.lhs.
> Petr Rockai <me at mornfall.net>**20090104111242] 
> [Fix an off-by-one error in patch counting code in Setup.lhs.
> Petr Rockai <me at mornfall.net>**20090104111202] 
> [Bump version to 2.1.98.2, in darcs.cabal.
> Petr Rockai <me at mornfall.net>**20090104085835] 
> [Tweak cabal build instructions.
> Trent W. Buck <trentbuck at gmail.com>**20090104101303] 
> [Resolve conflicts in GNUmakefile.
> Petr Rockai <me at mornfall.net>**20090104085641] 
> [Resolve conflicts in darcs.cabal.
> Petr Rockai <me at mornfall.net>**20090104085621] 
> [TAG 2.2.0pre1
> Petr Rockai <me at mornfall.net>**20081219015734] 
> [Bump cabal version to 2.1.98.1.
> Petr Rockai <me at mornfall.net>**20081219013855] 
> [Include autoconf.mk in GNUmakefile for make dist.
> Petr Rockai <me at mornfall.net>**20081219013036] 
> [Add Cabal-based build instructions to README.
> Petr Rockai <me at mornfall.net>**20090104092142] 
> [Workaround issue1292: disable Haskeline by default, for now.
> Judah Jacobson <judah.jacobson at gmail.com>**20081230062721
>  Ignore-this: 36e64538118d4788a6f6d50a6bbdb930
>  The Haskeline backend doesn't return non-ASCII input in a way that Darcs can process.  The next
>  release of Haskeline should make it easier to resolve this issue.
> ] 
> [Fix a memory leak in Darcs.Repository.Repair.
> Petr Rockai <me at mornfall.net>**20081223122227
>    
>  The way we repaired patches forced the whole repository into memory. We now
>  only store patches that we have actually changed and "zip" them back into the
>  repository using replaceInFL.
> ] 
> [resolve issue1273: Work around a race in download code.
> Petr Rockai <me at mornfall.net>**20081225211634
>  
>  When we had multiple darcsen downloading the same repo, with cache enabled,
>  they would stomp on each other's temporary files and die horribly.
> ] 
> [Fix GNU-isms (cp -a, sed -i) in tests/repair-corrupt.sh.
> Petr Rockai <me at mornfall.net>**20081224083145] 
> [Add a rudimentary test for repair of a corrupt repository.
> Petr Rockai <me at mornfall.net>**20081223084036] 
> [Add missing tests-related files to darcs.cabal.
> Petr Rockai <me at mornfall.net>**20081219012851] 
> [Bump version to 2.2.0pre1.
> Petr Rockai <me at mornfall.net>**20081219010555] 
> [To "make dist" we need .depend.
> Trent W. Buck <trentbuck at gmail.com>**20081219014641
>  
>  I have also excluded slowdisttest, because it depends on darcs (via
>  test_unit) and thus needs to compile things.
>  
>  Finally, splitting the "include" line in two again hopefully fixes a
>  confusing transient error because to build .depend, autoconf.mk must
>  already be built and sourced!
>  
>  This is essentially a partial rollback of the following patches:
>  
>  Sat Oct 25 12:22:08 EST 2008  Trent W. Buck <trentbuck at gmail.com>
>    * Refactor targets that prevent "include autoconf.mk" (and .depend).
>    As well as being clearer, this is now a good deal more liberal. For
>    example, it won't rebuild .depend during "make maintainer-clean".
>  
>  Sun Nov  2 15:53:59 EST 2008  Trent W. Buck <trentbuck at gmail.com>
>    * Merge autoconf.mk and .depend inclusion.
>  
>    In a declarative expert system like Make, it shouldn't matter where
>    .depend is included.  Actual experiments suggest that it does, and
>    putting it at the top will help avoid illogical behaviour.
> ] 
> [Bump darcs version to 2.2 in cabal file.
> Salvatore Insalaco <kirby81 at gmail.com>**20081217104953
>  Ignore-this: 14e33b627ddde6759addb286f6fe2fa
> ] 
> [Remove pkgconfig check for curl on Windows.
> Salvatore Insalaco <kirby81 at gmail.com>**20081217104754
>  Ignore-this: 663d4019bb8da4277a2b3a96450e3cc4
> ] 
> [Disable haskeline on Windows by default.
> Salvatore Insalaco <kirby81 at gmail.com>**20081217104336
>  Ignore-this: 9c1f7748012a3f836b741632de9c80df
> ] 
> [Add missing modules (Autoconf, ThisVersion) to the cabal file
> Ian Lynagh <igloo at earth.li>**20081216011742] 
> [fix list command to select accepted patches only
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081215201740
>  Ignore-this: 3578f67dfa0a05ac350b4398592233ba
> ] 
> [Have "make tags" generate TAGS, too.
> Trent W. Buck <trentbuck at gmail.com>**20081213085308] 
> [Move format documentation hunks from Init.lhs to formats.tex.
> Trent W. Buck <trentbuck at gmail.com>**20081214032133
>  
>  This discussion already takes place in formats.tex; having parts of it
>  in Init.lhs is confusing both for readers and for contributors trying
>  to keep the documentation up-to-date.
>  
>  This patch doesn't attempt to refactor or properly integrate the
>  hunks; it just moves them verbatim.
> ] 
> [The cache is enabled by default.
> Trent W. Buck <trentbuck at gmail.com>**20081214024439] 
> [Minor cleanups in Get, Convert, Flags
> Florent Becker <florent.becker at ens-lyon.org>**20081212155718
>  Ignore-this: d6e2418e6225d8f40bb22edc94c68fed
> ] 
> [Remove --no-pristine test which is no longer relevant
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081212104743
>  Ignore-this: 6fd58a45ff45c53d723d79057502881f
> ] 
> [Remove unused import
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081212104644
>  Ignore-this: 58ba17e56f47fed8e535b5b3a7f43000
> ] 
> [Do not use replacePristine in copyFullRepository.
> Petr Rockai <me at mornfall.net>**20081210065120] 
> [fix regression in default behavior or check.
> David Roundy <droundy at darcs.net>**20081208131416
>  Ignore-this: 28a7edd9f5b3afddcf246fd1657775f9
>  At the same time, clean up default handling of test just a tad.
> ] 
> [fix bug in check.
> David Roundy <droundy at darcs.net>**20081207141115
>  Ignore-this: a177fb977e77c79cd5d0d0ba4ca987d2
> ] 
> [Tell user it's safe to abort after external merge
> Florent Becker <florent.becker at ens-lyon.org>**20081212100311
>  Ignore-this: 9dcc44849ccf3acb79a4a5dcc35cd6ba
> ] 
> [avoid ln -f flag to fix api doc building
> Simon Michael <simon at joyful.com>**20081209204655
>  Ignore-this: b09aa246e752cfa0a701090b9b94252
> ] 
> [Remove the choice between --pristine-tree and --no-pristine-tree.
> Eric Kow <kowey at darcs.net>**20081209110027
>  Ignore-this: b3e36e81099e912663d3a1b6268f8848
>  This just removes the switches and their documentation, not the code that
>  actually creates such repositories or recognises --no-pristine-tree
>  repositories.
> ] 
> [fix bug in checkpoint generation.
> David Roundy <droundy at darcs.net>**20081210154208
>  Ignore-this: 1eee1b2d44e459096ac59eb0dd837afc
> ] 
> [Remove obsolete (unused) checkPristineAgainstCwd and checkPristine.
> Petr Rockai <me at mornfall.net>**20081210062937] 
> [Fix build flags of darcs executable in cabal.
> Salvatore Insalaco <kirby81 at gmail.com>**20081209184405
>  Ignore-this: fa6c521300d6a60237418e22733ad6fa
> ] 
> [Remove all references to makeRelative
> Salvatore Insalaco <kirby81 at gmail.com>**20081209183850
>  Ignore-this: 846533678645a299a976ec48d2719cdf
> ] 
> [Fix whitespace in Darcs.ProgressPatches
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081209164902
>  Ignore-this: 6e9aa4ae6f857ea904a48744aeb80bf2
> ] 
> [add a list all selected things command to text_select
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081209155352
>  Ignore-this: e3ec0367f2a52aaa0f7bd4e273c12e81
> ] 
> [resolve issue1249: remove makeRelative usage in defaultrepo
> Salvatore Insalaco <kirby81 at gmail.com>**20081209121553
>  Ignore-this: 2670c16531c03c93b7d82111c28d51e4
>  
>  makeRelative causes issues with Windows absolute paths
>  e.g. c:\something. It is used only in defaultrepo, and
>  it appears to be a leftover from previous path management.
>  This patch removes it, making defaultrepo management more
>  like "regular" command line repo management.
>  Note that the makeRelative code is not removed in this
>  patch, just the usage.
> ] 
> [resolve issue1165: tag feedback for progress in get
> florent.becker at ens-lyon.org**20081209115229
>  Ignore-this: 91d3217e38e6b8e5d581ef27059c1cc9
>  Make darcs get print the following as its progression indicator:
>  42/1664 back to: TAG ada strawberry
>  Where "ada strawberry" is the most recent tag that was effectively fetched.
>  This makes it easier to know when to hit Ctrl-C
> ] 
> [Some cleaning in progress.hs, move it to src/, split darcsish bits
> florent.becker at ens-lyon.org**20081209112803
>  Ignore-this: 96ed60798c193b67821399476786f859
>  Split src/Darcs/Progress.hs into:
>   - src/Progress.hs for the general functionalities, might be worth releasing
>   outside darcs proper
>   - src/Darcs/ProgressPatches.hs for the darcsish stuff, progressFL 
>   and progressRL
> ] 
> [Simplify build dependencies: put is_tag in Patch.Info
> florent.becker at ens-lyon.org**20081208102357
>  Ignore-this: b6d44e86a4f12e9dc5f8f32bbc50df23
> ] 
> [cut unused run_test
> David Roundy <droundy at darcs.net>**20081207141201
>  Ignore-this: cdc8a2b58695be5ac318b3e5634339cd
> ] 
> [resolve issue1247: avoid reference to removed $CTAGS variable.
> Trent W. Buck <trentbuck at gmail.com>**20081207022013
>  This was just a simple typo on my part.
> ] 
> [Further simplify "darcs put" help.
> Trent W. Buck <trentbuck at gmail.com>**20081207040323] 
> [Refactor "darcs put" help.
> Trent W. Buck <trentbuck at gmail.com>**20081206112917] 
> [Expose modules as a library in darcs.cabal
> Eric Kow <kowey at darcs.net>**20081125102729
>  Ignore-this: 4bfd8b48d4bf0519e7cb803ae62266b3
> ] 
> [Added support for using the utf8-string library if it's available
> Rob Hoelz <rob at hoelzro.net>**20080809171510] 
> [Refactor "darcs dist" help.
> Trent W. Buck <trentbuck at gmail.com>**20081130011414] 
> [tests/*: rm IFS hack from selected subset
> gwern0 at gmail.com**20081130234814
>  Ignore-this: 46af9351b82f9d8d8b497e9c1cce6b21
> ] 
> [Fix haddock error
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081130111241
>  Ignore-this: ab270cce2bc0aaa5c2d1f284705a027d
> ] 
> [Refactor "darcs tag" help.
> Trent W. Buck <trentbuck at gmail.com>**20081129224224] 
> [Refactor "darcs check" help.
> Trent W. Buck <trentbuck at gmail.com>**20081129120817] 
> [Refactor "darcs unrevert" help.
> Trent W. Buck <trentbuck at gmail.com>**20081129115913] 
> [Enable haskeline by default in the Cabal file.
> Judah Jacobson <judah.jacobson at gmail.com>**20081129165047
>  Ignore-this: feeab33d5e512487a13b1a09300f5a60
> ] 
> [Don't use the terminfo package on Windows (Cabal).
> Judah Jacobson <judah.jacobson at gmail.com>**20081128194821
>  This lets us use terminfo by default while not breaking the Windows build.
> ] 
> [Rollback disabling of terminfo by default.
> Judah Jacobson <judah.jacobson at gmail.com>**20081128173611] 
> [Refactor "darcs mark-conflicts" help.
> Trent W. Buck <trentbuck at gmail.com>**20081129015407] 
> [Refactor "darcs whatsnew" help.
> Trent W. Buck <trentbuck at gmail.com>**20081129045756] 
> [resolve issue1238: refactor "darcs setpref" help.
> Trent W. Buck <trentbuck at gmail.com>**20081128125305] 
> [Disable terminfo by default (Cabal)
> Eric Kow <kowey at darcs.net>**20081128120951
>  Ignore-this: 18de9bcaf3b380cf8c1d1b6565321297
>  Salvatore points out that the terminfo package does not install on Windows
> ] 
> [Refactor take/repeat as replicate.
> Trent W. Buck <trentbuck at gmail.com>**20081128114653] 
> [Refactor "darcs transfer-mode" help.
> Trent W. Buck <trentbuck at gmail.com>**20081127123101] 
> [Bump cabal version to 2.1.2.3
> Eric Kow <kowey at darcs.net>**20081126195252
>  Ignore-this: 78bcf676f83a67ff547ad9aa529166c3
> ] 
> [Disable external-zlib by default (darcs.cabal)
> Eric Kow <kowey at darcs.net>**20081126195237
>  Ignore-this: bfac85e5425df8d8386abd586934d17d
> ] 
> [Remove unit testing modules form darcs.cabal
> Eric Kow <kowey at darcs.net>**20081125101839
>  Ignore-this: 66a158494870dd8d548d66fc6a7658eb
> ] 
> [Refactor "darcs add" help.
> Trent W. Buck <trentbuck at gmail.com>**20081124134407] 
> [Refactor "darcs amend-record" help.
> Trent W. Buck <trentbuck at gmail.com>**20081124134349] 
> [Refactor "darcs repair" help.
> Trent W. Buck <trentbuck at gmail.com>**20081124134152] 
> [Refactor "darcs help" help.
> Trent W. Buck <trentbuck at gmail.com>**20081124133935] 
> [resolve issue1199: Backup files darcs added after external merge
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081125092916
>  Ignore-this: bc5c1365bdf4ca70073a85712f00e21c
> ] 
> [Remove empty literate blocks from src/*.lhs.
> Trent W. Buck <trentbuck at gmail.com>**20081124113021
>  I used perl -pi -0 -e 's/\n*\\end{code}\n*\\begin{code}\n*/\n\n/g'.
> ] 
> [Remove empty literate blocks from src/Darcs/*.lhs.
> Trent W. Buck <trentbuck at gmail.com>**20081124112956
>  I used perl -pi -0 -e 's/\n*\\end{code}\n*\\begin{code}\n*/\n\n/g'.
> ] 
> [Remove empty literate blocks from src/Darcs/Repository/*.lhs.
> Trent W. Buck <trentbuck at gmail.com>**20081124112938
>  I used perl -pi -0 -e 's/\n*\\end{code}\n*\\begin{code}\n*/\n\n/g'.
> ] 
> [Remove empty literate blocks from src/Darcs/Patch/*.lhs.
> Trent W. Buck <trentbuck at gmail.com>**20081124112916
>  I used perl -pi -0 -e 's/\n*\\end{code}\n*\\begin{code}\n*/\n\n/g'.
> ] 
> [Remove empty literate blocks from src/Darcs/Commands/*.lhs.
> Trent W. Buck <trentbuck at gmail.com>**20081124112636
>  I used perl -pi -0 -e 's/\n*\\end{code}\n*\\begin{code}\n*/\n\n/g'.
> ] 
> [Fix haddock for unsafeDiffAtPaths.
> Reinier Lamers <tux_rocker at reinier.de>**20081115211420
>  Ignore-this: f857de0b4f2d3fa2c7daa18b7a52a224
> ] 
> [Add very rudimentary haddocks in Darcs.Patch.{Non,Real}.hs
> Jason Dagit <dagit at codersbase.com>**20081123204958] 
> [Appease ghc-6.10 type witnesses in SelectChanges.
> Jason Dagit <dagit at codersbase.com>**20081123085733
>  Ignore-this: b4db36fc77072c2dbefc27496cbc33e
> ] 
> [Appease ghc-6.10 on witness types in Repository.Internal.
> Jason Dagit <dagit at codersbase.com>**20081123085140
>  Ignore-this: 73899c04b7af77af77a33798abd7ec41
>  Introduce a local function, doChanges, so we can give more rigid types.
> ] 
> [Appease ghc-6.10 on witness types.
> Jason Dagit <dagit at codersbase.com>**20081123083650
>  Ignore-this: 916417e4ae63cf9e966a1c703716690f
>  Introduces f and g_s as local functions to appease the ghc-6.10 type
>  checker.
> ] 
> [Point to new shorter URL for binaries wiki page.
> Eric Kow <kowey at darcs.net>**20081122083014] 
> [Rollback IFS removal
> Eric Kow <kowey at darcs.net>**20081121230952
>  Removing this seems to break for the case where there is a space in the
>  path
>  
>  rolling back:
>  
>  Fri Nov 21 21:29:21 GMT 2008  gwern0 at gmail.com
>    * tests/*.sh: rm vitiated IFS variable
>    Originally there to help portable_pwd on Cygwin. We no longer need it.
> ] 
> [Appease ghc-6.10 witnesses in Real.hs.
> Jason Dagit <dagit at codersbase.com>**20081121174926
>  Ignore-this: 5b9d1a02a88ced416d650bffa2a76645
>  Introduce a local function to get rid of another non-rigid type in a
>  pattern match.
> ] 
> [Appease ghc-6.10 witnesses in Prim.lhs.
> Jason Dagit <dagit at codersbase.com>**20081121173215
>  Ignore-this: 9289f3ece580ccdff1ba583aa1140562
>  I introduce sc in the where-clause so that the case-expression can
>  have a rigid type at the point of pattern match.  This patch would
>  have a few less redundant bits, except that the existentials wouldn't
>  quite unify otherwise.  This is why I introduced p1'.
> ] 
> [tests/*.sh: rm vitiated IFS variable
> gwern0 at gmail.com**20081121212921
>  Ignore-this: f795b7ad4f9a52a9b59cdcca24fa7de9
>  Originally there to help portable_pwd on Cygwin. We no longer need it.
> ] 
> [documentation/website: Fix bigpage compilation.
> Eric Kow <kowey at darcs.net>**20081121092030
>  Bigpage should be compiled from doc/manual/darcs.tex, not src/darcs.tex
>  The first is a giant tex file manufactured by preproc; the second is
>  what used to be the literate source in darcs.lhs.
> ] 
> [Use let to avoid duplication in Darcs.Patch.Real.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20081120223434
>  Ignore-this: 76b6f7c7c88c0a95436878b1cdc77caa
> ] 
> [Make darcs.pdf just a copy of darcs_print.pdf and likewise for darcs.ps
> Eric Kow <kowey at darcs.net>**20081119175845
>  Ignore-this: 79407b453c89224d6bb895fff40ba596
>  This fixes a likely regression in which darcs.pdf was compiled from
>  darcs.tex and not darcs_print.tex.  It seems like darcs.tex exists for
>  tools like latex2html.  Perhaps a better solution would be for that file
>  to be called darcs_html.tex.
> ] 
> [Remove seemingly unused ps/pdf targets
> Eric Kow <kowey at darcs.net>**20081119174858
>  Ignore-this: b6765af06196140b3a7934841306da1d
>  These targets, for example, copy src/foo.pdf to doc/manual/foo.pdf
>  But it seems like the makefile is instead designed to compile these
>  from doc/manual/foo.tex directly.
> ] 
> [Remove OPTIONS_GHC that GHC-6.10.1 warns as "deprecated"
> Thorkil Naur <naur at post11.tele.dk>**20081120170402
>  Remove all occurrences of -fallow-undecidable-instances, 
>  -fbang-patterns, and -fffi in {-# OPTIONS_GHC ... #-} lines. GHC-6.10.1 
>  warns that these options are deprecated. In addition, remove nearby -cpp
>  options. The removed OPTIONS_GHC options are all covered by 
>  corrresponding LANGUAGE options.
> ] 
> [add newlines to the default entries so we don't break the file
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081120091932
>  Ignore-this: 47cfad0c016be68d8f21fdd5cc68210f
> ] 
> [bump package version number for hackage
> Jason Dagit <dagit at codersbase.com>**20081120091843] 
> [correctly add Distribution/ShellHarness.hs to darcs.cabal
> Jason Dagit <dagit at codersbase.com>**20081120091826] 
> [sdist errors on trying to move tests/shell_harness
> Jason Dagit <dagit at codersbase.com>**20081120090417
>  This may not be an idea solution, but for now I just remove
>  tests/shell_harness from the cabal file.  Perhaps it should be
>  replaced with mention to the new shell_harness.hs.
> ] 
> [bump version number in darcs.cabal
> Jason Dagit <dagit at codersbase.com>**20081120090401] 
> [issue1043b now also resolved by David
> Eric Kow <kowey at darcs.net>**20081120000307] 
> [resolve issue1043: avoid use of sort_coalesceFL in Patch.Real.
> David Roundy <droundy at darcs.net>**20081119150234
>  Ignore-this: 79003144c8571ef746108e09192cb4ed
>  The trouble was that sort_coalesceFL does the "coalescing" which isn't
>  governed by strict rules.  This might have been fixed by changing
>  sort_coalesceFL to also run canonize, but the cleaner solution is to
>  simply acknowledge that what I really wanted was just to join together
>  pairs of inverses, which is much easier than the problem
>  sort_coalesceFL is trying to solve.
> ] 
> [code clarification
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081025204519] 
> [resolve issue1117: warn if file does not exist in whatsnew
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081119155734
>  Ignore-this: 96cb2370609e7acd9d0137725f5e56b5
> ] 
> [shell_harness.hs hSetBuffering stdout NoBuffering
> Thorkil Naur <naur at post11.tele.dk>**20081118220043
>  Not a big deal, but this makes the output from shell_harness.hs a
>  bit more entertaining.
> ] 
> [Harden release/STATE munger.
> Trent W. Buck <trentbuck at gmail.com>**20081118012512
>  
>  This fixes the short name DARCS_VERSION_WITH_PATCHES when
>  release/STATE looks like "2.1.1rc2 (release candidate 2)" rather than
>  "2.1.1rc2 (+ 533 patches)".
> ] 
> [resolve issue1101: also display cc'ed recipients
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081115133214
>  Ignore-this: 9955a84598aa60e14f5471c02ec0d9b8
> ] 
> [Move make_repo_name after identifyRepoFormat in get.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20081118114246
>  Ignore-this: a1d4f7f0b3321652acd3ea1288d6bff5
>  Fixes darcs printing "Directory already exists, creating repository as"
>  in case of bad repo or network failure, when no directory is created in
>  fact.
> ] 
> [Trivially extend unit test to work with Pavel's extended make_email.
> Eric Kow <kowey at darcs.net>**20081118122415
>  Note that this only passes in an empty list of extra headers.  It may
>  also be useful in the future to automatically generate extra headers
>  for our write-read test.
> ] 
> [tests/README: add a section warning about use of 'yes' and 'find'
> gwern0 at gmail.com**20081117205213
>  Ignore-this: 618f92168403e6261fd68218fec82656
> ] 
> [tests/*: per kowey, replace all portable_pwd with hspwd
> gwern0 at gmail.com**20081117193340
>  Ignore-this: bca937aa253b5a13feae0ea8a3edf152
> ] 
> [tests/lib: scrap portable_pwd definition for alias to hspwd
> gwern0 at gmail.com**20081117192517
>  Ignore-this: ff9d290cf3d430c4de2d7e426dff79d3
> ] 
> [Replace workaround with fix (Windows' sort doesn't have -o).
> Trent W. Buck <trentbuck at gmail.com>**20081118014158
>  
>  rolling back:
>  
>  Mon Nov 17 07:44:22 EST 2008  Eric Kow <E.Y.Kow at brighton.ac.uk>
>    * Work around difference between Windows and Cygwin sort program in test
>  
>      M ./tests/query_manifest.sh +2
> ] 
> [Refactor Cabal package description.
> Trent W. Buck <trentbuck at gmail.com>**20081118071254
>  Based on the homepage description.
> ] 
> [Consistently punctuate cabal flag descriptions.
> Trent W. Buck <trentbuck at gmail.com>**20081118105924] 
> [Test for darcs send with --in-reply-to option
> Pavel Shramov <shramov at mexmat.net>**20081117185534] 
> [Add --in-reply-to flag for send command
> Pavel Shramov <shramov at mexmat.net>**20081117102056
>  
>  Patch adds --in-reply-to flag to darcs send and
>  modifies make_email function in Darcs/Email.hs to
>  accept list of additional headers.
>  
>  With --in-reply-to option two additional headers will be
>  added to email - In-Reply-To and References.
> ] 
> [in make file, quote the "$(DARCS_VERSION_WITH_PATCHES)" variable
> zooko at zooko.com**20081117141727
>  Ignore-this: 7f350c4b8b8e815e867dc88b38695b58
>  Because the release candidate version has spaces in its version string.
> ] 
> [Darcs works with regex-compat 0.92.
> Trent W. Buck <trentbuck at gmail.com>**20081117111239] 
> [don't run posthook if the command terminated with exitWith.
> David Roundy <droundy at darcs.net>**20081116230521
>  Ignore-this: d87d2bb442060d54284eef6bc27cc766
>  This is a change in policy, and means that for instance darcs pull -a will
>  only run the posthook if there are patches to pull.  It does mean that we
>  have to be careful how we exit commands, since this adds new meaning to
>  "exitWith ExitSuccess", but my audit of the code shows that this is only
>  used when I wouldn't want to run the posthook anyhow.
>  
>  Actually, I found two gratuitous uses of exitWith ExitSuccess, and have
>  removed them.
> ] 
> [tests/README.test_maintainers.txt: add a section on the use of lib
> gwern0 at gmail.com**20081117155840
>  Ignore-this: 8bdf4592849569c34c209eb40104c72f
> ] 
> [tests/*.sh: remove "set -ev" from all callers of lib
> gwern0 at gmail.com**20081117152754
>  Ignore-this: 8f00e36a574db7cd7ccd64c6610944e4
> ] 
> [tests/lib: rm shebang header
> gwern0 at gmail.com**20081117152152
>  Ignore-this: d6e4907818407ba473bf8ee972aff7fb
> ] 
> [mv lib.sh -> lib & update callers
> gwern0 at gmail.com**20081117152050
>  Ignore-this: 449b1a8deb686421d74afce2e3518fbb
> ] 
> [Add --disable-unit to configure script
> Eric Kow <kowey at darcs.net>**20081117115625
>  Note that with this patch alone, this has no effect other than to disable
>  the test for QuickCheck
> ] 
> [tests/*.sh: factor out windows abortion
> gwern0 at gmail.com**20081115210959
>  Ignore-this: 4b0d0fb42b53e43d8f3b8ca082566864
> ] 
> [tests/*.sh: factour out ~61 of the 'not' definitions to lib.sh
> gwern0 at gmail.com**20081115205735
>  Ignore-this: 889d88e1a4eb0c17447502fde02fdd0f
> ] 
> [tests/*.sh: factor out definitions of portable_pwd to lib.sh
> gwern0 at gmail.com**20081115201847
>  Ignore-this: dda84abdcd2e833273e5a0f9668deeb
> ] 
> [+tests/lib.sh: library for test scripts
> gwern0 at gmail.com**20081115201608
>  Ignore-this: 639f1e602f31949f93daab6053793127
>  This adds a file to the tests directory for storing function definitions. This will cut down on silliness like 'not' being defined  in 63 different scripts - the exact same way.
> ] 
> [Remove mention of unstable branch from the homepage
> Eric Kow <kowey at darcs.net>**20081117131411] 
> [Work around difference between Windows and Cygwin sort program in test
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081116204422] 
> [Add DARCS_TESTING_HOME to shell harness
> Eric Kow <eric.kow at gmail.com>**20081116180124
>  This enables Petr's workaround for Windows not using $HOME by default
> ] 
> [Conditionally compile out reset_umask on Windows
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081116161631] 
> [import Arguments just once in WhatsNew
> Jason Dagit <dagit at codersbase.com>**20081115210750] 
> [remove --restrct-paths from the manual
> Jason Dagit <dagit at codersbase.com>**20081115205752] 
> [remove unused export restrict_paths in Arguments
> Jason Dagit <dagit at codersbase.com>**20081115205717] 
> [clean up unused exports in Arguments.lhs
> Jason Dagit <dagit at codersbase.com>**20081115205224] 
> [tighten up imports in preproc.hs
> Jason Dagit <dagit at codersbase.com>**20081115193944] 
> [tighten imports in Commands.lhs
> Jason Dagit <dagit at codersbase.com>**20081115193414] 
> [tighten up imports in Tag.lhs
> Jason Dagit <dagit at codersbase.com>**20081115192839] 
> [tighten up imports in Replace.lhs
> Jason Dagit <dagit at codersbase.com>**20081115192052] 
> [tighten up imports in Commands.Dist
> Jason Dagit <dagit at codersbase.com>**20081115191113] 
> [remove unused export for isa from Arguments
> Jason Dagit <dagit at codersbase.com>**20081115185607] 
> [Appease Windows by replacing find(1) with globbing.
> Trent W. Buck <trentbuck at gmail.com>**20081116020213
>  
>  On Windows, there are two utilities named "find".  The cygwin version
>  is Unix-like, but the native Windows version behaves more like grep.
>  If %PATH% makes the latter the default, $(shell find) does completely
>  the wrong thing.
>  
>  Therefore we use $(wildcard) instead.  This is actually better in
>  every respect bar one: it does not recurse.  This means that if
>  someone starts creating Haskell files in subsubsubdirs of src, they
>  won't be included by the current globs.
>  
>  Note that in GNU make, a glob expands to nothing if there are no
>  matches.  By contrast, sh globs expand to themselves in that case.
> ] 
> [issue525 fixed by David's patch
> Eric Kow <kowey at darcs.net>**20081115225739] 
> [Fix Darcs.Patch.Prim haddock
> Eric Kow <kowey at darcs.net>**20081115224010] 
> [resolve issue525: canonize output of sort_coalesceFL in AmendRecord.
> David Roundy <droundy at darcs.net>**20081115211925
>  Ignore-this: cb7485c971d7d8d6f7ffce9f9ec40e98
> ] 
> [Make test-network a .PHONY target
> Eric Kow <kowey at darcs.net>**20081114101217
>  Ignore-this: 58b2f5d4ee869f2105f8a05e42766dc4
> ] 
> [Create the .darcs directory in the test-network dir
> Eric Kow <kowey at darcs.net>**20081114101151
>  Ignore-this: d2d05cf3d18ba75c6a00f9c7500c298d
> ] 
> [Remove obsolete test-franchise .PHONY entry from makefile
> Eric Kow <kowey at darcs.net>**20081114101117
>  Ignore-this: 8d5d36dba70acaa297310ac94f7d8256
> ] 
> [Use Control.OldException if compiling shell harness with GHC 6.10
> Eric Kow <kowey at darcs.net>**20081114093740
>  Ignore-this: 5219c7e1b5a1dc4dbc607a729288e54d
> ] 
> [use ShellHarness in Setup.lhs
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081112183809
>  Ignore-this: 5322065b2d5d5595c01d22ca7ff527f
> ] 
> [Use the shell harness in Makefile
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081112194558
>  Ignore-this: bd01f57e24a840ddd474dca912258ef0
> ] 
> [make ShellHarness a module
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081112193615
>  Ignore-this: 814fb721a9a91bf35c189355c21e6e61
> ] 
> [move shell_harness to Distribution/ShellHarness.hs
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081112183642
>  Ignore-this: 1ae7f4587a9542a595e78e6523c8fbb0
> ] 
> [remove bash shell_harness
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081113194438
>  Ignore-this: 3621d4992e6cf5fbe8a1a8e1340a64a0
> ] 
> [on "make darcs-snapshot" make a copy of the executable in a directory named "snapshots" and named with its version number including patch count
> zooko at zooko.com**20081113175008
>  Ignore-this: 75ddfaf921e1e84ddf86cd1fef8cb77e
> ] 
> [replace `test -e' in makefile with either `test -d' or `test -f'
> Karel Gardas <kgardas at objectsecurity.com>**20081113173715
>  Ignore-this: 1ba6cf3262142b0d09f84570aab9b16a
>  This patch replaces usage of `test -e' in makefile with either usage
>  of `test -d' for testing directory of `test -f' for testing file. The
>  reason is that GNU make is using /bin/sh for running its commands and
>  `test -e' is not supported by Solaris' shell.
> ] 
> [Update darcs.cabal to reflect removal of homegrown filepath modules
> Eric Kow <kowey at darcs.net>**20081112162303
>  Ignore-this: 90192f5d97a18402fe43cb6f951755dd
> ] 
> [Generalise use of --optghc to all GHCFLAGS for haddock
> Eric Kow <kowey at darcs.net>**20081112162233
>  Ignore-this: b6bf56c82079b4e722f2faa53dccb9d2
>  This makes it possible for me to make api-doc with GHC 6.10
> ] 
> [Remove deprecated (and now unused) homegrown filepath modules
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112154607
>  Ignore-this: 61d94b19c737251607d57e91b5b4a8d7
> ] 
> [Replace homegrown code with filepath functions in Darcs.Commands.Dist
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081113171047
>  Ignore-this: 673e6775d0c90b880478e1b0f2ef11e3
> ] 
> [Remove homegrown code with filepath equivalents in Darcs.Commands.Mv
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112154541
>  Ignore-this: 57950f6ca7c396753fe8f13f05c3ecf2
> ] 
> [Replace homegrown code with filepath equivalents in Darcs.Commands.Add
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112153944
>  Ignore-this: ee2e76b00e9683c6ffddb149648ae0af
> ] 
> [Specifically import System.FilePath.Posix in darcs commands
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112153509
>  Ignore-this: 2a024c22ad2122fe5354b2982821273b
>  We want to document the fact that we are only using forward
>  slashes.
> ] 
> [Replace FilePathUtils.(///) with filepath equivalent in Darcs.Diff
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112153114
>  Ignore-this: 59798326958df9e1c89864a35cd8ab5f
> ] 
> [Copy UglyFileName.patch_filename into Darcs.Commands.Send
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112150818
>  Ignore-this: 36db426613ee907dad21996b1ab38c55
>  (which is the only place where it is used)
> ] 
> [Replace UglyFileName with filepath equivalents in Darcs.CommandsAux
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112150646
>  Ignore-this: 79ef4a080cf711300b7953a8901cae98
> ] 
> [Replace our breakup with filepath's splitDirectories in Darcs.Lock
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081112150313
>  Ignore-this: 3b460204007863fe65a71dccac701bed
> ] 
> [make finds more portable
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081113125703
>  Ignore-this: 6f1b6ac29c96d200b93cad86013f5062
>  
>  This patch changes the way find -exec is used before. OpenBSD does
>  not support the -exec rm -f {} + syntax. So we stick to the less
>  performant -exec rm -f {} \;
>  
> ] 
> [Replace liftM with fmap in Darcs.Repository.Prefs
> Eric Kow <kowey at darcs.net>**20081112202148
>  Ignore-this: aa04437e8d10cf9f26c6a760fedbaff6
> ] 
> [Tidy up type signatures in Darcs.Repository.Prefs
> Eric Kow <kowey at darcs.net>**20081112202001
>  Ignore-this: 52b1925994627ce27b982fec4deefbc
> ] 
> [Tidy up global_cache_dir
> Eric Kow <kowey at darcs.net>**20081112201354
>  Ignore-this: f06c8f86c96eda4fe600c6731553b28b
> ] 
> [Resolve conflict between my UserProfile override and DARCS_TESTING_HOME
> Eric Kow <kowey at darcs.net>**20081112200457
>  Ignore-this: bceb8957061cea385cb8b4bbb7eec49e
>  We undo the UserProfile because it had no useful effect
> ] 
> [Enable .darcs location override through DARCS_TESTING_HOME that also works on Windows.
> Petr Rockai <me at mornfall.net>**20081111222806
>  
>  With only overriding $HOME, on win32 we get darcs still looking into the
>  windows-specific user data directory for .darcs, which in turn breaks the
>  testsuite (which relies on overriding HOME). This patch should address that
>  problem, albeit in a little inelegant fashion.
> ] 
> [Override UserProfile environment variable in (Perl) shell_harness
> Eric Kow <kowey at darcs.net>**20081112171634
>  Ignore-this: 36fcf89e63d690a662288f34432c472b
> ] 
> [Replace UglyFileName with filepath equivalents in Darcs.RepoPath
> Eric Kow <eric.kow at gmail.com>**20081028141522
>  Ignore-this: c685595782a0eb01e7b7c37da991e7b9
> ] 
> [Replace FilePathUtils.(///) with filepath equivalent in preproc
> Eric Kow <eric.kow at gmail.com>**20081027173947
>  Ignore-this: 99a21202f798d6423d047afe4b417403
> ] 
> [Specify that we want System.FilePath.Posix in Darcs.External
> Eric Kow <eric.kow at gmail.com>**20081027172514
>  Ignore-this: 8548e7e86f2c5dff1ddf0806e48bda15
>  to prevent the accidental creation of patches with backslashes
>  in their paths.
> ] 
> [Replace UglyFileName normalisation in Darcs.External
> Eric Kow <eric.kow at gmail.com>**20081027170454
>  Ignore-this: 53c57c63eead2574dcf3e211b376fd7f
>  with System.FilePath equivalent
> ] 
> [Replace basename with filepath's takeDirectory in Darcs.External.
> Eric Kow <eric.kow at gmail.com>**20081027165405
>  Ignore-this: 2a3eec675e9f63cc0549317564bfee54
>  Note that basename was a misnomer in the original code.
> ] 
> [Replace (++ "/" ++) with filepath's (</>) in Darcs.External.cloneTree
> Eric Kow <eric.kow at gmail.com>**20081027165044
>  Ignore-this: 2c820b01f52de3544dd05f87e88dbc50
> ] 
> [Replace absolute_dir with ioAbsoluteOrRemote in Darcs.Repository
> Eric Kow <eric.kow at gmail.com>**20081027155955
>  Ignore-this: 8f745c354308ca9406dbb2e54f66b600
>  only very superficially though
> ] 
> [Switch from absolute_dir to ioAbsoluteOrRemote in commands
> Eric Kow <eric.kow at gmail.com>**20081027142933
>  Ignore-this: 79e892ea2f0732367b8d293b550946e9
>  Note that this is only a superficial change, but it brings
>  us one step closer to getting rid of FilePathUtils.
> ] 
> [Add an AbsoluteOrRemotePath type
> Eric Kow <eric.kow at gmail.com>**20081024170048
>  Ignore-this: 8b2ec1303eea170b88f2c8081efd1315
> ] 
> [Trivial style improvement
> Duncan Coutts <duncan at haskell.org>**20081112133456] 
> [Fix compile failure in gzReadFilePS without HAVE_OLD_BYTESTRING
> Duncan Coutts <duncan at haskell.org>**20081112131210
>  The previous #ifdef HAVE_OLD_BYTESTRING changes made it work for
>  ghc-6.6 but fail for ghc-6.8+. This should work both ways round.
> ] 
> [Isolate overriding-defaults.sh failures to that test.
> Petr Rockai <me at mornfall.net>**20081111222759
>  
>  When this test previously failed, it left broken .darcs/defaults around. We
>  trap exits now and fixup the broken file.
> ] 
> [Fix shell_harness so it uses --ignore-times
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081112105646
>  Ignore-this: 4b07a9727f723ad917ec6145728c21e2
> ] 
> [Silence haskell_policy complaining about Setup.lhs.
> Petr Rockai <me at mornfall.net>**20081111222951] 
> [Allow "cabal test tests network bugs" as suggested by Trent.
> Petr Rockai <me at mornfall.net>**20081111110411] 
> [Include the testsuite in Cabal sdist.
> Petr Rockai <me at mornfall.net>**20081111095747] 
> [Fixes to the release/distributed-* file generation in Cabal sDistHook.
> Petr Rockai <me at mornfall.net>**20081111095332] 
> [Bundle the version/context data (produced by Setup.lhs sdist) in the tarball.
> Petr Rockai <me at mornfall.net>**20081111093452] 
> [Update Cabal file lists to match reality.
> Petr Rockai <me at mornfall.net>**20081111093426] 
> [Bundle version and context data in Cabal source distribution.
> Petr Rockai <me at mornfall.net>**20081111093342] 
> [Implement runTests hook for Cabal.
> Petr Rockai <me at mornfall.net>**20081111082551
>  
>  This makes it possible to run "cabal test", "cabal test bugs" and "cabal test
>  network". It has some Ctrl+C issues which probably relate to naive use of
>  "system" to run programs.
> ] 
> [Darcs works with regex-compat 0.91.
> Trent W. Buck <trentbuck at gmail.com>**20081111023911
>  Debian has been using this version for some time.
> ] 
> [Refactor DARCS_FILES to work around Solaris' buggy find(1).
> Trent W. Buck <trentbuck at gmail.com>**20081112010502
>  Sorry this is so ugly; at least it's still much shorter than the
>  whitelist that existed before I started refactoring the makefile.
> ] 
> [Remove silly sort.
> Trent W. Buck <trentbuck at gmail.com>**20081107023723
>  If .depend is doing its job, this list shouldn't need to be sorted,
>  and in any case $^ (but not $+) implicitly sorts and uniquifies.
> ] 
> [Fix filepath test
> Eric Kow <kowey at darcs.net>**20081111210909
>  Ignore-this: 5d3e1f532ce652620b964a9e693a82e5
> ] 
> [Fix get test (it was assuming a clean directory)
> Eric Kow <kowey at darcs.net>**20081111210615
>  Ignore-this: f73f5529f1f14d257ec3009492411444
>  Also make it clean up after itself and use more standard temp names.
> ] 
> [Resolve issue1223: Fix broken init.sh test
> Eric Kow <kowey at darcs.net>**20081111205233
>  Ignore-this: 6c619ab1614abe13d7eb15b320211733
> ] 
> [Fix regression in configure test for zlib.
> Eric Kow <kowey at darcs.net>**20081111171554
>  Ignore-this: df51bbbe12ebaf20d66e193f6960548f
>  I had replaced an
>    if test foo -a bar = baz
>  with
>    if bar = baz
> ] 
> [Use conditional compilation for Salvatore's strict readFile fix
> Eric Kow <kowey at darcs.net>**20081111145114
>  Ignore-this: bf4e3159d1bdd2cadbb7b007c64f5e6d
> ] 
> [Fix gzReadFilePS to close file descriptor even on old bytestrings.
> Salvatore Insalaco <kirby81 at gmail.com>**20081108084939
>  BL.readFile is not strict enough, and it actually leaves the file descriptor opened. This should not happen, and probably it's a bug with older bytestrings (the one shipped with ghc 6.8.x).
>  This causes issues on Windows, where an opened file cannot be deleted.
>  Using strict bytestring readFile, and then converting them to lazy bytestring (should be O(1)) fix the problem.
> ] 
> [Add configure check for bytestring 0.9.1
> Eric Kow <kowey at darcs.net>**20081111115319
>  Ignore-this: f25fef6236879a1a2ad0ab44e337faee
>  This introduces a HAVE_OLD_BYTESTRING flag
> ] 
> [Simplify bytestring check.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081111115258
>  Ignore-this: 58feb27fd83415b6b539bd4a2ebd7216
>  Either base-2.0 (which includes Data.ByteString) or the bytestring package
>  are now required.
> ] 
> [resolve issue844: don't call gzwrite with zero length.
> David Roundy <droundy at darcs.net>**20081111145122
>  Ignore-this: ac80c1db0fad3279ccee3b7b5f1f87ea
> ] 
> [Avoid exporting cleanupRepositoryReplay.
> Petr Rockai <me at mornfall.net>**20081111100548
>  
>  We instead let replayRepository take the post-replay action as a parameter and
>  clean up automatically when it's done. Looks like a safer API to me.
> ] 
> [Remove literacy stub from Darcs.Patch.Choices.
> Trent W. Buck <trentbuck at gmail.com>**20081109110636] 
> [Remove literacy stub from Darcs.Patch.Info.
> Trent W. Buck <trentbuck at gmail.com>**20081109110434] 
> [Remove literacy stub from Darcs.Patch.Read.
> Trent W. Buck <trentbuck at gmail.com>**20081109110254] 
> [Remove literacy stub from Darcs.Patch.Test.
> Trent W. Buck <trentbuck at gmail.com>**20081109110103] 
> [Remove literacy stub from Darcs.Patch.Real.
> Trent W. Buck <trentbuck at gmail.com>**20081109105434] 
> [Remove literacy stub from Darcs.Patch.Non.
> Trent W. Buck <trentbuck at gmail.com>**20081109105400] 
> [Remove literacy stub from Darcs.Patch.Depends.
> Trent W. Buck <trentbuck at gmail.com>**20081109105308] 
> [Remove literacy stub from Darcs.Patch.Check.
> Trent W. Buck <trentbuck at gmail.com>**20081109105222] 
> [Remove literacy stub from Darcs.Patch.Viewing.
> Trent W. Buck <trentbuck at gmail.com>**20081109104757] 
> [Remove literacy stub from Darcs.Patch.Unit.
> Trent W. Buck <trentbuck at gmail.com>**20081109104720] 
> [Remove literacy stub from Darcs.Patch.QuickCheck.
> Trent W. Buck <trentbuck at gmail.com>**20081109104633] 
> [Remove literacy stub from Darcs.Patch.Permutations.
> Trent W. Buck <trentbuck at gmail.com>**20081109104610] 
> [Remove literacy stub from Darcs.Patch.Patchy.
> Trent W. Buck <trentbuck at gmail.com>**20081109104516] 
> [Remove literacy stub from Darcs.Patch.Bundle.
> Trent W. Buck <trentbuck at gmail.com>**20081109104403] 
> [Remove literacy stub from Darcs.Patch.FileName.
> Trent W. Buck <trentbuck at gmail.com>**20081109103658] 
> [Remove literacy stub from Darcs.Patch.Set.
> Trent W. Buck <trentbuck at gmail.com>**20081109102952] 
> [Remove literacy stub from Darcs.Patch.MatchData.
> Trent W. Buck <trentbuck at gmail.com>**20081109102546] 
> [Remove literacy stub from Darcs.Repository.HashedRepo.
> Trent W. Buck <trentbuck at gmail.com>**20081109105612
>  The deleted comments here are duplicated elsewhere.
> ] 
> [Remove literacy stub from Darcs.Repository.Pristine.
> Trent W. Buck <trentbuck at gmail.com>**20081109105012] 
> [Remove literacy stub from Darcs.Repository.HashedIO.
> Trent W. Buck <trentbuck at gmail.com>**20081109104947] 
> [Remove literacy stub from Darcs.Repository.Cache.
> Trent W. Buck <trentbuck at gmail.com>**20081109104933] 
> [Remove literacy stub from Darcs.Repository.
> Trent W. Buck <trentbuck at gmail.com>**20081109104840] 
> [Remove literacy stub from Darcs.Repository.Format.
> Trent W. Buck <trentbuck at gmail.com>**20081109103758] 
> [Remove literacy stub from Darcs.Repository.ApplyPatches.
> Trent W. Buck <trentbuck at gmail.com>**20081109102829] 
> [Remove literacy stub from Darcs.Repository.InternalTypes.
> Trent W. Buck <trentbuck at gmail.com>**20081109102801] 
> [Remove literacy stub from Darcs.Repository.Checkpoint.
> Trent W. Buck <trentbuck at gmail.com>**20081109102321] 
> [Make --match 'date "after year"' work into the future.
> Petr Rockai <me at mornfall.net>**20081109211305] 
> [Add a test for matching 'date "after year"' working for future patches.
> Petr Rockai <me at mornfall.net>**20081109203045] 
> [Remove franchise build file and test scripts.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081110153528
>  Ignore-this: 85d1b68798815121f5b2ed24d54fc9eb
>  David feels that having more than one build system is a bad idea.
> ] 
> [Restore configure check for QuickCheck 2.1
> Eric Kow <kowey at darcs.net>**20081110152808
>  Ignore-this: 470ec554bb115c783fb105b29ae3bd44
> ] 
> [Fix Repair.applyAndFix.
> Petr Rockai <me at mornfall.net>**20081106101557
>  
>  The way I have got the recursion versus syncing slurpies backwards is actually
>  pretty embarassing.  We also use syncSlurpy to avoid unneccessary (likely slow)
>  syncs while keeping memory use at bay. This fix should make repair and check
>  run much faster in much less memory.
> ] 
> [Resolve conflicts between darcs repair and literacy removal patches
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081110152620
>  Ignore-this: d7f097d054a22db40ac135551da48da1
> ] 
> [Introduce syncSlurpy, that syncs slurpy to disk as needed.
> Petr Rockai <me at mornfall.net>**20081106102101
>  
>  syncSlurpy takes an IO action that does the actual syncing, but only calls it
>  when neccessary to prevent memory blowups. It is fairly cheap to call often
>  (ie. after every applied patch). The sync threshold is currently hardcoded to
>  ~100M.
> ] 
> [Move Cabal based build to repository root
> Eric Kow <eric.kow at gmail.com>**20081109112502
>  Note that we use the Setup.lhs extension because the franchise based
>  build uses Setup.hs and we want to avoid introducing a spurious
>  dependency on the franchise patches.
> ] 
> [Remove makefile instructions to test franchise build
> Eric Kow <eric.kow at gmail.com>**20081108001051] 
> [Remove now superfluous darcs.cabal.in
> Eric Kow <eric.kow at gmail.com>**20081108000445] 
> [Refactor Repository.Repair.replayRepository to get rid of CanRepair.
> Petr Rockai <me at mornfall.net>**20081105234638
>  
>  We now instead return the new (repaired) patchset that needs to be written out
>  to the caller, and let them handle it.
> ] 
> [Remove literacy stub from Darcs.SlurpDirectory.Internal.
> Trent W. Buck <trentbuck at gmail.com>**20081109105853] 
> [Remove literacy stub from Darcs.SelectChanges.
> Trent W. Buck <trentbuck at gmail.com>**20081109105159] 
> [Remove literacy stub from Darcs.Ordered.
> Trent W. Buck <trentbuck at gmail.com>**20081109104306] 
> [Remove literacy stub from Darcs.SignalHandler.
> Trent W. Buck <trentbuck at gmail.com>**20081109103602] 
> [Remove literacy stub from Darcs.Sealed.
> Trent W. Buck <trentbuck at gmail.com>**20081109103520] 
> [Remove literacy stub from Darcs.TheCommands.
> Trent W. Buck <trentbuck at gmail.com>**20081109103449] 
> [Remove literacy stub from Darcs.TouchesFiles.
> Trent W. Buck <trentbuck at gmail.com>**20081109103419] 
> [Remove literacy stub from Darcs.RemoteApply.
> Trent W. Buck <trentbuck at gmail.com>**20081109103301] 
> [Remove literacy stub from Darcs.PrintPatch.
> Trent W. Buck <trentbuck at gmail.com>**20081109103028] 
> [Remove literacy stub from Darcs.Show.
> Trent W. Buck <trentbuck at gmail.com>**20081109102720] 
> [Remove literacy stub from Darcs.SlurpDirectory.
> Trent W. Buck <trentbuck at gmail.com>**20081109102637] 
> [Work around grep -Fw platform differences in haskell_policy.sh
> Thorkil Naur <naur at post11.tele.dk>**20081110013603
>  Experiments have demonstrated that grep -Fw behaviour depends on the platform,
>  even for the same grep --version. This patch removes the F flag which, in the
>  present context, seems unnecessary. Removing the F flag appears to iron out the platform
>  differences.
> ] 
> [shell_harness script in haskell
> Christian Kellermann <Christian.Kellermann at nefkom.net>**20081107121607
>  Ignore-this: 46d1138c233788cb00b71071e5f9b8ff
> ] 
> [Avoid test issue1017_whatsnew_stack.sh looping under buildbot control
> Thorkil Naur <naur at post11.tele.dk>**20081109122052
>  The replaced "yes | head -n count" mechanism for generating a large file loops when
>  run via Python under Mac OS X. This, apparently, makes the test loop when run by the Mac OS X buildbot
>  slaves. The replacement mechanism is not nearly as elegant as I would like, so better suggestions are
>  welcome.
> ] 
> [Remove literacy stub from CommandLine.
> Trent W. Buck <trentbuck at gmail.com>**20081109102016] 
> [Remove literacy stub from Darcs.Hopefully.
> Trent W. Buck <trentbuck at gmail.com>**20081109101604] 
> [Remove literacy stub from Darcs.Global.
> Trent W. Buck <trentbuck at gmail.com>**20081109101536] 
> [Remove literacy stub from Darcs.CheckFileSystem.
> Trent W. Buck <trentbuck at gmail.com>**20081109101331] 
> [Remove literacy stub from Darcs.Bug.
> Trent W. Buck <trentbuck at gmail.com>**20081109101257] 
> [Remove literacy stub from Darcs.IO.
> Trent W. Buck <trentbuck at gmail.com>**20081109101235] 
> [Remove literacy stub from Darcs.Flags.
> Trent W. Buck <trentbuck at gmail.com>**20081109100625] 
> [Haddockize Darcs.Lock.
> Trent W. Buck <trentbuck at gmail.com>**20081109111134] 
> [Fix haddock bugs in ByteStringUtils
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081109012226] 
> [Reformat Darcs.URL comments as haddock.
> Eric Kow <eric.kow at gmail.com>**20081023233730] 
> [Resolve conflicts (lstat vs de-literate)
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081109153040
>  Ignore-this: 39ae84ed11bd9fe823fcc5cd8596674a
>  The conflits were between Reinier's lstat-saving patches on the one
>  hand and the Diff haddockisation on the other.
> ] 
> [hopefully less buggy version of get_unrecorded_in_files
> Reinier Lamers <tux_rocker at reinier.de>**20081031215944
>  Ignore-this: 9f4f2320a1784cf6f7546ab23eb6bf61
> ] 
> [make whatsnew use the lstat-saving functions to scan the working copy
> tux_rocker at reinier.de**20081026194636
>  Ignore-this: 54b7a07b7b1d49b3d20050bc905db665
> ] 
> [make get_unrecorded_private work with type witnesses again
> tux_rocker at reinier.de**20081026190612
>  Ignore-this: 97418e6487ef9c9508473d4c65f295ca
> ] 
> [add a get_unrecorded_in_files to check for unrecorded changes in a subset of working directory
> tux_rocker at reinier.de**20081026164009
>  Ignore-this: 7d36ff983e8745049101a92f5b2326fb
> ] 
> [Keep OS X happy by passing a path to find(1).
> Trent W. Buck <trentbuck at gmail.com>**20081109113440] 
> [Remove tabs in franchise build.
> Eric Kow <kowey at darcs.net>**20081109005653
>  Ignore-this: c5f57b86fa6bfd5f5f006dd0923d631
> ] 
> [Move issue1017 test back into tests
> Eric Kow <kowey at darcs.net>**20081109005826
>  Ignore-this: 8b4f4f4673e6a07405a4c279385c373c
>  It was not consistently failing, and we still don't know why
>  it failed the last time.
>  rolling back:
>  Fri Nov  7 13:11:17 GMT 2008  Eric Kow <kowey at darcs.net>
>    * Move issue1017 test back to bugs.
> ] 
> [make unrecord work with type witnesses.
> David Roundy <droundy at darcs.net>**20081107123400
>  Ignore-this: 183ca39f8ec9af923468ecc243cba26
> ] 
> [add franchise target for type witness testing.
> David Roundy <droundy at darcs.net>**20081107123051
>  Ignore-this: 5df886520744de6d11992e9e6b3f9758
> ] 
> [cut dead code from Unrecord.
> David Roundy <droundy at darcs.net>**20081103021520
>  Ignore-this: 847fdfc20ab9a65a9d3527590fe51f3b
> ] 
> [be more verbose when type witnesses are enabled in franchise.
> David Roundy <droundy at darcs.net>**20081103014635
>  Ignore-this: d417d1b1aafbbedd5f9b6d1e4dbb25a2
> ] 
> [enable type witnesses for show commands.
> David Roundy <droundy at darcs.net>**20081103014338
>  Ignore-this: 5c538bb49432f16bc8dc03140d17cb1d
> ] 
> [Fix cabal file for lhs -> hs transition.
> Salvatore Insalaco <kirby81 at gmail.com>**20081108080448] 
> [Add issue1189 fix suggested by Duncan to Cabal build
> Eric Kow <eric.kow at gmail.com>**20081108000200] 
> [Haddockize Lcs.
> Trent W. Buck <trentbuck at gmail.com>**20081108082950] 
> [Extend zlib franchise test to look for zlib 0.5.0.0
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081102141525
>  Ignore-this: 1cf8e14867b91c05b34d978980d9188a
> ] 
> [switch to zlib 0.5.0.0 with new interface for specifying decompressed size
> Ganesh Sittampalam <ganesh at earth.li>**20081026102650] 
> [Move issue1017 test back to bugs.
> Eric Kow <kowey at darcs.net>**20081107131117
>  Ignore-this: 9e19d7392378f4d5e8d029b15e6f962d
>  One of our Mac buildbots owners reports that their buildbot
>  was taking forever to run.  It seemed to be hanging on this
>  step.
> ] 
> [Remove dangling .lhs references.
> Trent W. Buck <trentbuck at gmail.com>**20081107024222
>  Sorry about this, folks; it seems my conflict merging had a few bugs.
> ] 
> [Add comment to test pref
> Eric Kow <kowey at darcs.net>**20081106161155
>  Ignore-this: 634b224e4338a1ff0abc47a6903220be
> ] 
> [Fix typo in documentation
> Eric Kow <kowey at darcs.net>**20081106153606
>  Ignore-this: b52ecbb2fb3aa432c04a9abb6086239
> ] 
> [resolve issue1189: define HAVE_SIGNALS in franchise build.
> David Roundy <droundy at darcs.net>**20081106130431
>  Ignore-this: db3217e4ba459bb32d489b744227f5b8
>  Incidentally, ctrl-C handling seems also to be broken on the non-Windows
>  cabal build in release/, but I can't see how to fix it.  Or maybe
>  HAVE_SIGNALS is defined using some Deep Magic?
> ] 
> [Use make -j4 to run disttest.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081106114326
>  Ignore-this: 5818b80001e1ce589057b6adc61c4973
>  Trent had done some Makefile cleanups to eliminate the naughty practice
>  of calling $(MAKE) -j4 within make.  This patch restores the parallel
>  builds (which makes tests run faster) without the naughtiness.
> ] 
> [Change "Repairing patch" to "Replaying patch" as progress report in replayRepository.
> Petr Rockai <me at mornfall.net>**20081105224132] 
> [Tweak issue1012 test to use temp1 as tempdir name
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081106112750
>  Ignore-this: e2d0263a3652f01a6e202deeaef19408
> ] 
> [Clean up after previous tests in issue1017 test
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081106112723
>  Ignore-this: 9e6c6f1f3f617cfb9ec93666ee13c51d
> ] 
> [Refactor test_network target.
> Trent W. Buck <trentbuck at gmail.com>**20081106013245] 
> [Let DARCS_FILES and UNIT_FILES cope with .lhs/.hs renames.
> Trent W. Buck <trentbuck at gmail.com>**20081106094142
>  
>  I'm sorry this makes UNIT_FILES so ugly.
>  
>  The big advantage of this is that it lets me rename .lhs files without
>  editing the GNUmakefile in the same patch -- thereby avoiding some
>  icky conflictors.
> ] 
> [clean up .lhs versions of ThisVersion and Autoconf to make transition easier
> Ganesh Sittampalam <ganesh at earth.li>**20081105090209
>  Ignore-this: e8448d3962aeb832fc8fcdc0da8f9e32
> ] 
> [resolve issue864: check non-force replace against pending
> Tommy Pettersson <ptp at lysator.liu.se>**20081004235719
>  The replace was checked against pure pristine, so the answer to if it could
>  be applied to pending without force was sometimes wrong.
> ] 
> [Avoid using pkgconfig-depends for libcurl (cabal)
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081103150412
>  Ignore-this: 681d35599ab44961a2164ca54b4d5617
>  
>  This is a workaround to a Cabal library bug in "which ldOptions are
>  passed directly to ghc without any escaping" whereas "they should be
>  escaped with the -optl prefix"
>  http://hackage.haskell.org/trac/hackage/ticket/389
> ] 
> [change tabs to spaces in cabal's Setup.hs
> Jason Dagit <dagit at codersbase.com>**20081028032910] 
> [Use exceptions again in cabal Setup.hs
> Duncan Coutts <duncan at haskell.org>**20081027043635
>  Needed to handle calling darcs when it's not available.
>  Uses CPP to make it work with ghc-6.8 and 6.10
> ] 
> [Make building with HTTP package work via cabal
> Duncan Coutts <duncan at haskell.org>**20081027034031] 
> [Add the location of the darcs repo to the cabal file
> Duncan Coutts <duncan at haskell.org>**20081027004425
>  Cabal-1.6 allows this meta-data to be given in the .cabal file
>  and in a machine readable format.
> ] 
> [Update cabal file for renamed ByteStringUtils module
> Duncan Coutts <duncan at haskell.org>**20081027003824] 
> [When not using external zlib binding require z C lib (in cabal file)
> Duncan Coutts <duncan at haskell.org>**20081027003414
>  It was working before but probably only because some other C lib
>  needed zlib, probably curl. This is more correct.
> ] 
> [Add the other modules and extra src files to the cabal file
> Duncan Coutts <duncan at haskell.org>**20081027003315
>  Needed for cabal sdist to work.
> ] 
> [Support building with libwww via Cabal
> Duncan Coutts <duncan at haskell.org>**20081026232738] 
> [Update darcs.cabal for HAVE_SIGINFO_H
> Duncan Coutts <duncan at haskell.org>**20081026232647] 
> [Make Setup.hs work with ghc-6.8 and 6.10 by not using exceptions
> Duncan Coutts <duncan at haskell.org>**20081026202912
>  The exceptions api changed between 6.8 and 6.10.
> ] 
> [Add cabal support files under release/ directory
> Duncan Coutts <duncan at haskell.org>**20081026195706] 
> [Add all required language extensions to .cabal.in file
> Don Stewart <dons at galois.com>**20081025225427] 
> [issue 1017 now fixed
> Ganesh Sittampalam <ganesh at earth.li>**20081025122754] 
> [Restore 'pass/fail' output in shell_harness.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081105093446
>  Ignore-this: 93d9a4fba1f83b79a5b7b63c87e0e955
>  
>  rolling back accidentally applied patch:
>  
>  Fri Oct 24 06:57:55 BST 2008  Trent W. Buck <trentbuck at gmail.com>
>    * Colour test output in Emacs' M-x compile.
> ] 
> [Refactor away boilerplate in naughty ./configure-circumventing profile targets.
> Trent W. Buck <trentbuck at gmail.com>**20081105052235] 
> [Resolve conflicts.
> Trent W. Buck <trentbuck at gmail.com>**20081105014527
>  
>  Mostly conflicts were between Trent's make refactoring and Kowey's
>  copy-and-paste job to add support for building profiled object files
>  and executables in parallel to the non-profiled build.
> ] 
> [Typo: make distclean and maintainer-clean rules cumulative.
> Trent W. Buck <trentbuck at gmail.com>**20081104235641] 
> [Refactor TAGS targets.
> Trent W. Buck <trentbuck at gmail.com>**20081104132834
>  
>  Renamed targets to match default output files, obviating PHONY.
>  Removed the ugly manual sorting, as exuberant ctags sorts by default.
>  Moved cleanup into distclean.
>  Added C inputs to dependency list.
>  Avoid abusing $ETAGS and $CTAGS for hasktags.
> ] 
> [autoconf.mk doesn't depend on darcs.cgi.in.
> Trent W. Buck <trentbuck at gmail.com>**20081104130338
>  
>  The old version was saying things "autoconf.mk depends on
>  darcs.cgi.in", which isn't quite right.  The replacement is shorter
>  and more correct.
> ] 
> [Delete unused "register" target.
> Trent W. Buck <trentbuck at gmail.com>**20081104124530] 
> [Move cleanup rules to appropriate target (clean/distclean).
> Trent W. Buck <trentbuck at gmail.com>**20081104124116] 
> [Resolve conflicts.
> Trent W. Buck <trentbuck at gmail.com>**20081104123359] 
> [Merge autoconf.mk and .depend inclusion.
> Trent W. Buck <trentbuck at gmail.com>**20081102045359
>  
>  In a declarative expert system like Make, it shouldn't matter where
>  .depend is included.  Actual experiments suggest that it does, and
>  putting it at the top will help avoid illogical behaviour.
>  
>  It also reduces the makefile's length by several lines.
> ] 
> [Make .hs.in of trivial .lhs.in files.
> Trent W. Buck <trentbuck at gmail.com>**20081029025407] 
> [Make .hs of trivial .lhs files.
> Trent W. Buck <trentbuck at gmail.com>**20081029025326] 
> [Split darcs.lhs into darcs.tex and darcs.hs.
> Trent W. Buck <trentbuck at gmail.com>**20081026063231
>  After all, the Main module and main function don't really have
>  anything to do with the introductory chapters of the user manual.
>  
>  I used these commands and then some touch-ups:
>  
>  $ sed '/\\begin{code}/,/\\end{code}/d' src/darcs.lhs >src/darcs.tex
>  $ darcs mv src/darcs.lhs src/darcs.hs
>  $ sed --in-place '/\\end{code}/,/\\begin{code}/d' src/darcs.hs
> ] 
> [Only .lhs (not .hs) files could possibly be TeX sources.
> Trent W. Buck <trentbuck at gmail.com>**20081025141537] 
> [Typo: remove silly circular dependency.
> Trent W. Buck <trentbuck at gmail.com>**20081025121957] 
> [Don't warn unless ALL alternatives are missing.
> Trent W. Buck <trentbuck at gmail.com>**20081025120102] 
> [If installed, use rubber(1) to quieten TeX.
> Trent W. Buck <trentbuck at gmail.com>**20081025113643] 
> [Typo.
> Trent W. Buck <trentbuck at gmail.com>**20081025113607] 
> [Turn procedural assignments (:=) into declarations (=).
> Trent W. Buck <trentbuck at gmail.com>**20081025100744] 
> [Refactor .hi rule.
> Trent W. Buck <trentbuck at gmail.com>**20081025100732] 
> [Refactor install rules.
> Trent W. Buck <trentbuck at gmail.com>**20081025100527
>  
>  Importantly, this means that if you just do "make" it will either
>  build PDF or PS, but not both (with a preference for PDF).
>  
>  The "installbin" target has been renamed to "install", since 1) that's
>  the convention, and 2) it was already installing non-binary stuff,
>  namely the bash completion and manpage.
>  
>  Leverages concatenative rules (::) to reduce repetition.
> ] 
> [Refactor targets that prevent "include autoconf.mk" (and .depend).
> Trent W. Buck <trentbuck at gmail.com>**20081025012208
>  As well as being clearer, this is now a good deal more liberal. For
>  example, it won't rebuild .depend during "make maintainer-clean".
> ] 
> [Generate TEXSOURCES programmatically.
> Trent W. Buck <trentbuck at gmail.com>**20081025011935] 
> [Generate DARCS_FILES by blacklist, not whitelist.
> Trent W. Buck <trentbuck at gmail.com>**20081025010803
>  This attempt is far from perfect, but at least it works.
> ] 
> [Use $@ and $* to shrink test_harness.
> Trent W. Buck <trentbuck at gmail.com>**20081024085740
>  
>  Note that I have also removed the use of @ to hide what make is doing.
>  
>  It is better to use "make --silent" to hide such noise, because then I
>  can debug problems in the makefile by running *without* --silent,
>  rather than having to temporarily remove the @'s.
> ] 
> [Refactor test rules.
> Trent W. Buck <trentbuck at gmail.com>**20081024034429
>  Now the target names correspond to the darcs switches, e.g. "make
>  test-darcs-2" instead of "make test-format2".  There are some legacy
>  pointers so the old targets still work, but they probably put the
>  results in a different directory.
> ] 
> [Don't call GHC on autoconf.mk in .depend rule.
> Trent W. Buck <trentbuck at gmail.com>**20081024031700
>  I don't know why, but $^ included autoconf.mk.  I used $(filter) to
>  remove it, and put all the deps on one line while I was at it.
> ] 
> [Miscellaneous refactoring.
> Trent W. Buck <trentbuck at gmail.com>**20081023050926] 
> [Replace procedural := with declarative =.
> Trent W. Buck <trentbuck at gmail.com>**20081023034044
>  
>  When you do "x = a b" in make, it doesn't get evaluated until you
>  actually attempt to refer to $x in a rule, because make is an expert
>  system.  The reason := exists is because if you do
>  
>      f = $(shell really-slow-command)
>  
>  and then try to build a bunch of object files, $f will cause
>  really-slow-command to be run separately for each one.  Since we're
>  just doing internal stuff like $(patsubst), we don't need := and using
>  it makes it harder to reason about the system, because it's no longer
>  declarative.
> ] 
> [Obviate SRC_DIRS altogether.
> Trent W. Buck <trentbuck at gmail.com>**20081023030139
>  
>  Note that find -delete would be better, but it is not standard:
>  http://www.opengroup.org/onlinepubs/009695399/utilities/find.html
> ] 
> [Ameliorative ChangeLog mode hint for Emacs.
> Trent W. Buck <trentbuck at gmail.com>**20081104125751
>  
>  This patch makes Emacs use outline (hierarchical) mode, and to
>  recognize "darcs (N)" as a first-level heading and " * foo" as a
>  third-level heading.  Treating the latter correctly, as second-level
>  headings, is beyond my capabilities.
>  
>  I'd prefer that this file be moved to "NEWS" and formatted as outline-
>  mode expects: each Nth-level heading starts with N stars and a space.
> ] 
> [quickCheck tests  for QuickCheck 2.1
> Florent Becker <florent.becker at ens-lyon.org>**20081006135708] 
> [add yet another braindead file path to file path canonicalization test
> Reinier Lamers <tux_rocker at reinier.de>**20081103222552
>  Ignore-this: a2b2f6f8c47a14943dd99a6a1d0a5c7d
> ] 
> [Add bug script for issue1196
> Reinier Lamers <tux_rocker at reinier.de>**20081103222106
>  Ignore-this: a91333382a944602881b388da4606eca
> ] 
> [Fix "make bugs" target in makefile
> Reinier Lamers <tux_rocker at reinier.de>**20081103221941
>  Ignore-this: 541567455acb0308bbbcf8eb4fe4c83b
> ] 
> [Try a bit harder to hack darcs pathname canonicalization in tests
> Reinier Lamers <tux_rocker at reinier.de>**20081103211112
>  Ignore-this: 3b419ed6b5c3b4d8529ca045d8c63548
> ] 
> [Typo: install-pdf was trying to install *.ps.
> Trent W. Buck <trentbuck at gmail.com>**20081025122922] 
> [Typo.
> Trent W. Buck <trentbuck at gmail.com>**20081025083214] 
> [Add conventional install-ps/pdf/html targets.
> Trent W. Buck <trentbuck at gmail.com>**20081024085052
>  See info page (make)Standard Targets.
> ] 
> [Use new "ps", "pdf" and "html" targets.
> Trent W. Buck <trentbuck at gmail.com>**20081024084215] 
> [Clean hspwd.
> Trent W. Buck <trentbuck at gmail.com>**20081024081050] 
> [Colour test output in Emacs' M-x compile.
> Trent W. Buck <trentbuck at gmail.com>**20081024055755
>  
>  This change means doing M-x compile RET make test RET in an ordinary
>  Emacs will highlight failed tests in red, and working tests in green.
>  This makes it easier to spot problems.
>  
>  The down side is that yes/no is less clear than passed/failed.
> ] 
> [Reduce loquacity of haddock targets.
> Trent W. Buck <trentbuck at gmail.com>**20081023072048
>  I think that if someone runs "make api-doc", it's not useful to
>  immediately print
>  
>      echo "Generating html"
>      Generating html
>  
>  Therefore I'm removing these lines.
> ] 
> [Fix some predicates I accidentally reversed.
> Trent W. Buck <trentbuck at gmail.com>**20081023072013] 
> [release/debian is long gone.
> Trent W. Buck <trentbuck at gmail.com>**20081023071427] 
> [Make it obvious why deps are being filtered.
> Trent W. Buck <trentbuck at gmail.com>**20081023070847] 
> [Leverage gmake's order-only dependencies.
> Trent W. Buck <trentbuck at gmail.com>**20081023051023] 
> [-fregs-graph seems to be a problem on both ghc 6.6 and 6.10
> Jason Dagit <dagit at codersbase.com>**20081028032741
>  This flag doesn't seem to cause a problem on 6.8, but having
>  does seem to cause a problem for 6.6 and 6.10.
> ] 
> [Resolve conflict between make darcs_p and make continuous
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20081102122954
>  Ignore-this: 385fc4a7bd4b617f1c073f97c860c6ad
> ] 
> [restore -auto-all to profiling options
> Ganesh Sittampalam <ganesh at earth.li>**20081026144023] 
> [avoid .depend doubling in size on every make
> Ganesh Sittampalam <ganesh at earth.li>**20081026141924
>  Ignore-this: e106a7ba53738279ebb8293eeea16679
> ] 
> [Also clean intermediate profiling files.
> Eric Kow <eric.kow at gmail.com>**20081026145926] 
> [Do not use -threaded when building darcs_p
> Eric Kow <eric.kow at gmail.com>**20081026145415] 
> [Clean up how darcs_p is built
> Eric Kow <eric.kow at gmail.com>**20081026145406
>  Treat GHCFLAGS_P as an alternative to GHCFLAGS, not an addition.
> ] 
> [Rename DARCS_OBJS_P and GHCFLAGS_P
> Eric Kow <eric.kow at gmail.com>**20081026145619
>  from   DARCS_P_OBJS and GHC_PROF_FLAGS
> ] 
> [Allow the profiling and non-profiling versions of darcs to co-exist
> Eric Kow <eric.kow at gmail.com>**20081026135910
>  by teaching the Makefile about the suffixes .p_hi and .p_o.
> ] 
> [Add -fregs-graph to build instructions for SHA1.o
> Eric Kow <eric.kow at gmail.com>**20081026133031
>  This helps us avoid a GHC error when building the profiling version of darcs,
>  namely: RegAllocLinear.getStackSlotFor: out of stack slots, try -fregs-graph
> ] 
> [replace a hoogle workaround with a comment, we now index names beginning with _
> Simon Michael <simon at joyful.com>**20081103165516
>  Ignore-this: 537874d6183556322091ff063ba1015b
> ] 
> [Make haddock aware of CommandLine module comment.
> Trent W. Buck <trentbuck at gmail.com>**20081102011801] 
> [Refactor QuickCheck 2 test.
> Trent W. Buck <trentbuck at gmail.com>**20081103101155
>  This makes the output resemble autoconf, so Emacs colours it by default.
>  It also means the user gets information before the test starts.
>  Lastly, it redirects the stderr of grep, as GNU grep's manpage recommends.
> ] 
> [Use cute short form of $(dir) and $(notdir).
> Trent W. Buck <trentbuck at gmail.com>**20081025113759] 
> [Refactor dependency declaration for helper utils.
> Trent W. Buck <trentbuck at gmail.com>**20081025011633
>  The .hs/.lhs deps that "disappear" are still in autoconf.mk.in.
> ] 
> [Turn descriptive commands into comments.
> Trent W. Buck <trentbuck at gmail.com>**20081024032405
>  I don't think there's any point in printing "I'm deleting information
>  you can't recover" immediately before doing so, without offering an
>  abort step.  Therefore, that message can just be an ordinary comment
>  in the makefile.
> ] 
> [Quieten removal of "Main" intermediaries.
> Trent W. Buck <trentbuck at gmail.com>**20081023093107
>  This matches the quietness in the "darcs" target in GNUmakefile.
> ] 
> [Add conventional "pdf", "ps" and "html" targets.
> Trent W. Buck <trentbuck at gmail.com>**20081023070550
>  See info page (make)Standard Targets.
> ] 
> [Don't override MAKEFLAGS's -j.
> Trent W. Buck <trentbuck at gmail.com>**20081023065134
>  
>  Make does hairy things within $MAKEFLAGS (which is included in $MAKE)
>  to ensure that -j does the right thing in the presence of nested
>  makes.  Overriding this with $(MAKE) -j4 is almost certainly naughty.
>  Instead, you should do "make -j4 disttest" or implicitly, with
>  "MAKEFLAGS=j4 darcs record --test".
> ] 
> [Use ANNOUNCE_GHC convention for darcs.
> Trent W. Buck <trentbuck at gmail.com>**20081024085359] 
> [Conventionalize make rule for hspwd.
> Trent W. Buck <trentbuck at gmail.com>**20081024033900] 
> [Reduce disttest noise for teetotalers.
> Trent W. Buck <trentbuck at gmail.com>**20081103094530
>  
>  Without wine installed, "make disttest" was printing nine copies of:
>  
>      /bin/sh: wine: not found
>      test: 1: =: argument expected
>  
>  This DOES NOT fix the case where wine is installed, but GHC is not
>  available from wine:
>  
>      wine runghc Setup.hs configure
>      wine: could not load L"C:\\windows\\system32\\runghc.exe": Module not found
>      make: *** [disttest] Error 126
> ] 
> [resolve conflict in makefile.
> David Roundy <droundy at darcs.net>**20081103002009
>  Ignore-this: 3677a2bad189f858b1ac06e56b9e4c2f
> ] 
> [fixup SRC_DIRS
> Ganesh Sittampalam <ganesh at earth.li>**20081029190715] 
> [a slight simplification
> Ganesh Sittampalam <ganesh at earth.li>**20081028185358] 
> [clarify SlurpDirectory interface
> Ganesh Sittampalam <ganesh at earth.li>**20081028072911] 
> [cleanup some patterns
> Ganesh Sittampalam <ganesh at earth.li>**20081028065424] 
> [simplify slurp_has_anycase
> Ganesh Sittampalam <ganesh at earth.li>**20081026200442] 
> [another obvious use of the SlurpyMap
> Ganesh Sittampalam <ganesh at earth.li>**20081026192715] 
> [bug fix
> Ganesh Sittampalam <ganesh at earth.li>**20081026185518] 
> [make use of the SlurpyDir Map in the obvious places
> Ganesh Sittampalam <ganesh at earth.li>**20081026153749] 
> [dumb changeover of SlurpDir contents from [] to Map
> Ganesh Sittampalam <ganesh at earth.li>**20081026135906] 
> [refactor Slurpy to common up name component between File/Dir
> Ganesh Sittampalam <ganesh at earth.li>**20081026123722] 
> [TAG stable 2008-11-17 (with 2.1.2)
> Eric Kow <kowey at darcs.net>**20081117104434] 
> Patch bundle hash:
> 03b5a29de6e5bdfb79cb6bbe79af6471d0c788cf

> _______________________________________________
> darcs-users mailing list
> darcs-users at darcs.net
> http://lists.osuosl.org/mailman/listinfo/darcs-users


-- 
Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
PGP Key ID: 08AC04F9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.osuosl.org/pipermail/darcs-users/attachments/20090305/53264953/attachment-0001.pgp>


More information about the darcs-users mailing list