git - 为什么要Sign Off?
某草草
某草草 2017-05-02 09:25:58
0
2
1635

为什么很多开源项目都要求Sign Off?Git里面已经配置用户名和邮箱了,再次署名的意义是什么?

另外,怎么进行Sign Off操作?是在提交描述最后加一行就行,还是在Pull Request的时候,还是需要用什么其他方法?

某草草
某草草

répondre à tous(2)
大家讲道理

Tout d’abord, faites la différence entre l’approbation et la signature. @nightfire a expliqué la signature. Laissez-moi vous expliquer (traduire) le sens de la signature.

Je n'ai pas vu « de nombreux projets open source nécessitent » l'approbation. Le plus connu est le noyau Linux. Sa documentation dit ceci :

11) Signez votre œuvre

Pour améliorer le suivi de qui a fait quoi, en particulier avec les correctifs qui peuvent
s'infiltrer jusqu'à leur lieu de repos final dans le noyau à travers plusieurs
couches de responsables, nous avons introduit une procédure de « signature » sur
les correctifs qui sont envoyés par courrier électronique.

Parce que pendant le processus de développement de Linux, ils n'utilisent pas la "pull request" créée par GitHub, mais envoient des correctifs par courrier électronique (distribué) (git a donc un assez bon support pour le courrier électronique). Lorsque des correctifs sont envoyés dans les deux sens, vous devez les suivre, sinon cela sera mauvais comme l'a connu BSD et affectera le développement. « Signé par » est en fait une déclaration selon laquelle vous garantissez que le correctif que vous envoyez est conforme aux points du « Certificat d'origine du développeur 1.1 ».

Quelqu'un sur StackOverflow a déclaré qu'il ne s'agissait que d'une exigence pour quelques projets, et que la plupart des projets n'utilisent pas de signature.

PS : Si vous regardez les commits du noyau, vous pouvez parfois voir un commit avec une longue liste de signatures. Comment un seul contributeur et un seul auteur peuvent-ils suffire dans ce cas ?

PHPzhong

La réponse simple est à vous de prouver que vous êtes vous !

Généralement, lors de la soumission, il y aura deux informations : l'auteur et le committer, généralement une seule personne (projet privé, dépôt central partagé).

À l'époque d'avant Github (par exemple, Git a d'abord été utilisé pour le développement collaboratif de Linux Core), la pull request à laquelle tout le monde est désormais habitué n'est pas si simple à gérer. À cette époque, les correctifs étaient souvent utilisés pour le développement distribué. Par exemple, vous envoyiez votre soumission (les informations sur l'auteur étaient générées à ce moment-là) au chef de projet/mainteneur sous forme de pièce jointe à un e-mail, puis il la fusionnait dans la bibliothèque centrale. (Ce sont les informations générées par le committer)......

Cependant, ni l'auteur ni l'auteur ne peuvent essentiellement prouver que la « personne » est la véritable personne qui a fait cette chose. Parce qu'il est trop facile de connaître le nom et l'email d'un développeur. Un patch envoyé en pièce jointe d'un email peut-il prouver que l'auteur est vous ? La personne qui reçoit l'e-mail et le fusionne peut-elle être sûre qu'elle est bien l'auteur du commit ? (En supposant qu'un projet a plusieurs gestionnaires/mainteneurs)

Ainsi, les personnes qui apprécient cela utiliseront les clés GPG pour les signatures sécurisées, c'est ce que vous avez demandé à propos de Sign Off. Il s'agit en fait d'une signature électronique. De nombreux clients de messagerie utilisent également cette méthode pour créer des signatures numériques.

J'ai essayé de le rendre aussi simple et clair que possible, mais en fait il y a plus de détails que vous ne l'imaginez. Si vous êtes intéressé, vous pouvez lire cet article : Une histoire d'horreur Git : intégrité du référentiel avec des validations signées, et ceci. article L'article n'a pas encore fini de parler de tout ce qui concerne Sign Off.

Un autre point de préoccupation est le suivant : de nombreux projets auront des licences, n'est-ce pas ? Mais vous pouvez utiliser du code tiers dans votre projet, et il est possible que les politiques de licence de ces codes s'excluent mutuellement/entrent en conflit avec la licence de ce projet. S'il s'agit d'un projet open source (comme vous l'avez demandé), vous accorderez plus d'attention à cet aspect (voulez-vous que d'autres vous poursuivent en justice ?). La Sign Off de Git peut être précise à la ligne, ce qui est une vérification de la véritable source du code (bien que la fiabilité soit discutable, c'est mieux que rien...). Je n’entrerai pas dans les détails, j’en ai juste entendu un peu parler.

Pour utiliser une signature, vous devez suivre les trois étapes les plus simples (basées sur Mac) :

  1. Vous avez besoin du programme gunpg, Mac peut utiliser homebrew pour installer :

  2. Vous devez générer votre clé GPG. Le processus est omis. Il se trouve dans l'article ci-dessus, une fois généré, cela ressemblera à ceci :
    <.>

  3. Vous devez indiquer à Git quel est votre identifiant de clé (car vous pouvez avoir plusieurs clés en même temps) :

    `git config --global user.signingkey KEY_ID`
    这个 ID 就在第二步列表里可以找到
    
    D'accord, désormais, si vous ajoutez

    (notez la majuscule) à la commande git commit, votre signature numérique sera automatiquement attachée lorsque vous la soumettrez. Vous êtes qui vous êtes et refusez d'être contrefait ! -S


Selon l'astuce de @Evian, il y a une différence entre --sign-off et --gpg-sign Cela a des raisons historiques. Si vous êtes intéressé, vous pouvez lire les commentaires dans sa réponse. Les citations suivantes tirées des réponses de recherche Google :

-s ajoute un champ "signé par" au commit. -S en fait, GPG signe le commit, qui a été ajouté dans git 1.7.9. De plus, cela ne signe pas tous les commits, mais uniquement ceux qui. sont effectués par l'utilisateur directement à l'aide de la commande git c. Dans un rebase, lorsque de nouveaux commits sont créés, cela ne signera pas (ou ne signera pas PGP) les commits, sauf si vous effectuez un rebase interactif et validez manuellement chaque modification.

-S Vous pouvez faire les deux en même temps, c'est pourquoi cette option est recommandée dans la réponse précédente. Donc --sign-off n'est qu'une signature, et --gpg-sign est une signature utilisant une clé GPG.


OK, encore faux... -S Vous ne pouvez pas faire les deux en même temps Si vous voulez à la fois signature et signature, vous devez utiliser les deux ensemble.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!