From 5ba323af16dc84ac15d0c1156e3533323fdae821 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Tue, 3 Mar 2020 13:35:17 -0800 Subject: [PATCH] doctor: skip unknown visibleheads format Summary: When I run `hg doctor` in my www checkout it fails the assertion check of the first line of visibleheads is "v1". Make it graceful so doctor can check and fix other components. Reviewed By: DurhamG Differential Revision: D20147969 fbshipit-source-id: 6aee2cab962fcd0ef06a0611d288021e86621249 --- eden/scm/edenscm/mercurial/commands/doctor.py | 5 +++- eden/scm/tests/test-doctor.t | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/eden/scm/edenscm/mercurial/commands/doctor.py b/eden/scm/edenscm/mercurial/commands/doctor.py index cd737f10e5..6ead7df2e8 100644 --- a/eden/scm/edenscm/mercurial/commands/doctor.py +++ b/eden/scm/edenscm/mercurial/commands/doctor.py @@ -239,7 +239,10 @@ def repairvisibleheads(ui, metalog, cl): """Attempt to fix visibleheads by removing invalid commit hashes""" oldtext = decodeutf8(metalog.get("visibleheads") or b"") oldlines = oldtext.splitlines() - assert oldlines[0] == "v1" + # Only support v1 right now. + if oldlines[0:1] != ["v1"]: + ui.write_err(_("visibleheads: skipped\n")) + return nodemap = cl.nodemap newlines = [oldlines[0]] + [ hexnode diff --git a/eden/scm/tests/test-doctor.t b/eden/scm/tests/test-doctor.t index b132a6e6f9..419b653dc5 100644 --- a/eden/scm/tests/test-doctor.t +++ b/eden/scm/tests/test-doctor.t @@ -119,6 +119,23 @@ Check changelog repiar: $ hg status +Check unknown visibleheads format: + + $ newrepo + $ hg dbsh << 'EOS' + > ml = repo.svfs.metalog + > ml.set("visibleheads", "v-1") + > ml.commit("break visibleheads") + > EOS + $ hg doctor + checking internal storage + mutation: looks okay + changelog: looks okay + metalog: looks okay + visibleheads: skipped + treestate: looks okay + allheads: looks okay + Check dirstate pointing to a stripped commit: $ newrepo @@ -203,4 +220,14 @@ Try other kinds of dirstate corruptions: visibleheads: looks okay treestate: repaired allheads: looks okay + $ hg status + M A2 + A A0 + A X + R A + R A1 + ? B + ? C + ? Y + ? Z #endif