Mesclar apenas uma ramificação remota em uma ramificação local com o Mercurial

1

Eu quero gerenciar alguns perfis como arquivos XML em repositórios do Mercurial.

A configuração em que estou pensando: Cada usuário tem um repositório com uma ramificação onde gerencia seu próprio perfil e várias ramificações onde ele pode extrair e mesclar outros perfis desse ramo de outro usuário.

Por exemplo, tenho meu próprio ramo de perfil e um ramo rotulado de amigos, no qual quero extrair os ramos de perfil de alguns repositórios remotos, para coletar como uma coleção de perfis.

Descobri que, como os repositórios não são relacionados, preciso usar -f, mas não consigo descobrir como puxar e mesclar apenas um único ramo em outro.

Então eu quero gostar

me           friend       someone

profile ---> friends <--- profile
         \-> family

friends <--- profile

Isso é possível? Devo usar repos separados em vez disso? Existe uma solução melhor?

    
por Pepijn 24.03.2010 / 21:13

1 resposta

3

Acho que o truque aqui é usar ramificações nomeadas.

Para cada usuário, crie uma ramificação nomeada separada. Quando eles pressionam / puxam entre seus repositórios e qualquer um, eles recebem todas as mudanças que outras pessoas cometeram, mas eles só atualizarão para os conjuntos de alterações da sua própria ramificação e se comprometerão com sua própria ramificação.

Se um usuário quiser incorporar alterações de outro usuário, ele mesclará esse changeset em sua própria ramificação, fazendo backup de quaisquer changesets que eles realmente não desejarem.

Por exemplo:

    --> B1 ---> B2 ---> B3
   /                \
A1 ---> A2 ---> A3 ---> A4 ---> A5 ---> A6
   \                        X
    --> C1 ---> C2 ---> C3 ---> C4

O usuário da filial A quer as mudanças B adicionadas nas revisões B1 & B2, então, mescla B2 em A3, configurando-o como A4. O usuário B não quer as mudanças de A, por isso não combina em A3 ou A4 e apenas cria um novo B3.

O usuário C quer todas as alterações do A4, então o mescla no C3 para criar o C4.

No entanto, o usuário A quer tudo que C fez além de C1, então A mescla C3 em A4, criando A5 e depois usa back-out para desfazer as alterações em C1, criando A6. A partir de então, sempre que a ramificação C for mesclada na ramificação A, não haverá alterações em C1.

O usuário C agora precisa ser cuidadoso. Se A6, ou um de seus decendentes, for mesclado novamente em C4, então o backout de C1 também será mesclado.

Espero que isso ajude,

Edit: Para mais informações sobre a ramificação e fusão do Mercurial, você pode fazer pior do que verificar o entrada de blog .

Das opções listadas, a técnica clone é a mais fácil de começar, mas basta um pull inadequado e você deixa de saber quais partes do branch são quais e tudo fica confuso. As agências nomeadas facilitam muito a tarefa quando você pega o jeito delas.

    
por 24.03.2010 / 21:48