diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,13 @@
+Version 0.6 released 31 Dec 2012
+
+* Updated to use Diff 0.2.  This involves an API change:
+  diff now returns [Diff [String]] rather than [(DI, String)].
+  Thanks to markwright for the patch.
+
+* Test revDescription more thoroughly (Ben Millwood).
+
+* Fixed error handling in withVerifyDir.
+
 Version 0.5.0.1 released 21 Oct 2012
 
 * Bumped version limits on dependencies.
diff --git a/Data/FileStore/Generic.hs b/Data/FileStore/Generic.hs
--- a/Data/FileStore/Generic.hs
+++ b/Data/FileStore/Generic.hs
@@ -14,7 +14,7 @@
 module Data.FileStore.Generic
            ( modify
            , create
-           , DI(..)
+           , Diff(..)
            , diff
            , searchRevisions
            , smartRetrieve
@@ -27,7 +27,7 @@
 import Control.Exception (throwIO, catch, SomeException, try)
 import Data.FileStore.Utils
 import Data.List (isInfixOf)
-import Data.Algorithm.Diff (DI(..), getGroupedDiff)
+import Data.Algorithm.Diff (Diff(..), getGroupedDiff)
 import System.FilePath ((</>))
 import Prelude hiding (catch)
 
@@ -73,7 +73,7 @@
        return $ Left (MergeInfo latestRev conflicts mergedText)
 
 -- | Return a unified diff of two revisions of a named resource.
--- Format of the diff is a list @[(DI, [String])]@, where
+-- Format of the diff is a list @[(Diff, [String])]@, where
 -- @DI@ is @F@ (in first document only), @S@ (in second only),
 -- or @B@ (in both), and the list is a list of lines (without
 -- newlines at the end).
@@ -81,10 +81,10 @@
      -> FilePath      -- ^ Resource name to get diff for.
      -> Maybe RevisionId  -- ^ @Just@ old revision ID, or @Nothing@ for empty.
      -> Maybe RevisionId  -- ^ @Just@ oew revision ID, or @Nothing@ for latest.
-     -> IO [(DI, [String])]
+     -> IO [Diff [String]]
 diff fs name Nothing id2 = do
   contents2 <- retrieve fs name id2
-  return [(S, lines contents2)]   -- no need to run getGroupedDiff here - diff vs empty document 
+  return [Second (lines contents2) ]   -- no need to run getGroupedDiff here - diff vs empty document 
 diff fs name id1 id2 = do
   contents1 <- retrieve fs name id1
   contents2 <- retrieve fs name id2
diff --git a/filestore.cabal b/filestore.cabal
--- a/filestore.cabal
+++ b/filestore.cabal
@@ -1,5 +1,5 @@
 Name:                filestore
-Version:             0.5.0.1
+Version:             0.6
 Cabal-version:       >= 1.8
 Build-type:          Custom
 Synopsis:            Interface for versioning file stores.
@@ -43,7 +43,7 @@
                          time >= 1.1 && < 1.5,
                          xml >= 1.3 && < 1.4,
                          split >= 0.1 && < 0.3,
-                         Diff >= 0.1.2 && < 0.2,
+                         Diff >= 0.2 && < 0.3,
                          old-locale >= 1.0 && < 1.1
 
     Exposed-modules:     Data.FileStore, Data.FileStore.Types, Data.FileStore.Git, Data.FileStore.Darcs, Data.FileStore.Mercurial,
diff --git a/tests/Tests.lhs b/tests/Tests.lhs
--- a/tests/Tests.lhs
+++ b/tests/Tests.lhs
@@ -12,7 +12,7 @@
 > import Data.Time
 > import Data.Maybe (mapMaybe)
 > import System.FilePath
-> import Data.Algorithm.Diff (DI(..))
+> import Data.Algorithm.Diff (Diff(..))
 
 > main = do
 >   testFileStore (gitFileStore "tmp/gitfs") "Data.FileStore.Git"
@@ -306,6 +306,8 @@
 *** Test history and revision
 
 > historyTest fs = TestCase $ do
+>   let testDescription = "history test message"
+>   save fs testTitle testAuthor testDescription testContents
 
     Get history for three files
 
@@ -316,7 +318,7 @@
 >   assertBool "history contains latest revision" (rev `elem` hist)
 >   assertEqual "revAuthor" testAuthor (revAuthor rev)
 >   assertBool "revId non-null" (not (null (revId rev)))
->   assertBool "revDescription non-null" (not (null (revDescription rev)))
+>   assertEqual "revDescription" testDescription (revDescription rev)
 >   assertEqual "revChanges" [Modified testTitle] (revChanges rev)
 >   let revtime = revDateTime rev
 >   histNow <- history fs [testTitle] (TimeRange (Just $ addUTCTime (60 * 60 * 24) now) Nothing) Nothing
@@ -336,13 +338,13 @@
 
 >   [secondrev, firstrev] <- history fs [diffTitle] (TimeRange Nothing Nothing) Nothing
 >   diff' <- diff fs diffTitle (Just $ revId firstrev) (Just $ revId secondrev)
->   let subtracted' = mapMaybe (\(d,s) -> if d == F then Just s else Nothing) diff'
+>   let subtracted' = [s | First s <- diff']
 >   assertEqual "subtracted lines" [[last (lines testContents)]] subtracted'
 
     Diff from Nothing should be diff from empty document.
 
 >   diff'' <- diff fs diffTitle Nothing (Just $ revId firstrev)
->   let added'' = mapMaybe (\(d,s) -> if d == S then Just s else Nothing) diff''
+>   let added'' = [s | Second s <- diff']
 >   assertEqual "added lines from empty document to first revision" [lines testContents] added''
 
     Diff to Nothing should be diff to latest.
