Pergunta

Eu terminei trabalhando em um feature-x recurso ramo. Quero resultados da mesclagem voltar ao ramo default e perto feature-x, a fim de se livrar dele na saída do hg branches.

Eu vim com o seguinte cenário, mas tem alguns problemas:

$ hg up default
$ hg merge feature-x
$ hg ci -m merge
$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch

Assim, o ramo feature-x (changests 40-41) está fechado, mas há um novo chefe , o conjunto de alterações 44 ramo de encerramento, que serão listados no hg heads cada vez:

$ hg log ...
o  44 Closed branch feature-x
|
| @  43 merge
|/|
| o  42 Changeset C
| |
o |  41 Changeset 2
| |
o |  40 Changeset 1
|/
o  39 Changeset B
|
o  38 Changeset A
|

Atualizar :. Parece que desde a versão 1.5 Mercurial não mostra chefes de agências fechadas na saída do hg heads mais

É possível fechar um ramo mesclada sem sair de mais uma cabeça? Existe maneira mais correta para fechar um ramo de funcionalidade?

Perguntas relacionadas:

Foi útil?

Solução

Uma maneira é deixar apenas fundiu ramos recurso aberto (e inativos):

$ hg up default
$ hg merge feature-x
$ hg ci -m merge

$ hg heads
    (1 head)

$ hg branches
default    43:...
feature-x  41:...
    (2 branches)

$ hg branches -a
default    43:...
    (1 branch)

Outra maneira é fechar um ramo de recurso antes de se fundir com um extra de cometer:

$ hg up feature-x
$ hg ci -m 'Closed branch feature-x' --close-branch
$ hg up default
$ hg merge feature-x
$ hg ci -m merge

$ hg heads
    (1 head)

$ hg branches
default    43:...
    (1 branch)

O primeiro é mais simples, mas deixa um ramo aberto. O segundo não deixa aberta cabeças / ramos, mas requer mais um auxiliar cometer. Pode-se combinar o último real comprometer com o ramo de funcionalidade com este extra de commit utilizando --close-branch, mas deve-se saber com antecedência quais cometer será a última.

Atualizar : Desde Mercurial 1.5 pode fechar a filial em qualquer momento, por isso não vai aparecer em ambos hg branches e hg heads mais. A única coisa que poderia irritá-lo é que, tecnicamente, o gráfico de revisões ainda terá mais uma revisão sem childen.

Update 2 : Desde Mercurial 1.8 marcadores se tornaram uma característica central do Mercurial. Marcadores são mais conveniente para ramificação de ramos nomeados. Veja também esta pergunta:

Outras dicas

imho há dois casos para ramos que foram esqueceu de fechar

Caso 1: ramo não foi incorporada padrão

nesta atualização caso eu para o ramo e fazer outra comprometer com --close-ramo, infelizmente este elege o ramo para se tornar a nova ponta e, portanto, antes de empurrá-lo para outros clones I certifique-se de que a ponta verdadeiro recebe um pouco mais mudanças e outros não ficar confuso sobre essa dica estranha.

hg up myBranch
hg commit --close-branch

Caso 2: ramo foi incorporada padrão

Este caso não é muito diferente de caso 1 e pode ser resolvido por reproduzir os passos para o caso 1 e dois outros adicionais.

Neste I atualização caso para o conjunto de alterações ramo, fazer outra comprometer com --close-ramo e mesclar o novo changeset que se tornou a ponta em default. a última operação cria uma nova dica que está no ramo padrão - HOORAY

hg up myBranch
hg commit --close-branch
hg up default
hg merge myBranch

Espero que isso ajude futuros leitores.

Editar ouch, tarde demais ... Eu sei ler o seu comentário afirmando que pretende manter o longa-x de alterações ao redor, então a abordagem de clonagem aqui não funciona.

Eu ainda vou deixar a resposta aqui para que possa ajudar os outros.

Se você quiser se livrar completamente do "recurso X", porque, por exemplo, não funcionou, você pode clonar. Este é um dos o método explicado no artigo e ele faz o trabalho, e ele fala especificamente sobre as cabeças.

Tanto quanto eu entendo que você tem isso e quer se livrar da cabeça "característica-x" uma vez por todas:

@    changeset:   7:00a7f69c8335
|\   tag:         tip
| |  parent:      4:31b6f976956b
| |  parent:      2:0a834fa43688
| |  summary:     merge
| |
| | o  changeset:   5:013a3e954cfd
| |/   summary:     Closed branch feature-x
| |
| o  changeset:   4:31b6f976956b
| |  summary:     Changeset2
| |
| o  changeset:   3:5cb34be9e777
| |  parent:      1:1cc843e7f4b5
| |  summary:     Changeset 1
| |
o |  changeset:   2:0a834fa43688
|/   summary:     Changeset C
|
o  changeset:   1:1cc843e7f4b5
|  summary:     Changeset B
|
o  changeset:   0:a9afb25eaede
   summary:     Changeset A

Assim que você fizer isso:

hg clone . ../cleanedrepo --rev 7

E você vai ter o seguinte, e você verá que o recurso-x é realmente ido:

@    changeset:   5:00a7f69c8335
|\   tag:         tip
| |  parent:      4:31b6f976956b
| |  parent:      2:0a834fa43688
| |  summary:     merge
| |
| o  changeset:   4:31b6f976956b
| |  summary:     Changeset2
| |
| o  changeset:   3:5cb34be9e777
| |  parent:      1:1cc843e7f4b5
| |  summary:     Changeset 1
| |
o |  changeset:   2:0a834fa43688
|/   summary:     Changeset C
|
o  changeset:   1:1cc843e7f4b5
|  summary:     Changeset B
|
o  changeset:   0:a9afb25eaede
   summary:     Changeset A

Talvez eu tenha entendido mal o que você queria, mas por favor, não mod para baixo, eu levei tempo reproduzindo seu caso de uso:)

É estranho, que ninguém ainda sugeriu a maneira mais robusta de fechar uma característica ramos ... Você pode apenas combinar merge comprometer com a bandeira --close-branch (ou seja, enviar arquivos modificados e perto do ramo simultaneamente):

hg up feature-x
hg merge default
hg ci -m "Merge feature-x and close branch" --close-branch
hg branch default -f

Então, isso é tudo. Ninguém cabeça extra em revgraph. No extra cometer.

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