Incapaz de fundir em mercurial
Pergunta
Eu sou um recém-chegado ao mercurial. Tenho recentemente configurar um repositório com 2 colegas e estou tendo dificuldade com empurrando meu código. [Eu estou usando linha de comando hg no Windows]. Em particular, quando eu empurro eu recebo um diálogo como o seguinte:
>hg commit -u petermr
>hg push
pushing to http://bitbucket.org/petermr/polyinfo/
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)
>hg merge
abort: there is nothing to merge
>hg status
eu tenho medo de cometer usando impulso -f como penso que irá criar múltiplas cabeças e causar problemas para o nosso grupo.
Quando tento mesclar eu recebo um diálogo algo como:
>hg merge -f
merging src/test/resources/PMR/algorithm/cmlAll.xml
output file src/test/resources/PMR/algorithm/cmlAll.xml appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/irregular/cmlAll.xml
output file src/test/resources/PMR/irregular/cmlAll.xml appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/massChange/cmlAll.xml
output file src/test/resources/PMR/massChange/cmlAll.xml appears unchanged
was merge successful (yn)? y
Uma vez que existem várias centenas de arquivos eu não posso digitar "y" para cada um e eu não consigo encontrar uma maneira de fundir-los todos juntos.
Atualizar Eu tentei o primeiro (2) respostas e ainda tem um problema:
>hg pull
pulling from http://bitbucket.org/petermr/polyinfo/
searching for changes
no changes found
>hg merge
abort: outstanding uncommitted merges
Atualizar em resposta a @tonfa Não posso me comprometer:
>hg commit
abort: unresolved merge conflicts (see hg resolve)
Atualizar @balpha (eu mudei o nome do proprietário para Foo)
>hg parent
changeset: 24:9ec904d2d5a2
tag: tip
user: petermr
date: Sat Jan 09 16:40:38 2010 +0000
summary: trying to sync
changeset: 22:360aedb72f0e
parent: 21:89c4bd671bd3
parent: 18:3cffa8ca3a2a
user: Foo (not me)
date: Fri Jan 08 16:15:50 2010 +0000
summary: merged
>hg tip
changeset: 24:9ec904d2d5a2
tag: tip
user: petermr
date: Sat Jan 09 16:40:38 2010 +0000
summary: trying to sync
Atualizar
cabeças de hg
changeset: 24:9ec904d2d5a2
tag: tip
user: petermr
date: Sat Jan 09 16:40:38 2010 +0000
summary: trying to sync
changeset: 22:360aedb72f0e
parent: 21:89c4bd671bd3
parent: 18:3cffa8ca3a2a
user: Foo (not me)
date: Fri Jan 08 16:15:50 2010 +0000
summary: merged
Atualizar na sequência de comentários @balpha abaixo que sugere revert que pede um Revison (isto é um número? Se sim, como posso encontrá-lo?)
>hg revert --all
abort: uncommitted merge - please provide a specific revision
Atualizar ainda não pode mesclar ...
>hg revert --all -r tip
reverting .hgignore
reverting .hgignore~
reverting src\test\java\org\xmlcml\cml\converters\polyinfo\RegressionTest.java
reverting src\test\resources\PMR\algorithm\cmlAll.xml
reverting src\test\resources\PMR\irregular\cmlAll.xml
reverting src\test\resources\PMR\massChange\cmlAll.xml
reverting src\test\resources\PMR\massChangeOk\cmlAll.xml
reverting src\test\resources\PMR\ok\P340076.both.svg
reverting src\test\resources\PMR\ok\P340076.p.svg
reverting src\test\resources\PMR\ok\P340076.r.svg
reverting src\test\resources\PMR\ratio\cmlAll.xml
>hg status
M .hgignore
M .hgignore~
M src\test\resources\PMR\algorithm\cmlAll.xml
M src\test\resources\PMR\irregular\cmlAll.xml
M src\test\resources\PMR\massChange\cmlAll.xml
M src\test\resources\PMR\massChangeOk\cmlAll.xml
M src\test\resources\PMR\ok\P340076.both.svg
M src\test\resources\PMR\ok\P340076.p.svg
M src\test\resources\PMR\ok\P340076.r.svg
M src\test\resources\PMR\ratio\cmlAll.xml
? src\test\resources\PMR\bug\P020006work.both.svg
? src\test\resources\PMR\irregular\cmlAll.xml.resolve
>hg merge
abort: outstanding uncommitted merges
>hg commit
abort: unresolved merge conflicts (see hg resolve)
Note que
hg resolve -all
traz à tona o problema original de ter que responder "y" a centenas de perguntas individuais e eu não sei então se vai resolver o problema. Sua ajuda é muito apreciada!
Atualizar @balpha sugeriu limpeza - este parece ter progressos realizados
>hg update --clean -r tip
10 files updated, 0 files merged, 0 files removed, 0 files unresolved
>hg merge
merging src/test/resources/PMR/algorithm/cmlAll.xml
output file src/test/resources/PMR/algorithm/cmlAll.xml appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/irregular/cmlAll.xml
output file src/test/resources/PMR/irregular/cmlAll.xml appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/massChange/cmlAll.xml
output file src/test/resources/PMR/massChange/cmlAll.xml appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/massChangeOk/cmlAll.xml
output file src/test/resources/PMR/massChangeOk/cmlAll.xml appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/ok/P340076.both.svg
output file src/test/resources/PMR/ok/P340076.both.svg appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/ok/P340076.p.svg
output file src/test/resources/PMR/ok/P340076.p.svg appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/ok/P340076.r.svg
output file src/test/resources/PMR/ok/P340076.r.svg appears unchanged
was merge successful (yn)? y
merging src/test/resources/PMR/ratio/cmlAll.xml
output file src/test/resources/PMR/ratio/cmlAll.xml appears unchanged
was merge successful (yn)? y
2 files updated, 8 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
>hg merge
abort: outstanding uncommitted merges
>hg merge -f
abort: outstanding uncommitted merges
>hg commit -u petermr -m "still trying to sy
nc"
>hg merge
abort: there is nothing to merge
>hg push
pushing to http://bitbucket.org/petermr/polyinfo/
searching for changes
http authorization required
realm: Bitbucket.org HTTP
user: petermr
password:
adding changesets
adding manifests
adding file changes
added 4 changesets with 298 changes to 290 files
bb/acl: petermr is allowed. accepted payload.
quota: 13.3 MB in use, 150.0 MB available (8.87% used)
Solução
Seu clone local do repo provavelmente não é up-to-date. Fazer um
hg pull
para mudar isso. Agora você tem duas cabeças localmente (seu próprio dica anterior ea ponta do repo bitbucket). Agora
hg merge
para mesclar as duas cabeças e
hg commit -m "Merged before pushing"
Agora, o seu repo local tem apenas uma cabeça, e esta cabeça é uma criança da cabeça bitbucket, então empurrando vontade não criar uma cabeça remota mais:
hg push
e está feito.
Outras dicas
Antes de empurrar código para um repositório remoto, primeiro garantir a sua repo local é limpo e não tem fusões pendentes.
Em seguida, faça um puxão hg a partir do repositório remoto. Isto irá criar 2 cabeças em seu repositório local.
fazer uma junção local, e comprometer-se (resolução de conflitos).
Finalmente, empurrar para o repositório remoto.
Do not, em geral, empurrar para um repositório remoto se várias cabeças será criado lá.
Você não pode querer cometer o merge mesmo localmente. A maneira de limpar para fora e começar tudo de novo (de https://www.mercurial-scm.org / BTS / issue1533 ) parece ser "hg -C update".
Como mencionado acima, parece que "hg revert -a" deve trabalho, mas não parece.
Use a ferramenta de linha de comando TortoiseHg em vez de, é mais simples e graficamente mostra o estado do repositório, assim você não vai ser confundido com todos os comandos.
Eu tive um problema muito semelhante. Acabou a causa raiz é a "excluir" extensão do Mercurial. Ao desligar a extensão temporariamente, o problema foi corrigido. Referindo-se à página de "excluir" extensão, proprietário admitiu que é um problema conhecido.