De Git et de la Libération des Branches: Plusieurs, Un seul ou Aucun?
De notre développement, nous avons tous les jours de la durée hebdomadaire de déploiements. Il y a des cas où nous déployer quelque chose d'assurance de la qualité, mais elles ne peuvent pas se déplacer à l'essai pour quelques jours, et puis nous avons une production de correctif ou une nouvelle amélioration qui a besoin de sortir. Deux questions:
(1) Ce serait un bon flux de travail pour cela?
(2) Quels sont les avantages et les inconvénients d'avoir un continu, de longue durée branche appelée la production ou à la libération, par opposition à une nouvelle branche de version pour chaque version, ou tout simplement faire tout ce qui sort du maître et de l'étiqueter en conséquence? Encore une fois, c'est pour du développement web avec des sorties fréquentes que l'on peut obtenir sauvegardées.
OriginalL'auteur Ron Garrity | 2011-12-02
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas tout à fait sûr de comprendre votre problème correctement, mais ma situation est semblable à la vôtre et j'ai utilisé (modification de l') l'approche suivante: http://nvie.com/posts/a-successful-git-branching-model/
En bref, il s'agit d'avoir 2 branches principales (maître et développer) et plusieurs types de soutenir les branches (fonction, libération et correctif). S'exprimant au sujet de votre cas, vous auriez probablement déployer à l'assurance qualité de votre libération branches et puis quand vous avez une production de correctif, vous le feriez dans un correctif branche et ensuite de le fusionner à la fois maître et la libération des branches.
Quant à votre deuxième question... eh bien, vous savez, il y a tant d'opinions différentes sur les stratégies de branchement (exemple...) je dirais, continue de la branche de production fonctionne très bien (et cela ne signifie pas que vous ne pouvez pas avoir de la libération des branches à l'appui de votre flux de travail).
envisager origin/master à la branche principale où le code source de la TÊTE, reflète toujours un prêt à la production de l'état". Communiqué de branches sont destinés à être fusionné à maîtriser et supprimés. Je crois qu'il pouvait être considéré comme continu de la production de la branche, hein?
Mon travail est similaire pour le site ci-dessus. J'ai 3 branches, la branche master pour la dernière version stable et prêt à sortir ensemble (stable). développer la branche est en cours de développement fixés. Et la Libération de la branche est du prêt à compiler (C#,Java, etc) et relâchez-le pour les utilisateurs.
OriginalL'auteur Alexis
À mon précédent travail, nous avons utilisé une approche similaire à ce que @Alexis l'a mentionné, avec une différence principale. Gardez à l'esprit, nous avons travaillé sur une nouvelle version de certains assez important héritage logiciel (notre code est plusieurs millions de lignes de code, entre Java, flex et COBOL) et un client partenaire de beta-test pour nous. Les rejets ont été bi-hebdomadaire, y compris pour le client (même si elles sont généralement l'un derrière plus tard, que l'on pourrait passer par l'AQ en premier), et dans une semaine, nous avons eu à faire une "coupure", de test, de base QA par le client de notre code d'un autre développeur dans l'entreprise, puis de la libération à la véritable assurance de la qualité.
Essentiellement, capitaine était notre branche dev. Si un dev élément est à prendre plus d'un jour ou deux, il a été achevé sur une branche et ensuite fusionnées dans dev lorsque vous êtes prêt. Il y avait un autre "futures" branche dev qui a été réservé pour assez grave nouvelle fonctionnalité de travail (tout ce qui a changé le programme de manière significative), ou de modification majeure. À un certain point ce qui allait devenir principale " dev " lorsque nous avons décidé que nous avons eu le temps de tester correctement et à aplanir les bugs, ou qu'il était temps d'introduire de nouvelles caractéristiques et d'affronter les inévitables de la douleur 🙂
Quand il était temps pour une mise à jour, une nouvelle branche a été créé appelé "release_x', puis tous les correctifs qui sont venus d'AQ ont été mis en œuvre il y et fusionnées "vers le haut". Je veux dire par là qu'on pouvait en avoir deux ou trois versions dans le jeu à tout moment, de sorte que le client aurait évidemment le plus ancien qui nous pourrions faire un correctif pour si ils ont trouvé un écueil. Ce serait fait sur un correctif de la branche qui sort de la mainlevée pertinents qui seraient fusionnés en que la libération et de suppression (de sorte que vous pouvez facilement les voir en circulation correctifs dans une succursale de la liste) et une autre build fait et envoyé au client. Le "correctif" branches existait sorte que l'on puisse choisir ce qui est allé en particulier la construction, ce qui a fonctionné pour la publication client ainsi que le développeur de sortie, pour éviter potentiellement à risque de correctifs pour les petits problèmes de bouleverser la publication d'un correctif pour un écueil.
Qui puisse ensuite être fusionnées jusqu'à la libération que l'assurance de la qualité les gars, qui seraient fusionnées à la libération des autres développeurs ont été à l'aide de (toujours la dernière version en raison de leur dépendance à l'égard de nos plugins et de l'infrastructure j2ee pour faire leur travail), puis de nouveau en dev, juste pour garder tout au niveau.
Toutes les versions actuellement en jeu avaient leur propre version automatique de la boucle dans Jenkins, ainsi que la branche dev, avec certains automatisé de tests fonctionnels en cours d'exécution sur le plus important (développement et d'assurance qualité pour l'essentiel). Chaque construction a ajouté une balise pour le rapport sur le commit qui a été utilisé en tant que CHEF, et le numéro de build est disponible à partir du programme, de sorte que nous avons pu voir exactement qui version le rapporteur de bug a l'aide d'.
Donc, essentiellement, deux dev branches, l'une d'entre elles pour les grands travaux pour être publié plus tard comme une nouvelle version majeure. Communiqué de branches pour chaque version, avec le correctif branches provenant de ceux-ci. Trouver la dernière version a été facile, regardez pour la libération de la direction, avec le plus grand nombre.
Le seul inconvénient, c'est que si vous avez un grand nombre de correctifs à une libération de plusieurs versions du dos, puis la fusion des graphes ont été intéressants... à suivre 🙂
OriginalL'auteur MattJenko
Vous devriez certainement
Qui est d'un naturel et d'un flux de travail efficace.
OriginalL'auteur CharlesB
Nous avons utilisé Gitflow de flux de travail ramification modèle qui est dérivée à partir de Vincent Driessen à nvie comme Alexis mentionnés ci-dessus.
L'idée est que vous avez deux branches principales de Développer et de Master. Les développeurs peuvent avoir leurs propres branches qui deviennent éventuellement fusionnées en Développer une fois que la fonction est prêt. Lorsque le développement est terminé sur une fonctionnalité, vous la fourche d'une branche hors de se Développer qui démarre votre cycle de sortie. L'essai sera fait sur cette branche, et si les bugs sont introduites en conséquence, ils auront également être fixé sur cette branche, mais pas de nouvelles fonctionnalités seront ajoutées à cette branche. Une fois que tout le monde est heureux avec la sortie il est fusionné en Maître et marqué avec un numéro de version. Vous avez aussi l'intégrer dans Développer.
Si un bug est trouvé dans le code de production, vous bifurquez un nouveau Correctif branche de Maître. Dès que la correction est terminée, vous fusionner Correctif en Maître. Si le Correctif a été créé pendant le cycle de version vous de les fusionner dans la Libération sinon à se Développer.
sans correctif:
Fonction -> Développer des <=> Presse -> Maître
avec correctif pendant le cycle de version:
Fonction -> Développer des <=> Libération <- Correctifs <=> Master
avec correctif après le cycle de publication:
Fonction -> Développer des <- Correctifs <=> Master
OriginalL'auteur Irfan