Quelle est la principale différence entre GitHub et Gerrit?


Réponse 1:

Je suppose que vous voulez dire l'application Github, pas le site Web (qui exécute l'application).

En termes de différences, nous pouvons vraiment regrouper la plupart des solutions d'hébergement de référentiel git en deux groupes: Gerrit et tout le reste.

Github, gitlab, bitbucket / Stash, etc. sont conçus pour des collaborations entre des populations très diverses. Ils se concentrent sur le modèle de «pull request», avec des schémas d'autorisation à granularité assez grossière (peut / ne peut pas fusionner, branches protégées, etc.). Comme Gerrit, leur objectif principal est d'agir comme une «source de vérité» centrale pour un VCS distribué tel que git ou mercurial.

Ils offrent différents niveaux de capacités de révision de code, le modèle de demande d'extraction étant à peu près

  • Apportez des modifications sur la branche locale Poussez vers la branche distante (cela peut être dans une fourchette du référentiel ou le référentiel principal) Créez une demande de fusion / extraction pour fusionner votre branche dans masterWait pour les commentaires de révision ReviewFix et augmentez les validations supplémentaires dans la branche distante. Enfin, la branche est fusionnée à master (ou n'importe où) en tant que séquence de validations (généralement avec une validation de fusion).

Gerrit, d'autre part, est principalement axé sur des capacités étendues de révision de code et nécessite l'utilisation de routine de commandes qui sont normalement anathèmes pour git les utilisateurs (`git pull —rebase` et` git commit —amend`). Le workflow ressemble plus à ceci

  • Apportez des modifications locales directement sur le maître, validez-les, en vous souvenant du githook local pour ajouter un ID CHANGE, poussez-les vers une référence spéciale (refs / for / master) plutôt que master lui-même (par exemple `git push origin master: refs / for / master`) Cela crée une «demande de changement» sur gerrit. Allez-y et ajoutez des réviseurs. Examinez et mettez à jour les validations (réécriture fréquente de l'historique) Finalement, une personne autorisée fusionne votre demande à masterNow, dans votre référentiel local, effectuez un `git pull —rebase` (en supposant que la sélection de cerise est utilisé pour la fusion à maîtriser) pour réduire vos modifications (les validations fusionnées peuvent avoir des SHA-1 différents de ceux que vous avez poussés vers le haut).

Le résultat net est que vous obtenez un historique de git plus propre (aucun de ces «commentaires de correction correctifs» ne commet).

Les autorisations sur Gerrit sont également très fines. Vous pouvez tout contrôler jusqu'à qui est autorisé à publier des votes positifs / négatifs, et s'ils peuvent donner un -2 (blocs fusionnés par n'importe qui jusqu'à ce qu'ils soient supprimés), -1 (pouce vers le bas), +1 (pouce vers le haut) ou + 2 (approbation pour la fusion) vote et ainsi de suite.

L'utilisation réussie de Gerrit en tant que développeur ajoute une autre couche de complexité en plus d'apprendre Git. Assez pour que les auteurs de Gerrit aient décidé qu'ils avaient besoin d'un outil côté client pour simplifier son utilisation, en particulier lorsque plusieurs référentiels sont impliqués… et cela a conduit à la création de git-repo - Git chez Google


Réponse 2:

"Gerrit est un serveur Git qui fournit la révision de code / contrôle d'accès sur les référentiels Git"

"Gerrit ne fournit pas de navigation de code, de recherche de code, de wiki de projet, de suivi des problèmes, de builds continus, d'analyseurs de code, de vérificateurs de style."

Source: [PUBLIC] Gerrit - Concepts et workflows

GitHub fournit la révision de code, la gestion de projet, les intégrations, la gestion d'équipe, le codage social, la documentation, l'hébergement de code.

"GitHub est la société de développement. Nous aidons les développeurs à être des développeurs: travailler ensemble, résoudre des problèmes difficiles, créer les technologies les plus importantes du monde. Nous favorisons une communauté collaborative qui peut se réunir - en tant qu'individus et en équipes - pour créer l'avenir du logiciel et faire une différence dans le monde. "

Source: Construisez mieux les logiciels ensemble