Vous avez un écran bleu dans les fenêtres lors du clonage d'un référentiel mercurial.
Après le redémarrage, je reçois maintenant ce message pour presque toutes les commandes hg:
c: \ src \> hg commit en attente de verrouillage sur le référentiel c: \ src \ McVrsServer détenu par '\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 ' interrompu!
Google n'est d'aucune aide.
Des conseils?
Réponses:
Lorsque "en attente de verrouillage sur le référentiel", supprimez le fichier du référentiel:
.hg/wlock
(ou il peut être dans
).hg/store/lock
Lors de la suppression du fichier de verrouillage, vous devez vous assurer que rien d'autre n'accède au référentiel. (Si le verrou est une chaîne de zéros ou vide, c'est presque certainement vrai).
la source
hg recover
doit être exécuté après une situation de verrouillage cassée.Quand
waiting for lock on working directory
, supprimez.hg/wlock
.la source
server:pid
. Merci beaucoup. Ensuite, j'ai dû courir$ hg recover
pour effacer le journal existant (et le message de validation) que j'avaisctrl+c
édité. Pas sûr, mais vous pourrez peut-être exécuter$ hg recover
sans supprimer le fichier de verrouillage et il le fera pour vous. Ça vaut le coup je suppose.J'ai eu ce problème avec aucun fichier de verrouillage détectable. J'ai trouvé la solution ici: http://schooner.uwaterloo.ca/twiki/bin/view/MAG/HgLockError
Voici une transcription de la console Tortoise Hg Workbench
Après cela, la traction avortée s'est déroulée avec succès.
Le verrou avait été défini il y a plus de 2 ans, par un processus sur une machine qui n'est plus sur le LAN. Honte aux développeurs hg pour a) ne pas documenter correctement les verrous; b) ne pas les horodater pour les supprimer automatiquement lorsqu'ils sont périmés.
la source
wlock
c'est celui qui est enfermé, utilisezhg debuglocks --force-wlock
Un collègue a eu exactement ce problème aujourd'hui, après un BSoD en essayant de pousser. Il le devait:
.hg/store/lock
(selon la réponse acceptée ).hg/store/phaseroots
(selon ce rapport de bogue de TortoiseHG )Puis son repo a de nouveau fonctionné.
EDIT: Selon le commentaire de @ Marmoute - lorsqu'il s'agit de problèmes liés aux verrous, l'utilisation
hg debuglock
est une alternative plus sûre à la suppression aveugle du.hg/store/lock
fichier.la source
Je connais très bien le code de verrouillage de Mercurial (depuis la version 1.9.1). Le conseil ci-dessus est bon, mais j'ajouterais que:
(Pour les curieux: je n'ai pas encore pu identifier la cause de ce problème, mais je soupçonne qu'il s'agit soit d'une ancienne version de Mercurial accédant au référentiel, soit d'un problème dans l'appel socket.gethostname () de Python sur certaines versions de Windows.)
la source
J'ai eu le même problème sur Win 7. La solution était de supprimer les fichiers suivants:
Quant à .hg / store / lock - il n'y avait pas un tel fichier.
la source
hg debuglock
pour comprendre ce qui se passe et terminer le processus de maintien du verrou.Je ne m'attends pas à ce que ce soit une réponse gagnante, mais c'est une situation assez inhabituelle. Mentionner au cas où quelqu'un d'autre que moi le rencontrerait.
Aujourd'hui, j'ai obtenu le "attente de verrouillage sur le référentiel" sur une commande hg push.
Quand j'ai tué la commande hg bloquée, je ne voyais aucun .hg / store / lock
Lorsque j'ai recherché .hg / store / lock alors que la commande était suspendue, elle existait. Mais le fichier de verrouillage a été supprimé lorsque la commande hg a été supprimée.
Quand je suis allé à la cible du push, et que j'ai exécuté le hg pull, pas de problème.
Finalement, j'ai réalisé que l'ID de processus sur la poussée hg était un message d'attente de verrouillage qui changeait à chaque fois. Il s'avère que le "hg push" était suspendu en attendant un verrou maintenu par lui-même (ou peut-être un sous-processus, je n'ai pas enquêté plus avant).
Il s'avère que les deux espaces de travail, appelons-les A et B, avaient des arbres .hg partagés par symlink:
Ce n'est PAS une bonne chose à faire avec Mercurial. Mercurial ne comprend pas le concept de deux espaces de travail partageant le même référentiel. Je comprends, cependant, comment quelqu'un venant à Mercurial d'un autre VCS pourrait vouloir cela (Perforce le fait, mais pas un DVCS; le Bazaar DVCS pourrait le faire). Je suis surpris qu'un REP-ROOT / .hg avec lien symbolique fonctionne du tout, bien qu'il semble excepter cette poussée.
la source
.hg/
? Lorsque vous dites que les référentiels «fonctionnent», le fait de fonctionnerhg up
dans l'un ne désynchronise pas les autres - ou est-ce que mercurial fait quelque chose de spécial pour soutenir cela?J'ai eu le même problème. Vous avez le message suivant lorsque j'ai essayé de valider:
hg debuglock
a montré ceci:J'ai donc fait la commande suivante, et cela a résolu le problème pour moi:
Utilisation de Win7 et TortoiseHg 4.8.7.
la source
Si le dépôt verrouillé était l'original, je ne peux pas imaginer qu'il modifiait pour le cloner, donc cela vous empêchait seulement de le changer au milieu et de gâcher le clone. Ça devrait aller après avoir retiré le verrou.
La nouvelle copie clonée (s'il s'agissait d'un clone local) peut cependant être dans n'importe quel état mal formé, vous devez donc la jeter et la recommencer. (S'il s'agissait d'un clone distant, j'espère qu'il a échoué et qu'il a déjà jeté la copie incomplète.)
la source
J'ai rencontré ce problème sur Mac OS X 10.7.5 et Mercurial 2.6.2 en essayant de pousser. Après la mise à niveau vers Mercurial 3.2.1, j'ai obtenu "aucune modification trouvée" au lieu de "attendre le verrouillage du référentiel". J'ai découvert que le chemin par défaut avait été réglé pour pointer vers le même référentiel, il n'est donc pas trop surprenant que Mercurial soit confus.
la source
path
réglage était le coupable.Si cela ne se produit que sur les lecteurs mappés, il peut s'agir du bogue https://bitbucket.org/tortoisehg/thg/issue/889/cant-commit-file-over-network-share . L'utilisation du chemin UNC au lieu de la lettre de lecteur semble contourner le problème.
la source