Est-il utile d'utiliser des demandes d'extraction sur mon propre dépôt si je suis le seul développeur?

38

Je me suis donc lancé dans un véritable projet sur GitHub et les choses se passent plutôt bien et les idées circulent beaucoup plus rapidement que je ne le pensais au départ. Afin de garder les choses organisées, j'ai configuré des branches afin de pouvoir développer différentes fonctionnalités séparément.

Maintenant, quand je pousse ma branche vers GitHub, j'ai cette section où j'ai deux boutons: Pull Requestet Compareavec le nom de la branche sur laquelle j'ai récemment poussé. Je comprends l'objectif du Comparebouton, mais je ne comprends pas pourquoi je voudrais créer une demande de tirage sur mon propre dépôt.

Quelqu'un peut-il m'expliquer pourquoi je le ferais? Est-il utile de faire une demande de tirage sur mon propre dépôt si je suis le seul développeur?

marco-fiset
la source

Réponses:

28

Pour de nombreux développeurs (peut-être la plupart) travaillant seuls, la création de requêtes d'extraction n'en vaut probablement pas la peine. Cependant, je peux penser à au moins une raison potentielle de le faire:

Les demandes d'extraction peuvent être utilisées pour suivre l'historique de votre projet plus facilement. Une demande d'extraction a un ID de problème auquel on peut faire référence à partir des messages de validation et dans un journal des modifications, ce qui vous permet de rechercher facilement le point de fusion et l'ensemble des validations fusionnées pour une modification particulière, sans avoir à conserver votre fonctionnalité. branches indéfiniment.

Par exemple, dans Pioneer (fiche sans scrupule), lorsque nous fusionnons une demande d'extraction, nous ajoutons un élément au journal des modifications, avec une description du changement sur une ligne et une référence à l'ID de la demande d'extraction. Bien sûr, Pioneer a plusieurs développeurs, mais le même mécanisme pourrait être utile à un développeur travaillant seul.

Cela peut être moins utile si vous décidez de vous en tenir à un historique de validation linéaire (en rebasant vos branches d’entités avant la fusion, de sorte que la fusion puisse toujours être exécutée comme une avance rapide), et si vous êtes très discipliné en matière de modification et d’écrasement des modifications. commets avant de fusionner avec master, car dans ce cas, les messages de validation individuels peuvent être utilisés en tant que changelog.

John Bartholomew
la source
10

Les demandes d'extraction sont créées de manière à ce que quelqu'un puisse réviser le travail, formuler des commentaires, des suggestions, effectuer ou demander des modifications, puis fusionner le code pour le maîtriser.

Dans votre cas, le quelqu'un c'est vous.

En tant que développeur unique, vous devez quand même revoir votre propre travail, le refactoriser et le fusionner pour le maîtriser lorsqu'il est prêt.

Une approche que j'utilise souvent est d'essayer de «mettre un autre chapeau», «essayer d'autres personnages». Alors, asseyez-vous quelques instants et placez-vous dans la situation suivante: débutant dans le groupe; Développeur débutant; collègue que vous avez respecté dans le passé, etc. Essayez de regarder cela à travers leurs yeux et essayez de penser simplement à ce que vous pourriez faire pour rendre le changement plus évident, mieux écrit avec des noms encore meilleurs qui évitent autant que possible les connaissances tribales et de domaine. .

Ainsi, comme vous l'avez indiqué, vous devriez travailler dans les branches lorsque vous souhaitez séparer les fonctionnalités et les modifications qui ne sont pas prêtes pour le maître. Vous pouvez faire tout cela dans les branches (vous n'avez même pas besoin de demandes d'extraction pour les gérer si vous faites les tâches de relations publiques de toute façon, mais cela peut vous fournir une structure utile).

De plus, je constaterai parfois que mon changement ne fonctionne pas, mais plutôt que l'horreur d'essayer de le supprimer du maître, peut-être maintenant mélangé avec d'autres changements principaux, je peux simplement le faire dans une branche que je peux ensuite ignorer. / delete si ça commence à aller mal. C'est un avantage énorme.

