windows - Mercurial: 'Forladt transaktion fundet - Kør HG Gendan'. Gendannelse virker ikke

Indlæg af Hanne Mølgaard Plasc

Problem



Ved at bruge skildpadde hg på windows, tog jeg et træk fra et lager på mit lokale drev til et lager på en usb-pind.


Under pull'en antager jeg, at der var en fejl i USB-forbindelsen, fordi den blev afbrudt halvvejs igennem.


Nu kan jeg ikke trække igen. Jeg får beskeden: abandoned transaction found - run hg recover


Når jeg kører hg gendannelse, får jeg følgende besked:


rolling back interrupted transaction
** unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or mercurial@selenic.com
** Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)]
** Mercurial Distributed SCM (version 1.6.3)
** Extensions loaded: fixfrozenexts
Traceback (most recent call last):
  File "hg", line 36, in <module>
  File "mercurialdispatch.pyo", line 16, in run
  File "mercurialdispatch.pyo", line 34, in dispatch
  File "mercurialdispatch.pyo", line 54, in \_runcatch
  File "mercurialdispatch.pyo", line 494, in \_dispatch
  File "mercurialdispatch.pyo", line 355, in runcommand
  File "mercurialdispatch.pyo", line 545, in \_runcommand
  File "mercurialdispatch.pyo", line 499, in checkargs
  File "mercurialdispatch.pyo", line 492, in <lambda>
  File "mercurialutil.pyo", line 420, in check
  File "mercurialcommands.pyo", line 2869, in recover
  File "mercuriallocalrepo.pyo", line 606, in recover
  File "mercurial	ransaction.pyo", line 173, in rollback
ValueError: too many values to unpack


Hvis jeg forsøger at vende tilbage manuelt, får jeg denne besked: no rollback information available


Denne gang kan jeg ganske enkelt bare slette hele backupen på min pind og gøre en frisk pull, fordi repo er lille, og usb-pinden indeholder ingen andre ændringer. Men hvad nu hvis det sker på en større repo, hvor jeg ikke har råd til at genstarte fra bunden? Hvordan kan jeg genoprette repo?

Bedste reference


Jeg oplevede et lignende problem og rapporterede det som en fejl, og udvikleren på rapporten foreslog, at problemet er en korrupt journal. Som beskrevet i fejlrapporten kan du køre hg verify for at se den sidste 'gode' commit, og brug hg clone -r <#> til at gendanne indtil den begå. [6]

Andre referencer 1


Jeg synes, det er faktisk en fejl i kodekilden. Du bør rapportere fejlen til Mercurial-teamet som sagt i fejlmeddelelsen.

Andre referencer 2


Jeg brugte TeamCity CI og Deployment-serveren, så det er nok et andet problem, men jeg har stillet svaret på det tilsvarende spørgsmål.