Pergunta

Atualização:Acabamos usando um processo muito parecido com este esquema (graças a neuro para o link).Nós massageava as repositório em um estado onde o padrão é estável (e tem o mesmo código que o nosso ambiente de produção), temos um dev ramo, recurso ramos para novas coisas e usar de lançamento ramos para lançamentos.Tudo parece estar funcionando perfeitamente.

História

A nossa equipa tem recentemente trocou de usar o SVN (usando ToroiseSVN cliente do Windows) para Mercurial (usando o TortoiseHg cliente do Windows) para o controle de versão.Temos exportado com êxito de nosso repositório SVN e importados-lo em um repositório Mercurial.

Agora temos um repositório Mercurial, onde podemos ver todo o histórico de revisões (changesets em Mercurial).

Como fizemos nos velhos tempos

A vida era mais simples nos dias antigos;nosso processo de desenvolvimento não foi realmente multi-stream, como é agora.O tronco foi utilizado para conter todo o código - até mesmo alterações que ainda estavam em voo (contanto que ele não quebrar o tronco).Quando ele veio para o gerenciamento de versões com o CVS, gostaríamos de checkout tronco (que contém todo o código), reverter as alterações individuais não queríamos como parte do lançamento, e criar um marca por isso.

Cherrypicking o código queremos com o SVN era fácil.Erro de fixação de versões anteriores para garantir que fazia parte do tronco era simples demais.

O que estamos fazendo agora

Em Mercurial, precisamos ser capazes de obter um instantâneo do "tronco" (padrão em Mercurial) com alterações individuais revertido para fora.Podemos fazer isso usando hg reverter.

Para instantâneo isso, criamos um "chamado de ramo" - vamos chamá-lo de Construir-4.0.1 por agora.

Onde o desafio que se coloca

O desenvolvimento continua padrão como é normal quando um erro é encontrado em Construir-4.0.1.Vamos assumir que o erro é um dos revertido arquivos.Vamos alterar o código do ramo para Construir-4.0.1, criar um novo "nome" ramificação (Construir-4.0.2) e deseja série ele volta para padrão sem puxar a revertido código sobre a parte superior do código mais recente.Como podemos fazer isso?

Como alternativa, há um melhor fluxo de trabalho para gerenciar a lança e o nosso código em Mercurial?Eu gosto muito do visual do maravilhoso PARA responder sobre o gerenciamento de liberação ramos, embora eu não sou certo como podemos transição para ele a partir do estado em que estamos agora (com o voo coisas em padrão).

Nota:Eu olhei para o Transplante de extensão, mas não o usei ainda poderia ser parte da solução para este desafio?

Foi útil?

Solução

Bem, para começar, o uso de reverter parece estranho para mim.Geralmente, é utilizado para reverter as modificações feitas para a cópia de trabalho de volta para a versão do repositório.

A maneira usual de se obter a cópia de trabalho para algum ponto para trás é a atualização :

hg update -r 1234

a partir daí, você pode marcar, modificar, commit, etc.

A série de volta, você só tem que mesclar o seu ramo de lançamento para o padrão de ramificação.Ele vai funcionar como um encanto, a menos que ele é diferente/idade de um lançamento.

Transplante funciona bem, mas fazer algo um pouco diferente da série :levar o changeset como um "diff" e aplicá-la como uma nova modificação.

Para gerenciar seus releases, você pode olhar para esta outra resposta (por mim) :

Como usar o mercurial para o gerenciamento de liberação?

O que usamos é um clone / é o principal ramo que possui o maior versão estável, que é disponibilizado em alguns pontos.Neste clone :ramo, podemos corrigir erros críticos (correcção).Em paralelo, nós usamos um dev clone / é o ramo para se desenvolver.Os hotfixes são mesclar tão logo concluída a partir estável para dev.Quando o atual desenvolvimento é feito, vamos mesclar o dev estável / padrão.

Este esquema é muito bom para entender as coisas :)

Boa sorte !

Outras dicas

Passar por todas as alterações e retirar as que você não quer não é uma maneira comum de criar uma versão, para dizer o mínimo. A seção Common Branching Patterns no livro SVN sugere alguns fluxos de trabalho mais populares:

  • ramos de lançamento : crie ramos de lançamento a partir de um tronco instável, corrija bugs para estabilizá-lo, selecione cuidadosamente as correções de bugs entre eles enquanto o ramo está em modo de manutenção.
  • ramos de recursos : mantenha o tronco estável e pronto para o lançamento mesclando apenas os ramos de recursos que você deseja

O segundo é provavelmente o que melhor se encaixa aqui, porque oferece um local para colocar alterações experimentais ou arriscadas até que você se sinta confiante sobre elas - essas são as alterações que você teria revertido antes de um lançamento em seu antigo fluxo de trabalho.

Ambos os padrões de ramificação devem ser transferidos perfeitamente para mercurial. Caso opte pela primeira abordagem, observe que o mercurial (desde 2.0) agora tem um comando enxerto , você não precisa mais da extensão do transplante.

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