149 votes

Comment attribuer un seul commit à plusieurs développeurs ?

La façon dont tous les systèmes de contrôle de version que je connais fonctionnent est que chaque livraison est attribuée à un seul développeur. L'essor de l'ingénierie agile, et plus particulièrement de la programmation par paire, a conduit à une situation où deux développeurs ont apporté une contribution significative à la même tâche, une correction de bogue par exemple.

La question de l'attribution ne sera pas trop importante dans un environnement de travail puisque le chef de projet sera au courant du travail effectué par les binômes, mais qu'en est-il si deux contributeurs open source décident de se mettre à deux et d'envoyer du code à un projet particulier qui n'a aucune idée qu'ils travaillent ensemble. Existe-t-il un moyen pour un système de contrôle de version comme Git d'attribuer un patch particulier à plusieurs développeurs ?

90voto

Gerry Points 3954
Commit title

Commit body

Co-authored-by: name <additional-dev-1@example.com>
Co-authored-by: name <additional-dev-2@example.com>

Un problème avec cette approche est qu'il n'est pas possible de créer une clé signée pour ce groupe de développeurs. Vous pourriez donc ajouter n'importe qui à cette liste, même s'il n'a pas travaillé sur une fonctionnalité, et GitHub le traiterait comme s'il l'avait fait. Cependant, cela ne devrait pas être un problème dans la plupart des cas.

par exemple Co-authored-by: Linus Torvalds <torvalds@linux-foundation.org>

Avec des auteurs normaux ou des groupes de signataires (l'ancienne méthode), vous verriez qu'il n'est pas signé et vous sauriez que vous ne pouvez pas faire confiance à la livraison. Cependant, il n'y a pas de processus de signature pour les co-auteurs.


Réponse largement dépassée :

Une solution serait de donner un nom à la paire :

git config user.name "Chris Wilson and John Smith"

Voici un rapport de bogue connexe avec d'autres solutions temporaires :

Bug git-core : Git devrait supporter plusieurs auteurs pour un commit

70voto

Kariem Points 1416

Une convention git est d'utiliser Co-Authored-By à la fin du message de validation ( git kernel : Conventions des messages d'engagement en se référant à Messages de validation d'Openstack ). Il s'agit également une des solutions sur le bug de git-core lié à La réponse de Gerry

Co-authored-by: Some One <some.one@example.foo>

Dans ce commentaire du 5 mai 2010, Josh Triplett suggère également d'implémenter un support correspondant dans git.

Comme Llopis a souligné dans un commentaire, GitHub a annoncé la prise en charge de cet aspect sur son blog le 29 janvier 2018 : S'engager avec les co-auteurs ( détails ).

27voto

bialix Points 6270

Pour Bazaar :

bzr commit --author Joe --author Alice --author Bob

Ces noms seront affichés dans le journal séparément du nom du participant.

22voto

Ciro Santilli Points 3341

git-pair

https://github.com/pivotal/git_scripts#git-pair

Ce simple script de Pivotal pour automatiser l'attribution de la programmation par paire Git.

Vous créez un .pairs comme un fichier :

# .pairs - configuration for 'git pair'
pairs:
  # <initials>: <Firstname> <Lastname>[; <email-id>]
  eh: Edward Hieatt
  js: Josh Susser; jsusser
  sf: Serguei Filimonov; serguei
email:
  prefix: pair
  domain: pivotallabs.com
  # no_solo_prefix: true
#global: true

et ensuite :

git pair sp js

ensembles :

user.name=Josh Susser & Sam Pierson
user.email=pair+jsusser+sam@pivotallabs.com

pour vous.

16voto

jkukul Points 1930

Git fait la distinction entre les éléments suivants d'un commit author et committer [1]. Vous pouvez l'utiliser comme solution de rechange, par exemple en vous inscrivant en tant qu'utilisateur de l'application committer et votre co-auteur comme le author :

GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a@a' git commit --author 'b <b@b>'

De cette façon, vous et votre co-auteur serez tous deux enregistrés dans l'historique git. Exécution de git log --format=fuller vous donnera quelque chose comme :

commit 22ef837878854ca2ecda72428834fcbcad6043a2
Author:     b <b@b>
AuthorDate: Tue Apr 12 06:53:41 2016 +0100
Commit:     a <a@a>
CommitDate: Tue Apr 12 09:18:53 2016 +0000

    Test commit.

[1] Différence entre auteur et committer dans Git ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X