J'essaie de déterminer comment les gens utilisent des «dépôts de succursales» tout en utilisant des sous-dépôts.Référentiels de succursales Mercurial avec SUBREPOS
Disons que je repo principal contenant un fichier de solution (.NET), et peuplée avec subrepos A, B, C:
/Main
- A
- B
- C
MainSolution.sln
A, B et C, tout en étant partagé entre les autres « Main "repos, sont très étroitement intégrés dans le projet principal. Ainsi, une caractéristique majeure du dépôt principal nécessitera des modifications aux sous-rapports (c.-à-d., Ce sont des bibliothèques partagées, mais elles sont très activement développées).
Il est maintenant temps d'ajouter une fonctionnalité. Cette fonctionnalité est trop importante pour une personne, et le code devra donc être transmis au dépôt central pour que les autres puissent vous aider. Nous devrons également pouvoir revenir au dernier code "stable" avant le début du développement de fonctionnalités au cas où un correctif serait nécessaire. Je crois que j'ai deux options à ce stade: (1) créer une branche nommée dans le repo principal, ou (2) créer un nouveau clone de Main. Comme il y a des sous-récapitulatifs, ces deux options ont des répercussions qui ne sont généralement pas présentes.
Option 1) La création d'une branche nommée permettra, je présume, de modifier/valider les sous-états, mais seules les autres personnes qui ont également mis à jour cette branche dans leur clone de Main seront affectées. Le fichier hgsubstate est suivi. Cependant, les sous-dépôts auront une nouvelle tête, et donc (éventuellement) la caractéristique expérimentale finirait par être poussée au dépôt central. Est-ce que je comprends bien?
Option 2) Il y a de nombreux partisans du «ne pas utiliser les branches nommées, utiliser les dépôts de branches», qui sont littéralement des clones du dépôt principal, mais nommés différemment et existant sur le serveur central. C'est un peu attrayant pour moi, car il semble garder les choses séparées (et donc détaché du désastre en tant que collègues - et moi-même - nous apprenons encore Mercurial). Mais ce workflow semble complètement rompu lorsque des sous-dépôts sont impliqués, car la création d'un clone du repo principal ne crée pas de nouveaux clones séparés des sous-états. C'est un nouveau clone, mais il montre toujours les mêmes sous-rapports, et ainsi les changements qui leur seront apportés retrouveront leur place dans les sous-états! Je réalise que c'est par conception, et c'est l'une des choses vraiment cool (à moi) à propos de Mercurial. Mais comment diable les gens utilisent-ils ce workflow de dépôt de branche avec des sous-dépôts? Il est complètement inconcevable que, pour chaque fonctionnalité/expérience/version/quoi que ce soit, je vais créer un nouveau clone (sur le serveur central) du dépôt principal, ET créer des clones (sur le serveur central) des sous-états, ET modifier tous les chemins .hgrc/.hgsub pour pointer vers les bons repos centraux. À ce stade, j'essaie simplement de comprendre comment les gens travaillent sur un projet compliqué et utilisent des sous-dépôts avec des dépôts de succursales. Des pensées?
Deux choses. Lorsque vous dites qu'une branche nommée ne sera pas récupérée à moins qu'un dev le demande, voulez-vous dire que la copie de travail du dev ne sera pas modifiée à moins que cette branche ne soit extraite, ou faites-vous référence à autre chose? J'ai cru comprendre que toutes les branches étaient poussées/tirées automatiquement. De plus, la question fondamentale n'est pas de savoir s'il faut utiliser des branches nommées par rapport aux dépôts de branches, mais plutôt comment utiliser les dépôts de branches lors de l'utilisation de sous-dépôts. Mais merci pour la réponse! – Andrew
La ou les branches nommées seront récupérées avec un "hg pull", mais les répertoires de travail des développeurs ne seront pas mis à jour vers une branche différente sans les mettre explicitement à jour par exemple. "hg -r". Il me semble que le meilleur chemin à emprunter est celui qui est le plus difficile pour un développeur. Le problème du "genie out of the bottle" qui se produit lorsque des dépôts de succursales séparés sont accidentellement poussés ensemble me fait croire que les branches nommées dans un seul dépôt sont préférables. YMMV. Certes, j'ai probablement raté une partie de la complexité supplémentaire qui vient avec les sous-états. Bonne chance! –
Quelqu'un peut-il nous éclairer sur ce que décrit le scénario «génie sorti de la bouteille» décrit par @MarkB? –