Donc, vous devriez travailler dans les branches et ne pas vous engager directement auprès du maître avant de décider de fusionner toute la branche.

Ce sont des directives - et non des règles - à suivre. Je les casse intentionnellement parfois. Par exemple, hier, j'ai commis une correction de faute de frappe pour maîtriser.

Michael Durrant
la source
3

On dirait que vous avez des branches distantes ainsi que des branches locales. Si vous trouvez trop la surcharge de ce flux de travail, vous pouvez toujours utiliser différentes fonctionnalités à l'aide de branches locales sans les forcer.

Il s’agit essentiellement de faire ce qui fonctionne pour vous. Travailler avec des branches est un avantage énorme pour git, et github rend cela très facile, mais en tant que développeur isolé, il n’est pas nécessaire d’utiliser le modèle de demande de retrait et s’engager directement auprès de master devrait fonctionner correctement. Lorsque votre projet finit par remporter un succès incroyable et que des dizaines, voire des centaines de développeurs y travaillent, vous constaterez que le fait de recevoir des demandes d'extraction de leur fourche est un excellent moyen de garder une trace du projet.

dma
la source
Je pousse intentionnellement mes branches vers github alors que je travaille sur plusieurs ordinateurs et je souhaite que tout mon code soit synchronisé entre eux. Savoir que cela change quelque chose à votre réponse?
marco-fiset
@ marco-fiset cela ne devrait pas changer la réponse. Je ne suis même pas certain du bouton de demande de tirage dont vous parlez ..
David Cowden
3
Vous dites "en tant que développeur isolé, il n'est pas vraiment nécessaire d'utiliser le modèle de demande d'extraction et s'engager directement auprès de maître devrait fonctionner parfaitement". Mais ne pas utiliser les demandes d'extraction ne signifie pas ne pas utiliser de branches
Rob N
0

Les demandes d'extraction sont généralement utilisées pour les révisions de code ou les contributions des utilisateurs avec leur propre fork du projet - pour un développeur unique sur un projet, je ne vois pas vraiment d'objectif.

Sevenseacat
la source
0

La raison pour laquelle je le fais, c'est que c'est un moyen pratique de s'assurer que toutes les vérifications automatisées sont réussies (elles sont compilées, leur formatage est correct, les tests unitaires sont réussis ...).

Je n'ai pas nécessairement besoin de passer tous les contrôles pour chaque commit, mais je veux que le responsable de la branche principale passe toujours les contrôles. Je pense que les demandes de tirage sont un moyen facile (peut-être pas le seul).

Plus généralement, c'est un moyen de connecter des points d'ancrage pour effectuer les modifications. Les tests sont un exemple. @John a mentionné la création de notes de publication comme autre exemple.

marque
la source
-2

Les requêtes de tirage contre git push se résument finalement à une histoire individuelle ou partagée. Le référentiel principal est la source de toutes les modifications. Si d'autres utilisateurs extraient potentiellement des modifications locales, une demande Push peut alors causer des problèmes à ces utilisateurs, tels que l'arborescence dont ils dérivent.

Le modèle de demande d'extraction (provenant de branches personnalisées ou de référentiels personnels) permet de fournir un historique cohérent à tous ceux qui utilisent et dérivent du code.

Une partie de la raison pour laquelle vous mettez du code sur github serait de le rendre disponible pour le bricolage et les requêtes extraites. Vous n'avez jamais su quand cela se produirait, et le maintien d'un historique cohérent des co-développeurs serait un avantage considérable.

Matthew Tippett
la source
il semble que cela répète simplement les points soulevés et expliqués il y a longtemps dans la réponse principale
gnat le
1
Je ne suis pas d'accord. Alors que la réponse principale est de parler principalement de référentiel simple vs partagé, la discussion sur l’attraction est davantage axée sur le partage de procédures et d’informations. Mon propos concerne le maintien d'une histoire cohérente. Voir movingfast.io/articles/git-force-pushing pour plus d'informations. Si quelqu'un utilise un fork ou un clone de maître et que vous réécrivez l'historique, le parent auquel il fait référence peut disparaître.
Matthew Tippett