Como você lida com o ramo padrão no Mercurial?

3

Temos um repositório com duas ramificações nomeadas: dev e production . Há também a ramificação default , que não estamos usando. Infelizmente, sempre que as pessoas clonam o repositório, elas são colocadas automaticamente em default e estamos tendo problemas porque as pessoas inadvertidamente se comprometerão com isso.

Existe uma maneira de excluir a ramificação default , ou desativá-la, ou definir o Mercurial para que os clones iniciem automaticamente na ramificação dev ?

    
por Chris B. 11.10.2010 / 20:24

3 respostas

3

A documentação do Mercurial tem alguns exemplos de ganchos de pré-referência e um, ironicamente, é verificar o nome da ramificação. No exemplo, ele verifica se ele corresponde a uma expressão regular. Você pode ajustá-lo para garantir que o nome não seja "padrão".

Isso pode não impedir que os clones iniciem na ramificação "padrão", mas, pelo menos com esse gancho no lugar, ninguém pode colocar qualquer código em "padrão".

    
por 13.10.2010 / 13:43
4

Esta resposta ficou desatualizada: agora você pode adicionar um marcador @ e o Mercurial 2.4 e posterior fará o check-out automático de um novo clone. Seus usuários terão que ter o cuidado de manter o marcador @ apontado para a cabeça de ramificação que eles desejam.

Você não pode transformar outra ramificação na ramificação default , o que significa que você não pode dizer ao Mercurial que gostaria que branch-X fosse registrada em um novo clone. Você sempre deve tornar default a ramificação da filial que os usuários desejam fazer o checkout. Isso é descrito no wiki .

As pessoas às vezes tentam excluir a ramificação default . Isso pode ser feito não criando um em primeiro lugar:

$ hg init repo
$ cd repo
$ hg branch dev
$ hg commit -m "Ha, no default branch!"

Quando não houver uma ramificação default presente, hg clone verificará o changeset da ponta. Esta é uma idéia ruim , já que este changeset muda toda vez que algo é enviado ao repositório. Portanto, se você tiver uma ramificação dev e prod no repositório, um novo clone fará o check-out de um conjunto de alterações "aleatório", dependendo de onde o último commit foi feito. Isso é ainda mais confuso do que ensinar às pessoas que default significa "o ramo normal onde você deve trabalhar por padrão".

    
por 23.12.2011 / 18:37
0

Existe alguma razão pela qual você não poderia simplesmente fazer o seu desenvolvimento em Default, e quando ele é liberado para produção, você então o ramifica para Produção?

UPDATE : atendendo ao seu pedido, você tentou usar Ramificações nomeadas explicitamente em seus comandos?

    
por 12.10.2010 / 15:38

Tags