Ho utilizzato hg shelve
in un repository, dove ho apportato alcune modifiche non completate perché avevo bisogno di passare a una testa diversa ed eseguire modifiche non correlate.Come posso riparare un repository rotto da hg unshelve?
Una volta eseguito il mio lavoro sull'altro capo, sono tornato alla testa su cui avevo originariamente utilizzato hg shelve
e ho eseguito un comando hg unshelve
. Questo è stato il risultato:
$ hg unshelve
unshelving change 'default'
adding changesets
adding manifests
adding file changes
added 1 changesets with 4 changes to 4 files (+1 heads)
abort: uncommitted changes
$ hg diff
warning: ignoring unknown working parent 893e15ecb5b4!
$
Ho fatto eseguire hg head
prima e dopo il comando unshelve
e ho visto identiche uscite. Il commit 893e15ecb5b4
non è mai esistito, non ho idea di dove Mercurial l'abbia preso.
Nel caso sia pertinente, eseguo la versione 2.8.2 di Mercurial su Ubuntu 14.04.
Come posso ripristinare il repository in uno stato funzionante e in che modo è possibile ripristinare le modifiche di shelving?
'hg debugrebuildstate' è probabilmente quello che serve invece del # 2. –
@MarkTolonen Perché è più semplice di quello che ho fatto? O perché ci sarebbero informazioni aggiuntive che potrebbero essere fuori sincrono? Se è il più tardi, quali informazioni sarebbero fuori sincrono? – kasperd
Costringe Mercurial a ricostruire il suo stato interno, quindi immagino sia più accurato. Ho ricevuto il suggerimento da http://hgtip.com/tips/advanced/2010-04-23-debug-command-tricks/ –