web-dev-qa-db-fra.com

Examen du code Gerrit, ou modèle de fourche et de traction de Github?

Je démarre un projet logiciel qui sera développé en équipe ET en communauté. J'étais auparavant vendu sur gerrit, mais maintenant le modèle de demande de fork et pull de Github semble presque fournir plus d'outils, de façons de visualiser les validations et la facilité d'utilisation.

Pour quelqu'un qui a au moins un peu d'expérience avec les deux, quels sont les avantages/inconvénients de chacun, et qui serait mieux pour un projet en équipe qui veut laisser la possibilité de développement communautaire?

64
user1366476

La principale différence entre les workflows de Gerrit et de GitHub réside dans la façon dont les changements sont modélisés.

Dans Gerrit, chaque commit est un changement autonome. Bien que Gerrit vous montre les relations entre les validations, les révisions sont effectuées pour chaque validation. Les équipes qui réussissent bien à décomposer les grands changements en petits engagements autonomes auront probablement plus de succès avec Gerrit. Cependant, étant donné que le modèle de Gerrit inclut des révisions successives d'un commit particulier, il encourage les workflows Git auxquels de nombreux développeurs ne sont pas habitués, tels que la modification d'un commit antérieur et le repoussage, ou l'écrasement d'un ensemble croissant de commits d'une branche de sujet en un seul. commettre.

Dans Github, une demande de pull modélise une relation entre deux branches. Le flux de travail attendu sur Github est de valider une ou plusieurs modifications dans une branche de rubrique (souvent dans une fourchette du référentiel, mais pas nécessairement) et de créer une demande de pull entre cette branche et la branche "en amont". Dans ce cas, ce qui est examiné est un ensemble d'engagements qui continue de croître au fur et à mesure que l'examen se poursuit. Le résultat est un ensemble de modifications qui peuvent ensuite être fusionnées atomiquement lorsqu'elles sont terminées. Les demandes d'extraction peuvent être efficaces pour suivre les modifications avec une portée plus large qui peut être implémentée sur plusieurs validations. Les requêtes Pull prennent également en charge les workflows SCM auxquels plus de développeurs sont habitués, comme répondre à un commentaire de révision en soumettant un commit de suivi dans la même branche.

Un grand avantage en faveur de Github est le nombre de développeurs qui le connaissent par rapport à Gerrit. Gerrit peut être populaire auprès des utilisateurs expérimentés de Git, mais son utilisation sans friction nécessite une connaissance intermédiaire ou avancée de Git et la tolérance d'une courbe d'apprentissage abrupte.

L'avantage de Gerrit est une relation plus profonde avec Git. Les demandes d'extraction Github sont suffisamment éloignées du modèle de données standard de Git pour que l'on doive utiliser l'interface utilisateur Web de Github ou son API propriétaire pour créer des demandes d'extraction. L'interface de Gerrit pour créer et mettre à jour des modifications est le protocole git lui-même.

85
Martin Atkins