Obteve uma tela azul no Windows enquanto clonava um repositório mercurial.
Após a reinicialização, agora recebo esta mensagem para quase todos os comandos hg:
c: \ src \> hg commit aguardando bloqueio no repositório c: \ src \ McVrsServer mantido por '\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 ' interrompido!
Google não ajuda.
Alguma dica?
Respostas:
Ao "aguardar bloqueio no repositório", exclua o arquivo do repositório:
.hg/wlock
(ou pode estar dentro
).hg/store/lock
Ao excluir o arquivo de bloqueio, verifique se nada mais está acessando o repositório. (Se o bloqueio for uma sequência de zeros ou em branco, isso é quase certo).
fonte
hg recover
deve ser executado após uma situação de bloqueio quebrado.Quando
waiting for lock on working directory
, apague.hg/wlock
.fonte
server:pid
. Muito obrigado. Então tive que correr$ hg recover
para limpar o diário existente (e confirmar a mensagem) quectrl+c
editei. Não tenho certeza, mas você pode executar$ hg recover
sem excluir o arquivo de bloqueio e ele fará isso por você. Vale uma chance, suponho.Eu tive esse problema sem arquivos de bloqueio detectáveis. Encontrei a solução aqui: http://schooner.uwaterloo.ca/twiki/bin/view/MAG/HgLockError
Aqui está uma transcrição do console do Tortoise Hg Workbench
Depois disso, a atração abortada foi executada com sucesso.
O bloqueio havia sido definido há mais de 2 anos, por um processo em uma máquina que não está mais na LAN. Que vergonha para os desenvolvedores de hg: a) não documentarem adequadamente os bloqueios; b) não marcá-los com carimbo de data / hora para remoção automática quando ficarem obsoletos.
fonte
wlock
é o preso, usohg debuglocks --force-wlock
O colega de trabalho teve esse problema exato hoje, depois de um BSoD ao tentar empurrar. Ele teve que:
.hg/store/lock
(conforme a resposta aceita ).hg/store/phaseroots
(conforme este relatório de bug do TortoiseHG )Então seu repo funcionou novamente.
EDIT: De acordo com o comentário de @ Marmoute - ao lidar com problemas relacionados a bloqueios, usar
hg debuglock
é uma alternativa mais segura para excluir cegamente o.hg/store/lock
arquivo.fonte
Estou muito familiarizado com o código de bloqueio do Mercurial (a partir de 1.9.1). O conselho acima é bom, mas eu acrescentaria que:
(Para quem está curioso: ainda não consegui entender a causa desse problema, mas desconfio que seja uma versão mais antiga do Mercurial acessando o repositório ou um problema no socket.gethostname () do Python chamar determinadas versões do Windows.)
fonte
Eu tive o mesmo problema no Win 7. A solução foi remover os seguintes arquivos:
Quanto a .hg / store / lock - não havia esse arquivo.
fonte
hg debuglock
para descobrir o que está acontecendo e encerrar o processo segurando a trava.Não espero que seja uma resposta vencedora, mas é uma situação bastante incomum. Mencionando no caso de alguém que não seja eu.
Hoje recebi o "aguardando bloqueio no repositório" em um comando hg push.
Quando eu matei o comando hg desligado, não pude ver .hg / store / lock
Quando procurei .hg / store / lock enquanto o comando estava travado, ele existia. Mas o arquivo de bloqueio foi excluído quando o comando hg foi morto.
Quando fui ao alvo do push e executei hg pull, não há problema.
Eventualmente, percebi que o ID do processo no hg push era bloqueado, a mensagem em espera estava mudando a cada vez. Acontece que o "hg push" estava pendurado, aguardando uma trava mantida sozinha (ou possivelmente um subprocesso, não investiguei mais).
Acontece que os dois espaços de trabalho, vamos chamá-los de A e B, tinham árvores .hg compartilhadas pelo link simbólico:
Isso não é uma coisa boa a fazer com o Mercurial. O Mercurial não entende o conceito de dois espaços de trabalho que compartilham o mesmo repositório. Eu entendo, no entanto, como alguém que vem para a Mercurial de outro VCS pode querer isso (a Perforce, embora não seja um DVCS; o Bazaar DVCS pode fazê-lo). Estou surpreso que um REP-ROOT / .hg com link simbólico funcione, embora pareça exceto esse impulso.
fonte
.hg/
? Quando você diz que os repositórios “funcionam”, a execuçãohg up
em um não deixa o estado estável fora de sincronia no outro - ou o mercurial faz algo especial para apoiar isso?Eu tive o mesmo problema. Recebi a seguinte mensagem quando tentei confirmar:
hg debuglock
mostrou isso:Então, eu fiz o seguinte comando, e isso corrigiu o problema para mim:
Usando Win7 e TortoiseHg 4.8.7.
fonte
Se o repositório bloqueado era o original, não consigo imaginar que o estava modificando para cloná-lo, por isso estava apenas impedindo que você o alterasse no meio e estragasse o clone. Deve ficar bem depois de remover a trava.
A nova cópia clonada (se fosse um clone local) pode estar em qualquer tipo de estado incorreto; portanto, você deve descartá-la e iniciá-la novamente. (Se fosse um clone remoto, espero que tenha falhado e já tenha jogado fora a cópia incompleta.)
fonte
Encontrei esse problema no Mac OS X 10.7.5 e no Mercurial 2.6.2 ao tentar enviar por push. Após a atualização para o Mercurial 3.2.1, obtive "nenhuma alteração encontrada" em vez de "aguardar o bloqueio no repositório". Descobri que, de alguma forma, o caminho padrão foi definido para apontar para o mesmo repositório, portanto, não é de surpreender que o Mercurial fique confuso.
fonte
path
cenário foi o culpado.Se isso acontecer apenas em unidades mapeadas, pode ser um bug https://bitbucket.org/tortoisehg/thg/issue/889/cant-commit-file-over-network-share . O uso do caminho UNC em vez da letra da unidade parece contornar o problema.
fonte