Perbarui rentang tanggal hak cipta secara otomatis dari git?

10

Saat saya menulis, kami 10 hari memasuki 2012. Saya yakin banyak programmer mengedit string hak cipta di atas file sumber mereka untuk sesuatu seperti:

// Copyright 2008, 2010-2012 Some Company Unlimited

Sistem kontrol versi Anda tahu kapan file diubah sehingga pasti dapat membantu menulis atau menulis ulang string ini. Jadi pertanyaan saya: apakah ada skrip yang dapat memeriksa log git untuk setiap file dan output (atau lebih baik menyisipkan) sebuah string seperti itu?

Saya menggunakan git jadi itu yang menjadi perhatian utama tetapi jangan biarkan saya tahu jika skrip seperti itu ada untuk sistem lain.

Memperbarui:

Kami membutuhkan skrip yang melakukan ini:

  • Berjalan semua file sumber dalam copy pekerjaan kami
  • Menemukan string hak cipta yang ada dan mengidentifikasi tahun, mis. 2007,2009-2011 adalah {2007, 2009, 2010, 2011}
  • Untuk setiap tahun yang tidak disebutkan, beda antara 1 Januari dan 31 Desember (atau hari ini jika tahun ini). Periksa perbedaan dan putuskan apakah layak disebutkan dalam string hak cipta
  • Masukkan string hak cipta baru.
paperjam
sumber
1
Jika saya mengerti dengan benar, tanggalnya adalah opsional. Pertanyaan yang bagus. +1.
Maks.
Saya tahu tanggal tidak penting secara hukum tetapi menarik untuk melihat kapan file disentuh. Jika ada skrip yang dapat saya jalankan untuk mengatur baris ini secara akurat dan otomatis di semua file sumber maka tidak perlu memikirkan lagi tentang ini!
paperjam
2
Saya bertanya-tanya tentang signifikansi hukum dari pemberitahuan hak cipta yang dibuat secara otomatis. Pemberitahuan yang diperbarui itu sendiri tidak dapat dilindungi hak cipta, jadi Anda mengklaim perpanjangan 1 tahun pada hak cipta tanpa menambahkan karya kreatif baru.
David Thornley
Poin bagus @ David. Saya kira alat seperti itu harus mengabaikan komitmennya sendiri. Mungkin juga itu dapat dikonfigurasikan untuk mengabaikan komitmen yang tidak mencantumkan konten baru (mis. Penghapusan teks, perubahan kecil, penggantian nama, pemformatan ulang, dll.)
paperjam
Pertanyaan sebenarnya adalah adakah yang akan peduli dengan kode Anda 70/95/120 tahun dari sekarang?
Nick T

Jawaban:

3

TL; DR

Jangan khawatir! Hak cipta Anda atas proyek tidak akan kedaluwarsa jika Anda tidak memperbarui tahun pada waktunya! Anda aman - tidak bekerja seperti itu.

Versi panjang:

Saya cukup yakin bahwa semua angka tahun dalam pemberitahuan hak cipta menunjukkan awal dari hak cipta bukan kisaran. Jika Anda menambahkan tahun, itu berarti kelanjutan dari awal, bukan akhir. Anda menggunakannya jika Anda menambahkan konten baru (seperti modul baru) untuk menunjukkan tahun awal untuk konten baru itu saja. Ini opsional tetapi harus digunakan untuk perubahan besar, seperti modul baru atau perombakan desain lengkap.

Hak cipta akan kedaluwarsa setelah tahun angka tetap (yang tergantung pada hukum di negara Anda) setelah tahun terakhir dalam pemberitahuan Anda.

Jadi, saya tidak melihat alasan untuk memperbarui header sumber sama sekali.

EDIT:

Masalahnya adalah bahwa biasanya perubahan yang cukup besar melibatkan file sumber yang sama sekali baru atau implementasi ulang yang lama. Jadi, selama Anda selalu menggunakan tahun ini di header file sumber baru Anda baik-baik saja. Tidak perlu apa pun untuk melewati setiap file tunggal untuk melakukan pembaruan. Sebenarnya, satu-satunya hal yang memerlukan perubahan manual adalah jika Anda memiliki rentang tanggal dalam teks lisensi itu sendiri atau dalam file readme.

