อัปเดตช่วงวันที่ลิขสิทธิ์โดยอัตโนมัติจากคอมไพล์หรือไม่


10

ขณะที่ฉันเขียนเราใช้เวลา 10 วันในปี 2012 ฉันคิดว่าโปรแกรมเมอร์หลายคนกำลังแก้ไขสตริงลิขสิทธิ์ที่ด้านบนของไฟล์ต้นฉบับของพวกเขาเป็นอย่างเช่น:

// Copyright 2008, 2010-2012 Some Company Unlimited

ระบบควบคุมเวอร์ชันของคุณรู้ว่าเมื่อใดที่ไฟล์ถูกแก้ไขดังนั้นจึงสามารถช่วยเขียนหรือเขียนสตริงเหล่านี้ได้ ดังนั้นคำถามของฉัน: มีสคริปต์ที่สามารถตรวจสอบบันทึก git สำหรับแต่ละไฟล์และผลลัพธ์ (หรือแทรกที่ดีขึ้น) สตริงเช่นนั้นเกี่ยวกับ?

ฉันใช้คอมไพล์ดังนั้นมันจึงเป็นเรื่องที่น่าสนใจหลัก แต่จะแจ้งให้ฉันทราบหากมีสคริปต์ดังกล่าวสำหรับระบบอื่น ๆ

ปรับปรุง:

เราต้องการสคริปต์ที่ทำสิ่งนี้:

  • เดินไฟล์ต้นฉบับทั้งหมดในสำเนาการทำงานของเรา
  • ค้นหาสตริงลิขสิทธิ์ที่มีอยู่และระบุปีเช่น 2007,2009-2011 จะเป็น {2007, 2009, 2010, 2011}
  • สำหรับแต่ละปีที่ไม่ได้กล่าวถึงแตกต่างกันระหว่าง 1 มกราคมถึง 31 ธันวาคม (หรือวันนี้ถ้าปีปัจจุบัน) ตรวจสอบความแตกต่างและตัดสินใจว่ามันควรค่าแก่การกล่าวถึงในสตริงลิขสิทธิ์หรือไม่
  • แทรกสตริงลิขสิทธิ์ใหม่

1
หากฉันเข้าใจถูกต้องวันที่จะเป็นตัวเลือกต่อไป เป็นคำถามที่ดี +1
Maxpm

ฉันรู้ว่าวันที่นั้นไม่ได้มีความสำคัญทางกฎหมาย แต่เป็นที่น่าสนใจที่จะดูว่าเมื่อใดที่ไฟล์ถูกแตะ หากมีสคริปต์ที่ฉันสามารถเรียกใช้เพื่อตั้งค่าบรรทัดนี้อย่างถูกต้องและโดยอัตโนมัติในทุกไฟล์ต้นฉบับแล้วไม่จำเป็นต้องคิดอะไรเกี่ยวกับเรื่องนี้อีก!
paperjam

2
ฉันสงสัยเกี่ยวกับความสำคัญทางกฎหมายของประกาศลิขสิทธิ์ที่สร้างขึ้นโดยอัตโนมัติ การแจ้งเตือนที่อัปเดตแล้วนั้นไม่ได้มีลิขสิทธิ์ดังนั้นคุณจึงอ้างสิทธิ์ในลิขสิทธิ์ 1 ปีโดยไม่ต้องเพิ่มงานสร้างสรรค์ใหม่
David Thornley

จุดดี @ เดวิด ฉันเดาว่าเครื่องมือดังกล่าวจะต้องเพิกเฉยต่อการกระทำของตนเอง บางทีมันอาจถูกกำหนดค่าให้ละเว้นการกระทำที่ไม่พิมพ์เนื้อหาใหม่ (เช่นการลบข้อความการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ การเปลี่ยนรูปการฟอร์แมต ฯลฯ )
paperjam

คำถามจริงคือทุกคนจะสนใจรหัสของคุณ 70/95/120 ปีจากนี้
Nick T

คำตอบ:


3

TL; DR

ไม่ต้องกังวล! ลิขสิทธิ์ของคุณในโครงการจะไม่หมดอายุหากคุณไม่ได้อัปเดตทุกปี! คุณปลอดภัย - มันไม่ทำงานอย่างนั้น

รุ่นยาว:

ฉันค่อนข้างแน่ใจว่าตัวเลขตลอดทั้งปีในประกาศด้านลิขสิทธิ์ระบุว่าจุดเริ่มต้นของลิขสิทธิ์ไม่ใช่ช่วง หากคุณเพิ่มปีหมายความว่าความต่อเนื่องของการเริ่มต้นไม่สิ้นสุด คุณใช้มันหากคุณเพิ่มเนื้อหาใหม่ (เช่นโมดูลใหม่) เพื่อระบุปีเริ่มต้นสำหรับเนื้อหาใหม่นั้นเท่านั้น มันเป็นทางเลือก แต่ควรใช้สำหรับการเปลี่ยนแปลงขนาดใหญ่เช่นโมดูลใหม่ทั้งหมดหรือการออกแบบโฉมที่สมบูรณ์

ลิขสิทธิ์ควรหมดอายุหลังจากจำนวนปีที่แน่นอน (ซึ่งขึ้นอยู่กับกฎหมายในประเทศของคุณ) หลังจากปีที่แล้วในหนังสือแจ้งของคุณ

ดังนั้นฉันไม่เห็นเหตุผลที่จะอัปเดตส่วนหัวของแหล่งข้อมูลที่วุ่นวาย

แก้ไข:

