Pergunta

Estou trabalhando em um projeto em que tenho uma confirmação que introduziu um recurso com grandes problemas que não foram descobertos imediatamente. Agora, quero remover completamente essa revisão, mantendo o trabalho seguindo -o, mas estou tendo dificuldade em envolver minha cabeça por essa fusão de três vias. Aqui está um gráfico simplificado do meu projeto.

o  changeset:   134:7f81764aa03a
|  tag:         tip
|  parent:      128:451d8a19edea
|  summary:     Backed out changeset 451d8a19edea
|
| @  changeset:   133:5eefa40e2a29
| |  summary:     (Change I need to keep keep)
| |
*snip 3 commits*
| o  changeset:   129:5f6182a97d40
|/   summary:     (Change I need to keep keep)
|
o  changeset:   128:451d8a19edea
|  summary:     (Change that introduced a major problem)
|
o  changeset:   127:4f26dc55455d
|  summary:     (summary doesn't matter for this question)

Se eu entendo isso corretamente, R127 e R134 são exatamente iguais. Quando eu hg up -C -r 133 e depois corra hg merge, Meld aparece com três formas de um dos meus arquivos: local, base e outros. O local parece ser R133, mas estou tendo dificuldade em entender o que "base" e "outro" significam.

Foi útil?

Solução

Local é R133

Outro é R134

Base é R128 (o ancestral comum para R133 e R 134)

Quando você realiza uma mesclagem de 3 vias, ele compara os três juntos para ajudá -lo a decidir o que levar e de onde. Ao ver o que é a mudança na outra revisão e o que o ancestral comum parecia ser capaz de tomar uma decisão muito mais informada sobre o que manter e o que mudar.

Outras dicas

Sua pergunta é realmente confusa, mas aqui estão algumas informações que podem ajudá -lo.

  • O que é base?

A base é a versão não modificada da revisão que você fez o check -out e trabalhou. onde possivelmente outras mudanças se afastaram (você pode ter revisões entre o local atual e a base!). É exatamente onde a revisão mais próxima, onde nenhum outro garfo desviou depois (o mesmo pai) (no seu caso R128)

  • O que é a cabeça?

Head é a revisão mais recente no controle de versão. Se você trabalha sozinho em apenas uma cópia, provavelmente será base. Mas um trabalhador de CO pode ter modificado o mesmo arquivo e verificado no controle da versão, a cabeça é posterior à sua base.

  • O que é local?

Local é a sua versão modificada (no seu caso R133)

  • O que é o outro?

Outros são alguns fork/ramo que também possui sua base como pai (no seu caso R134)

  • Como funciona a mesclagem de três vias?

A mesclagem de 3 vias funciona (pelo menos em MELD) hierarquicamente. geralmente da esquerda para a direita assim:

Local> Base> Outra / Cabeça

Local/base é principalmente trivial porque é exatamente o que você modificou

Em seguida, você pode mesclar suas mudanças na revisão da cabeça ou a de seu funcionário ou qualquer outra coisa.

Pode haver várias outras revisões de cabeça/cabeça, mas não é seu trabalho se fundir e, portanto, mais de 3 vias comparar não faz sentido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top