Penafian: Saya seorang programmer, bukan pengacara.

Goran Jovic
sumber
Anda harus menambahkan rentang tahun / memperbesar kapan pun Anda melakukan perubahan besar pada suatu file, afaict. Jadi alasannya ada. Masalahnya, itu seharusnya tidak otomatis - git tidak bisa memastikan kapan perubahannya besar.
herby
@herby: Saya mengedit klarifikasi dan membalas komentar Anda dalam jawaban saya.
Goran Jovic
IANAL juga, tetapi AFAIK, tanggal kadaluwarsa hak cipta didasarkan pada tanggal kematian penulis yang masih hidup terakhir. Tanggal pembuatan hanya menarik ketika seseorang mengklaim karya sebelumnya pada karya Anda.
Pelaku
@tdammers: IANAL juga, tetapi IIRC di negara-negara di mana badan hukum dapat memiliki hak cipta, hak cipta yang dimiliki oleh orang hukum berakhir berdasarkan tanggal pembuatan. Apakah hak cipta untuk perangkat lunak dipegang oleh perusahaan atau karyawan aktual yang menulisnya tergantung pada yurisdiksi tertentu (hukum IIRC AS memungkinkan hak cipta itu sendiri untuk ditugaskan sementara sebagian besar undang-undang Eropa hanya mengizinkan hak eksklusif sementara hak cipta masih dipegang oleh penulis fisik) dan perjanjian kerja (hak cipta tidak harus diberikan ketika bisa).
Jan Hudec
1

apakah ada skrip yang dapat memeriksa log git untuk setiap file dan output (atau lebih baik menyisipkan) string seperti itu?

Ini bukan skrip, tetapi fitur Git , yang dapat Anda gunakan untuk tugas ini: smudge / clean filter pair

Malas Badger
sumber
-2

Tidak, git tidak tahu kapan file dimodifikasi.

Git commit object cukup mendefinisikan konten semua file pada titik tertentu. Konten yang sama dapat dengan mudah muncul di komit lain, bahkan yang tidak terkait. Tidak ada yang membuat salah satu dari mereka lebih penting. Jadi jawabannya mungkin ambigu, meskipun seringkali tidak.

Jan Hudec
sumber
Hmmm ... Bagaimana git tahu tanggal ketika saya mengetik git log?
paperjam
@ paperjam: Ia tahu kapan komit dibuat. Saat Anda mengetik git log, itu berjalan komit, jadi tentu saja tahu tanggal mereka. Tetapi mungkin tidak tahu komit mana yang memperkenalkan versi file tertentu, karena mungkin ada lebih dari satu.
Jan Hudec
Itu tidak menyimpan bit kontrol akses dalam gumpalan, jadi mungkin juga menyimpan tanggal modifikasi pada saat itu. Tapi saya tidak yakin.
Tamás Szelei
@ TamásSzelei: Tidak, gumpalan sebenarnya adalah kata "gumpalan", baris baru dan konten. Itu dia. Bahkan bukan nama. Sebuah pohon memiliki nama, jenis dan bit yang dapat dieksekusi untuk gumpalan dan menunjuk ke sub pohon itu. Tapi itu masih sepenuhnya ahistoris. Ini disengaja dan berdasarkan desain.
Jan Hudec
1
Saya mungkin memperkirakan jawaban OP di sini tapi saya pikir satu-satunya hal yang penting, dari sudut pandang rilis, adalah ketika komit dibuat dan bukan kapan file itu terakhir disentuh. Sederhananya jika tidak dilakukan dan digabungkan maka tidak bisa dirilis. Karenanya mengapa melakukan sesuatu yang sederhana git log --follow [filename] | grep -m 1 Dateakan cukup untuk mendapatkan tanggal terbaru.
Spoike