Les requêtes pull font-elles partie de Git ou sont-elles une fonctionnalité d'outils tels que GitHub, Gerrit et Atlassian Stash?

Les requêtes Pull semblent être la façon courante de faire une révision de code avec Git. Cependant, il n'est pas clair si ce terme signifie la même chose lors de l'utilisation du git request-pull intégré ou d'un outil différent.

Les requêtes pull sont-elles une fonction intrinsèque de Git, ou est-ce un terme commun pour des outils comme GitHub, Gerrit ou Atlassian Stash?

La discussion et le "résultat" de la révision du code sont-ils stockés dans L'historique des commits Git ou dans une base de données séparée?

21
demandé sur random 2013-11-29 20:05:24

2 réponses

Les requêtes Pull sont un concept simple qui a pris naissance lors de la création de Git, mais qui a été porté à différents niveaux depuis.

L'essence est que vous n'avez pas de droits push sur le référentiel sur lequel vous voulez contribuer, donc à la place vous fork le référentiel, en faisant votre copie privée (un clone le fait déjà btw.) et vous contribuez à la place. Et puis vous , demandez à un responsable du dépôt original de tirez dans vos modifications. Donc vous soumettez essentiellement patch.

Maintenant, comme je l'ai dit, il y a différentes façons de le faire, mais tout se résume à demander à un mainteneur de retirer vos modifications, d'où le nom. Le but original pour lequel Git a été créé est le noyau Linux, et ils ont été développés en utilisant des listes de diffusion pour toujours. Donc, pour eux, une demande de tirage envoie en fait un patch par e-mail; ces patchs sont en fait des objets de validation ajoutés par des éléments de communication par e-mail normaux-Git a des outils pour générer cela.

git request-pull est un outil similaire pour générer un message demandant une demande d'extraction. Mais dans ce cas, c'est plus proche de l'idée de traction. Alors que les correctifs peuvent simplement être appliqués, les requêtes créées par request-pull indiquent en fait au mainteneur d'extraire les modifications d'un référentiel distant différent.

Le Livre Git A cet exemple:

$ git request-pull origin/master myfork
The following changes since commit 1edee6b1d61823a2de3b09c160d7080b8d1b3a40:
  John Smith (1):
        added a new function

are available in the git repository at:

  git://githost/simplegit.git featureA

Jessica Smith (2):
      add limit to log function
      change log output to 30 from 25

 lib/simplegit.rb |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

Donc c'est vraiment juste un utilitaire pour générer des messages pour exécuter le concept sous-jacent.

D'autres hébergeurs de code source comme GitHub le font également. Lorsque vous créez une requête pull sur GitHub, vous créez simplement un problème qui contient des informations supplémentaires où les commits sont que le mainteneur peut tirer. Bien sûr, tout cela étant sur un seul site web, ils peuvent relier tout un peu plus et fournir ces boutons de fusion en un clic par exemple.

Mais le concept de base est toujours le même: demander à un mainteneur d'apporter certaines modifications que vous avez apportées. La seule différence est la façon dont cette demande est communiquée.

20
répondu poke 2013-11-29 16:16:24

Le git request-pull commande peut être utilisée pour créer une "pull request" dans Git natif. Lors de l'exécution, Git génère un résumé des modifications apportées à un projet et l'URL du référentiel Git d'où le code peut être extrait. Cela peut ensuite être envoyé à une liste de diffusion ou aux responsables du projet, qui peuvent ensuite extraire dans les modifications apportées à leurs propres dépôts.

Cette section du livrePro Git contient des informations plus spécifiques sur la commande git request-pull.

3
répondu blacktide 2013-11-29 16:15:44