changeset 20524:28b8ff84db3f

journal: report parsing errors on recover/rollback (issue4172)
author Matt Mackall <mpm@selenic.com>
date Mon, 17 Feb 2014 14:49:56 -0600
parents 0e2877f8605d
children aa73a6327df4
files mercurial/transaction.py tests/test-rollback.t
diffstat 2 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/transaction.py	Sat Feb 15 22:09:32 2014 -0600
+++ b/mercurial/transaction.py	Mon Feb 17 14:49:56 2014 -0600
@@ -174,7 +174,10 @@
     lines = fp.readlines()
     fp.close()
     for l in lines:
-        f, o = l.split('\0')
-        entries.append((f, int(o), None))
+        try:
+            f, o = l.split('\0')
+            entries.append((f, int(o), None))
+        except ValueError:
+            report(_("couldn't read journal entry %r!\n") % l)
 
     _playback(file, report, opener, entries)
--- a/tests/test-rollback.t	Sat Feb 15 22:09:32 2014 -0600
+++ b/tests/test-rollback.t	Mon Feb 17 14:49:56 2014 -0600
@@ -184,4 +184,14 @@
   $ cat a
   a
 
-  $ cd ..
+corrupt journal test
+  $ echo "foo" > .hg/store/journal
+  $ hg recover
+  rolling back interrupted transaction
+  couldn't read journal entry 'foo\n'!
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+  1 files, 2 changesets, 2 total revisions
+