วิธีการโอเพนซอร์สโครงการที่มีที่เก็บ git มีสื่อที่มีลิขสิทธิ์ในประวัติศาสตร์?


15

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

รายละเอียด:

  • รหัสเป็นรุ่นภายใต้คอมไพล์ เราจะยุบมันทั้งหมดกลับเป็นสาขาเดียวก่อนที่จะปล่อย
  • มีข้อมูลเสียง 400 MB ไฟล์บางไฟล์เป็นเพลงที่ได้รับอนุญาตฟรีจาก Jamendo ส่วนไฟล์อื่น ๆ เป็น MP3 จากคอลเล็กชันส่วนตัวของเรา
  • ไม่ว่าเราจะใช้วิธีใดเราจะเก็บสำเนา repo ดั้งเดิมที่ไม่เปลี่ยนรูปเสมอเพื่อไม่ให้ทำลายประวัติโครงการ

คำถามหลัก: วิธีจัดการกับการเปิดตัวสาธารณะ?

  1. ลบล้างประวัติทั้งหมดของไฟล์ที่เป็นปัญหาจากที่เก็บ git และปล่อย repo ที่แก้ไข (v64 ชี้วิธีการทำเช่นนี้)
  2. อีกทางเลือกหนึ่งให้จับภาพสถานะปัจจุบันของรหัสและไม่ต้องกังวลว่าจะมีประวัติสาธารณะของรหัสเผยแพร่ล่วงหน้า

คำถามด้าน: เราจะหลีกเลี่ยงภาวะที่กลืนไม่เข้าคายไม่ออกนี้ได้อย่างไรในตอนแรกเนื่องจากบางครั้งจำเป็นต้องใช้รหัสหรือสื่อส่วนตัวสำหรับช่วงแรก ๆ ของโครงการ

คำตอบ:


13

GitHub มีหน้าอธิบายวิธีการล้างไฟล์จากประวัติทั้งหมด: ลบข้อมูลที่สำคัญ

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

อันตราย: เมื่อมีการส่งข้อมูลไปแล้วคุณควรพิจารณาว่าข้อมูลนั้นถูกโจมตีหรือไม่ หากคุณกำหนดรหัสผ่านให้เปลี่ยน! หากคุณกำหนดคีย์ให้สร้างคีย์ใหม่

ล้างไฟล์จากที่เก็บของคุณ

เมื่อรหัสผ่านถูกเปลี่ยนแล้วคุณต้องการลบไฟล์ออกจากประวัติและเพิ่มลงใน.gitignoreเพื่อให้แน่ใจว่าไม่ได้มีการยืนยันซ้ำโดยไม่ตั้งใจ สำหรับตัวอย่างของเราเราจะลบออกRakefileจากที่เก็บอัญมณี GitHub ...


ดูเหมือนว่าเครื่องมือที่เหมาะสมสำหรับงานนั้น ฉันยังไม่แน่ใจว่าสิ่งนี้เหมาะสมที่สุดในกรณีของฉันกับการเริ่มต้นจากภาพรวมของ codebase หรือไม่
รักษา mods ของคุณได้ดี

@phyzome: ขึ้นอยู่กับว่าคุณคิดว่าสำคัญแค่ไหนในประวัติศาสตร์ การลบออกเป็นเรื่องง่ายด้วยfilter-branchคำสั่ง - เพียงแค่ให้แน่ใจว่ารันบนโคลนของที่เก็บเนื่องจากมันเป็นการทำลายและไม่สามารถยกเลิกได้
Sharpie

8

คำถามด้าน: เราจะหลีกเลี่ยงภาวะที่กลืนไม่เข้าคายไม่ออกนี้ได้อย่างไรในตอนแรกเนื่องจากบางครั้งจำเป็นต้องใช้รหัสหรือสื่อส่วนตัวสำหรับช่วงแรก ๆ ของโครงการ

หากคุณกำลังจะติดตามไฟล์สื่อขนาดใหญ่ (เสียง 400MB) ให้วางไว้ในที่เก็บแยกต่างหาก

นั่นฆ่านกสองตัวด้วยหินก้อนเดียว:

  1. repo หลักมีขนาดเล็กลง 400MB (ผู้คนไม่จำเป็นต้องดาวน์โหลดเนื้อหามูลค่า 400MB ทุกครั้งที่ลอกแบบ)
  2. สื่อสามารถเป็นส่วนตัวและแยกจากสิ่งอื่นทั้งหมด ดังนั้นจึงไม่จำเป็นต้องทำงานพิเศษเพื่อปล่อยที่เก็บข้อมูลสาธารณะ

หากคุณต้องการคุณสามารถทำให้สะดวกในการทำงานด้วยการทำให้คลังเก็บสื่อเป็นซับโฟลของ repo สาธารณะ (ที่คุณวางแผนจะปล่อย)

ด้วยวิธีนี้คุณเพียงแค่เก็บตัวชี้ไว้ไม่ใช่เนื้อหา (ละเอียดอ่อน) เอง (สำหรับการพัฒนาช่วงแรก) จากนั้นเมื่อคุณจะปล่อย repo ต่อสาธารณะเพียงแค่ลบการอ้างอิง submodule ซึ่งเป็นปัญหาน้อยกว่าการเขียนประวัติของคุณใหม่เพื่อกรองสิ่งที่มีมูลค่า 400MB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.