สิ่งนี้คือการเปลี่ยนแปลงที่มักจะเกี่ยวข้องกับไฟล์ต้นฉบับใหม่หรือการนำไฟล์เก่าไปใช้ใหม่ ดังนั้นตราบใดที่คุณใช้ปีปัจจุบันในส่วนหัวของไฟล์ต้นฉบับใหม่คุณก็ใช้ได้ ไม่จำเป็นต้องผ่านสิ่งใด ๆ ทุกไฟล์เพื่อทำการปรับปรุง ที่จริงแล้วสิ่งเดียวที่ต้องเปลี่ยนด้วยตนเองคือถ้าคุณมีช่วงวันที่ในข้อความลิขสิทธิ์เองหรือในไฟล์ readme

ข้อจำกัดความรับผิดชอบ:ฉันเป็นโปรแกรมเมอร์ไม่ใช่นักกฎหมาย


คุณควรเพิ่มปี / ขยายช่วงเมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงไฟล์, afaict ดังนั้นการอยู่ที่นั่น ปัญหาคือไม่ควรเป็นแบบอัตโนมัติ - คอมไพล์ไม่สามารถบอกได้ว่าการเปลี่ยนแปลงนั้นมีสาระสำคัญเมื่อใด
herby

@herby: ฉันแก้ไขในการชี้แจงและตอบความคิดเห็นของคุณในคำตอบของฉัน
Goran Jovic

IANAL อย่างใดอย่างหนึ่ง แต่ AFAIK วันหมดอายุของลิขสิทธิ์ขึ้นอยู่กับวันที่เสียชีวิตของผู้เขียนคนสุดท้ายที่รอดชีวิต วันที่สร้างเป็นสิ่งที่น่าสนใจก็ต่อเมื่อมีคนอ้างสิทธิ์งานศิลปะของคุณ
tdammers

@tdammers: IANAL เช่นกัน แต่ IIRC ในประเทศที่บุคคลตามกฎหมายสามารถถือครองลิขสิทธิ์ลิขสิทธิ์ที่ถือโดยบุคคลตามกฎหมายจะหมดอายุตามวันที่สร้าง ไม่ว่าจะเป็นลิขสิทธิ์ของซอฟต์แวร์ที่จัดขึ้นโดย บริษัท หรือพนักงานที่แท้จริงที่เขียนขึ้นอยู่กับเขตอำนาจศาลเฉพาะ (กฎหมาย IIRC ของสหรัฐอเมริกาอนุญาตให้มีการกำหนดลิขสิทธิ์เองในขณะที่กฎหมายในยุโรปส่วนใหญ่ให้สิทธิ์เฉพาะในขณะที่ลิขสิทธิ์ยังคงอยู่ และข้อตกลงการทำงาน (ลิขสิทธิ์ไม่จำเป็นต้องได้รับมอบหมายเมื่อมันสามารถ)
Jan Hudec

1

มีสคริปต์ที่สามารถตรวจสอบบันทึก git สำหรับแต่ละไฟล์และเอาท์พุท (หรือดีกว่าแทรก) สตริงเช่นนั้นเกี่ยวกับ?

ไม่ใช่สคริปต์ต่อ se แต่เป็นคุณสมบัติ Git ซึ่งคุณสามารถใช้สำหรับงานนี้: smudge / clean filter pair


-2

ไม่คอมไพล์ไม่รู้เมื่อไฟล์ถูกแก้ไข

Git กระทำวัตถุเพียงกำหนดเนื้อหาของไฟล์ทั้งหมดที่จุดเฉพาะ เนื้อหาเดียวกันอาจปรากฏในการกระทำอื่นได้อย่างง่ายดายแม้แต่เนื้อหาที่ไม่เกี่ยวข้อง ไม่มีอะไรที่จะทำให้หนึ่งในนั้นสำคัญกว่า ดังนั้นคำตอบอาจไม่ชัดเจนแม้ว่ามันจะไม่บ่อยนัก


อืม ... git รู้วันที่พิมพ์ยังgit logไง?
paperjam

@paperjam: มันรู้เมื่อกระทำที่ถูกสร้างขึ้น เมื่อคุณพิมพ์git logมันจะดำเนินการดังนั้นแน่นอนว่ามันรู้วันที่ของพวกเขา แต่อาจไม่ทราบว่าไฟล์ใดที่แนะนำเวอร์ชันเฉพาะของไฟล์เพราะอาจมีมากกว่าหนึ่งไฟล์
Jan Hudec

มันบันทึกบิตควบคุมการเข้าถึงใน blob ดังนั้นมันอาจบันทึกวันที่การแก้ไขที่จุดนั้นเช่นกัน แต่ฉันไม่แน่ใจ.
Tamás Szelei

@ TamásSzelei: ไม่หยดเป็นคำว่า "หยด" ขึ้นบรรทัดใหม่และเนื้อหา แค่นั้นแหละ. ไม่แม้แต่ชื่อ ต้นไม้มีชื่อประเภทและบิตที่ใช้งานได้สำหรับ blobs และ subtrees ชี้ไปที่ แต่นั่นก็ยังเป็น ahistorical ทั้งหมด นี่คือเจตนาและโดยการออกแบบ
Jan Hudec

1
ฉันอาจคาดการณ์คำตอบของ OP ที่นี่ แต่ฉันคิดว่าสิ่งเดียวที่สำคัญจากมุมมองของการเปิดตัวคือเมื่อมีการคอมมิชชันและไม่ใช่เมื่อสัมผัสไฟล์ครั้งสุดท้าย ใส่เพียงถ้ามันไม่ได้มุ่งมั่นและผสานแล้วมันจะไม่ได้รับการปล่อยตัว เหตุใดจึงต้องทำอะไรที่เรียบง่ายgit log --follow [filename] | grep -m 1 Dateพอ ๆ กับที่จะได้รับวันที่ล่าสุด
Spoike
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.