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

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

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

某草草
某草草

membalas semua(2)
大家讲道理

Pertama, bezakan antara tandatangan dan tandatangan. @nightfire telah menerangkan tandatangan. Biar saya terangkan (terjemah) maksud sign-off.

Saya tidak nampak "banyak projek sumber terbuka memerlukan" log keluar. Yang paling terkenal ialah kernel linux. Dokumentasinya mengatakan ini:

11) Tandatangani kerja anda

Untuk meningkatkan pengesanan siapa yang melakukan apa, terutamanya dengan tampalan yang boleh
meresap ke tempat rehat terakhir mereka dalam kernel melalui beberapa
lapisan penyelenggara, kami telah memperkenalkan prosedur "log keluar" pada
tampung yang sedang dihantar melalui e-mel.

Oleh kerana semasa proses pembangunan Linux, mereka tidak menggunakan "permintaan tarik" yang dibuat oleh GitHub, tetapi menghantar patch melalui e-mel (yang diedarkan) (jadi git mempunyai sokongan yang cukup baik untuk e-mel). Apabila patch dihantar berulang-alik, anda perlu menjejakinya, jika tidak, ia akan menjadi buruk seperti yang dialami BSD dan menjejaskan pembangunan. "Ditandatangani oleh" sebenarnya adalah pernyataan yang anda jamin bahawa tampung yang anda hantar mematuhi mata dalam "Sijil Asal Pembangun 1.1".

Seseorang di StackOverflow berkata bahawa ini hanya keperluan untuk beberapa projek dan kebanyakan projek tidak menggunakan log keluar.

PS: Jika anda melihat kernel commit, kadangkala anda boleh melihat commit dengan senarai sign-off yang panjang. Bagaimanakah hanya seorang committer dan seorang penulis boleh mencukupi dalam kes ini?

PHPzhong

Jawapan mudahnya ialah untuk anda membuktikan bahawa anda adalah anda!

Secara amnya, apabila menyerahkan, akan ada dua maklumat: pengarang dan pengarang, biasanya satu orang (projek persendirian, repo pusat dikongsi).

Dalam era sebelum Github (contohnya, Git pertama kali digunakan untuk pembangunan kolaboratif Teras Linux), permintaan tarik yang kini biasa dilakukan oleh semua orang tidak begitu mudah untuk dikendalikan. Pada masa itu, patch sering digunakan untuk pembangunan teragih Contohnya, anda menghantar penyerahan anda (maklumat pengarang telah dijana pada masa ini) kepada pengurus/penyelenggara projek sebagai lampiran e-mel, dan kemudian dia menggabungkannya ke dalam perpustakaan pusat. ( Ini adalah maklumat committer yang dijana)......

Walau bagaimanapun, baik pengarang mahupun pelaku pada dasarnya tidak dapat membuktikan bahawa "orang" itu adalah orang sebenar yang melakukan perkara itu. Kerana terlalu mudah untuk mengetahui nama dan e-mel pembangun Bolehkah patch yang dihantar sebagai lampiran e-mel membuktikan bahawa pengarangnya adalah anda? Bolehkah orang yang menerima e-mel dan menggabungkannya memastikan bahawa dia adalah pelaku? (Dengan mengandaikan projek mempunyai berbilang pengurus/penyelenggara)

Jadi, orang yang menghargai ini akan menggunakan kunci GPG untuk tandatangan selamat, itulah yang anda tanyakan Log Keluar Ia sebenarnya adalah tandatangan elektronik yang juga menggunakan tandatangan digital ini.

Saya cuba menjadikannya semudah dan sejelas mungkin, tetapi sebenarnya terdapat lebih banyak butiran daripada yang anda bayangkan Jika anda berminat, anda boleh membaca artikel ini: Kisah Seram Git: Integriti Repositori Dengan Komit yang Ditandatangani, dan ini. artikel Artikel belum selesai bercakap tentang semua yang berkaitan dengan Sign Off.

Satu lagi perkara yang membimbangkan ialah, banyak projek akan mempunyai lesen, bukan? Tetapi anda boleh menggunakan kod pihak ketiga dalam projek anda, dan ada kemungkinan bahawa dasar pelesenan kod ini adalah saling eksklusif/bercanggah dengan lesen projek ini. Jika ia adalah projek sumber terbuka (seperti yang anda tanya), anda akan memberi lebih perhatian kepada aspek ini (adakah anda mahu orang lain menyaman anda?). Sign Off Git boleh menjadi tepat pada baris, yang merupakan pengesahan sumber sebenar kod (walaupun kebolehpercayaan boleh dipersoalkan, ia lebih baik daripada tiada...). Saya tidak akan menerangkan secara terperinci tentang ini, saya hanya mendengar sedikit tentangnya.

Untuk menggunakan tandatangan, anda perlu mengikut tiga langkah paling mudah (berdasarkan Mac):

  1. Anda memerlukan program gunpg, Mac boleh menggunakan homebrew untuk memasang:

  2. Anda perlu menjana kunci GPG anda. Prosesnya ditiadakan dalam artikel di atas, ia akan kelihatan seperti ini:
    <.>

  3. Anda perlu memberitahu Git apakah ID kunci anda (kerana anda boleh mempunyai berbilang kunci pada masa yang sama):

    `git config --global user.signingkey KEY_ID`
    这个 ID 就在第二步列表里可以找到
    
    Baiklah, mulai sekarang, jika anda menambah

    (perhatikan huruf besar) pada perintah git commit, tandatangan digital anda akan dilampirkan secara automatik apabila anda menyerahkannya. Anda adalah diri anda sendiri dan enggan dipalsukan! -S


Menurut petua @Evian, terdapat perbezaan antara --sign-off dan --gpg-sign Ini mempunyai sebab sejarah Jika anda berminat, anda boleh membaca ulasan dalam jawapannya. Petikan berikut daripada jawapan carian Google:

-s menambah medan "ditandatangani oleh" pada komit -S sebenarnya GPG menandatangani komit, yang telah ditambahkan dalam git 1.7.9 Selain itu, ini tidak menandatangani semua komit, tetapi hanya yang dibuat oleh pengguna secara langsung menggunakan perintah git c Dalam pangkalan semula, apabila komit baharu dibuat, ini tidak akan ditandatangani pada (atau menandatangani PGP) komit, melainkan anda melakukan pangkalan semula interaktif dan melakukan setiap perubahan secara manual.

-S Anda boleh melakukan kedua-duanya pada masa yang sama, itulah sebabnya pilihan ini disyorkan dalam jawapan sebelumnya. Jadi --sign-off hanyalah tandatangan dan --gpg-sign ialah tandatangan menggunakan kunci GPG.


OK, salah lagi... -S Anda tidak boleh melakukan kedua-duanya pada masa yang sama Jika anda mahu kedua-dua tandatangan dan tandatangan, anda perlu menggunakan kedua-duanya bersama-sama.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!