Lendo algumas respostas "Por que um DVCS é melhor", responde a várias perguntas sobre programadores. Parece que todos dizem que, em geral, o DVCS é melhor, já que você não tem uma corrida de consolidação em grandes projetos, IE commit, desatualizada. atualizar, confirmar, desatualizado novamente, confirmar, ainda desatualizado etc.
O DVCS limita isso com o conceito de push. No entanto, em projetos muito grandes, não haveria uma "corrida de empurrão", especialmente no final do dia? Eu sei que no Git isso é um pouco remediado pela constante ramificação de tudo, mas no Mercurial você não ramifica, cria uma nova cabeça.
Problema que vejo
- O usuário tenta enviar
- Desatualizado (o mercurial não permitirá que você pressione se o seu repositório local estiver desatualizado), para que você puxe e mescle suas alterações locais
- O usuário tenta enviar por push novamente, mas enquanto eles estavam mesclando alguém enviado por push, está desatualizado novamente
- Puxe e junte novamente
- Ainda desatualizado
- Repetir
Soa familiar?
Este é um problema real com repositórios mercuriais muito grandes e populares? E dentro de uma empresa, quando todo mundo faz o esforço final do dia?
hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
--close-branch
ao cometer - e mercurial nomeou ramos, você não tem que clone para um novo diretórioRespostas:
Até onde eu sei, a maioria dos grandes projetos de código-fonte aberto que usam o DVCS usa "solicitações pull" em vez de "push", ou seja, um usuário solicita que o projeto puxe de sua ramificação, e o prject pode optar por realizar essas solicitações pull em qualquer ordem , se houver. Isso elimina as necessidades da "corrida de empurrão", como você nomeou.
Em outras empresas, não posso garantir o processo, mas onde trabalho não é um problema.
Veja que, quando você está trabalhando em um caso, está trabalhando em uma ramificação de todo o repositório, então suas solicitações de envio vão para uma versão remota do tronco principal. Quando você deseja integrar sua alteração (concluída) ao tronco, você carrega o tronco, puxa, funde, empurra.
Ocasionalmente ( muito ocasionalmente), duas pessoas tentam fazer isso ao mesmo tempo (normalmente devido a alguma falta de comunicação). Nesse caso, quem "perder" terá apenas que puxar novamente, fundir, empurrar. Como não há pressa das 17h para se comprometer com um repositório central, o problema que você descreveu não está realmente lá.
Essa é a beleza do DVCS: a ramificação é indolor, para que todos possam trabalhar em sua própria ramificação.
EDITAR
Ah, acabei de notar seu comentário "No mercurial você não se ramifica ...": Sim, você sim. Você não precisa, mas como é muito fácil e os benefícios de fazê-lo superam o fato de não o fazerem muito, você tende a apenas repostar bastante.
fonte
Não, não existe uma corrida de empurrão porque o trabalho é feito em tópicos . Um mestre de mesclagem gerencia a complexidade (relativamente menor) de combinar as ramificações em uma ramificação de integração . Isso geralmente é feito continuamente. Para mais informações sobre fluxos de trabalho de controle de versão distribuído, a primeira fonte seria boca do cavalo:
man gitworkflows
, on-line aqui . Workflows Mercurial fazer uso ramificação apesar de sua reivindicação e as técnicas são semelhantes.fonte