La lecture de quelques "Pourquoi un DVCS est meilleur" répond à plusieurs questions sur les programmeurs. Ils semblent tous dire qu'en général, le DVCS est meilleur car vous n'avez pas de course de commit dans les grands projets, IE commit, obsolète donc mise à jour, validation, obsolète à nouveau, validation, toujours obsolète, etc.
DVCS limite cela avec le concept de push. Mais dans les très gros projets, n'y aurait-il pas de «push race», surtout en fin de compte? Je sais que dans Git, cela est quelque peu remédié par la ramification constante pour tout, mais dans Mercurial vous ne branchez pas, vous créez une nouvelle tête.
Problème que je vois
- L'utilisateur tente de pousser
- Obsolète (mercurial ne vous laissera pas pousser si votre repo local est obsolète), donc vous tirez et fusionnez vos modifications locales
- L'utilisateur tente de pousser à nouveau, mais pendant qu'il fusionnait, quelqu'un d'autre a poussé, il est donc à nouveau obsolète
- Tirez et fusionnez à nouveau
- Toujours obsolète
- Répéter
Semble familier?
Est-ce un problème réel avec des dépôts mercuriels très importants et populaires? Qu'en est-il à l'intérieur d'une entreprise lorsque tout le monde fait son dernier effort de la journée?
--close-branch
lors de la validation - et mercurial a nommé des branches, vous n'avez pas besoin de cloner dans un nouveau répertoire
hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch