Jadi seseorang mengintip pekerjaan saya, dan dia memberi tahu saya bahwa saya harus selalu menandatangani komitmen dan tag saya secara kriptografis. Ketika ditanya mengapa, dia tidak tahu untuk menjelaskannya kepada saya, dan berkata "Itu hal yang baik untuk dilakukan".
Mencoba menghindari skenario simpanse yang jelas , mengapa saya harus benar-benar? Apakah benar-benar ada begitu banyak kelebihan dan kekurangan?
Apa alasan praktis yang membuat saya ingin menandatangani setiap komitmen dan tag yang saya buat?
git
cryptography
Madara Uchiha
sumber
sumber
Jawaban:
(Ini sebagian besar didasarkan pada A Git Horror Story: Integritas Repositori Dengan Komitmen Ditandatangani — bacaan yang sangat bagus, dan lebih banyak informasi daripada yang bisa saya masukkan ke dalam jawaban.)
Ada beberapa cara di mana repositori git dapat dikompromikan (ini bukan cacat keamanan, hanya fakta kehidupan — orang tidak boleh menghindari menggunakan git karena ini). Misalnya, seseorang mungkin telah mendorong ke repositori Anda yang mengaku sebagai Anda. Atau dalam hal ini, seseorang bisa saja mendorong ke repositori orang lain yang mengaku sebagai Anda (seseorang bisa mendorong ke repositori mereka sendiri yang mengaku sebagai Anda juga). Ini hanya bagian dari kehidupan dalam DVCS.
Sebagai contoh:
Di sana, saya telah mengubah konfigurasi git saya untuk berpura-pura aku kamu. Dan sekarang saya bisa berkomitmen dan membiarkan komitmen itu entah bagaimana membuat jalan mereka ke produksi build, dan sepertinya Anda sudah melakukannya.
Dengan menandatangani komit (dan tag), orang dapat membuktikan bahwa komit dan tag tertentu berasal dari Anda (dan hal-hal yang tidak ditandatangani seharusnya tidak masuk ke build produksi). Itu benar-benar kunci dari semuanya — dengan menandatangani komitmen, Anda telah mengatakan itu pekerjaan Anda.
Aspek "pekerjaan Anda" sangat penting dalam kernel linux (dan karenanya git) yang terkadang dipukul dengan tuntutan hukum hak cipta. Dengan menandatangani komit, Anda mengatakan bahwa Anda memiliki hak atas perangkat lunak — itu melacak asalnya. Mungkin Anda tidak memiliki akses ke sumber yang diklaim sebagai hak cipta dan klaim tidak berdasar. Mungkin saja perusahaan lupa bahwa Anda bekerja untuk mereka beberapa tahun yang lalu dan di bawah arahan mereka menambahkan bahan ke kernel, atau apa pun.
Ada beberapa perdebatan apakah setiap komit harus ditandatangani. Dari GPG menandatangani git commit? (kembali '09), Linus menulis:
Lebih banyak tentang pemikiran tentang masuk git dapat dibaca di sana juga.
Yang mengatakan, itu membuat jalan ke git.
Tampaknya ada konsensus mayoritas bahwa menandatangani komitmen tidak perlu, tetapi menandatangani tag sangat baik. Posting blog yang ditautkan di atas menunjukkan bahwa seseorang harus menandatangani semuanya. Seperti yang saya katakan, ada beberapa perdebatan tentang apakah setiap komit diperlukan atau tidak.
Kunci untuk debat "tandatangani setiap komitmen" mungkin ada hubungannya dengan alur kerja yang Anda gunakan. Kebanyakan orang membuat banyak komit di repo lokal mereka, dan kemudian mendorong set itu. Itu harus cukup untuk menandai koleksi akhir (dengan asumsi, yaitu, Anda memastikan bahwa semua perubahan sudah benar). Jika Anda bekerja di lingkungan tempat banyak komit tunggal bergerak, perbedaan antara tag dan komit menjadi kurang ... berbeda — dan komit penandatanganan mungkin menjadi lebih bermanfaat.
sumber
commit.gpgsign = true
dan saya dapat memastikan tidak ada kerugian. Meskipun mungkin konyol, sepertinya tidak terlalu mahal.