คำถามติดแท็ก git

Git เป็น DVCS โอเพนซอร์ส (ระบบควบคุมเวอร์ชันแบบกระจาย)

5
ระบบควบคุมเวอร์ชันใดที่สามารถจัดการทุกด้านได้? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ไม่กี่เดือนที่ผ่านมาฉันขุดลงในการโค่นล้มและ GIT และรู้สึกผิดหวัง พวกเขาจัดการ SOURCE CODE ได้ดี แต่ไม่ใช่ด้านอื่น ๆ ตัวอย่างเช่นเว็บไซต์ภายใต้การควบคุมเวอร์ชันจำเป็นต้องจัดการการเป็นเจ้าของไฟล์ / ไดเรกทอรีการเข้าถึงการอ่านและเขียนไฟล์ / ไดเรกทอรีรายการควบคุมการเข้าถึงการประทับเวลาเนื้อหาฐานข้อมูล และลิงก์ภายนอก มีระบบควบคุมเวอร์ชันที่สามารถทำการพลิกกลับได้อย่างสมบูรณ์แบบเมื่อทำการโหลดจากการสำรองข้อมูลรายเดือนหรือไม่?

2
คำขอดึงสควอชนั้นทำลายอัลกอริธึมการผสานของคอมไพล์หรือไม่
ฉันกำลังทำงานให้กับ บริษัท ที่ใช้ VSTS ในการจัดการรหัส git วิธีการ "แนะนำ" ของ Microsoft ในการผสานสาขาคือการทำ "ผสานสควอช" ซึ่งหมายความว่าการคอมมิชชันทั้งหมดสำหรับสาขานั้นจะถูกบีบให้เป็นคอมมิชชันใหม่ที่รวมการเปลี่ยนแปลงทั้งหมด ปัญหาคือถ้าฉันทำการเปลี่ยนแปลงบางอย่างในสาขาหนึ่งสำหรับรายการค้างหนึ่งรายการทันทีต้องการเริ่มทำการเปลี่ยนแปลงในสาขาอื่นสำหรับรายการค้างอื่นและการเปลี่ยนแปลงเหล่านั้นขึ้นอยู่กับชุดการเปลี่ยนแปลงของสาขาแรก ฉันสามารถสร้างสาขาสำหรับรายการในมือนั้นและยึดตามสาขาแรก จนถึงตอนนี้ดีมาก อย่างไรก็ตามเมื่อถึงเวลาที่จะสร้างคำขอดึงสำหรับสาขาที่สองของฉันสาขาแรกจึงถูกรวมเข้ากับต้นแบบแล้วและเนื่องจากเป็นการรวมกันเป็นสควอชจึงทำให้การตั้งค่าสถานะขัดแย้งกันมาก นี่เป็นเพราะคอมไพล์ไม่เห็นการกระทำดั้งเดิมที่สาขาที่สองมีพื้นฐานมาจากมันแค่เห็นสควอชขนาดใหญ่หนึ่งเดียวดังนั้นเพื่อที่จะรวมสาขาที่สองเข้าด้วยกันเพื่อให้เชี่ยวชาญ ด้านบนของสควอชผสานทำให้เกิดความขัดแย้งมากมาย ดังนั้นคำถามของฉันคือมีวิธีใดบ้างที่จะหลีกเลี่ยงปัญหานี้ (นอกเหนือจากที่ไม่เคยแยกคุณลักษณะหนึ่งออกจากกันซึ่ง จำกัด เวิร์กโฟลว์ของฉัน) หรือการรวมสควอชเพียงแค่ทำลายอัลกอริทึมการรวมของคอมไพล์
17 git 

3
ทำไมคุณไม่ยอมรับการเปลี่ยนแปลงที่ถูกผสานทันที?
สำนักงานของฉันใช้ Git และ SourceTree สำหรับการควบคุมเวอร์ชันของเรา สิ่งนี้เกิดขึ้นเพราะเมื่อฉันเข้าร่วมมีการควบคุมเวอร์ชันเป็นศูนย์และ SourceTree เป็นระบบเดียวที่ฉันเคยใช้ ฉันไม่ใช่ผู้เชี่ยวชาญ แต่อย่างใด แต่ฉันมีประสบการณ์มากที่สุดจากเพื่อนร่วมงานของฉันดังนั้นฉันจึงเป็นผู้เชี่ยวชาญโดยพฤตินัยที่รับผิดชอบในการสอนให้ทุกคนใช้ Git อย่างถูกต้องและแก้ไขข้อผิดพลาดที่เกิดขึ้น ฉันกำลังทำเอกสารการสอนที่ผ่าน Git และ SourceTree และอธิบายทุกขั้นตอนของกระบวนการ ในกระบวนการดึงบทสนทนา SourceTree ให้คุณเลือกตัวเลือก "กระทำการเปลี่ยนแปลงที่ถูกรวมทันที" ฉันเข้าใจว่าสิ่งนี้ทำอะไรและทำไมจึงมีประโยชน์ สิ่งที่ฉันไม่เข้าใจคือเหตุผลที่ทุกคนไม่ต้องการใช้คุณลักษณะนี้ มีคนอธิบายได้ไหมว่าทำไมคุณถึงไม่ต้องการให้มีการเปลี่ยนแปลงที่ถูกรวมเข้าด้วยกันโดยอัตโนมัติ? ฉันพยายามที่จะเข้าใจเหตุผลเพื่อให้ฉันสามารถอธิบายถึงประโยชน์ของฟีเจอร์นี้ได้ดีขึ้นและรับทราบถึงสิ่งที่ผิดพลาดในการมองหาในอนาคต แก้ไข: ฉันไม่เชื่อว่าคำถามของฉันซ้ำกับคำถามที่เชื่อมโยง คำถามที่เชื่อมโยงกันนั้นเป็นการถามถี่ที่จะกระทำ ฉันถามว่าทำไมคนเลือกที่จะไม่ใช้คุณลักษณะเฉพาะที่เกี่ยวข้องกับการคอมมิชชันคอมมิชชันใน SourceTree

4
มีสาขาการผลิตหรือใช้ต้นแบบ?
ฉันทำงานกับทีมเล็ก ๆ กับนักพัฒนาระยะไกลอื่น ๆ ในRailsแอปพลิเคชัน เรากำลังเริ่มแก้ไขgitเวิร์กโฟลว์ของเรา เราคิดเกี่ยวกับโครงสร้างการแตกแขนงดังนี้: (dev) -> (qa) -> (stag) -> (master) แต่นักพัฒนาบางคนคิดว่ามันอาจสับสนน้อยกว่าสำหรับนักพัฒนาใหม่ที่อาจผลักดันการผลิตโดยอัตโนมัติ พวกเขาคิดว่าจะให้ทุกคนทำงานเป็นผู้เชี่ยวชาญและสร้างสาขาแยกต่างหากสำหรับการผลิต (master) -> (qa) -> (stag) -> (prod) ฉันได้รับการสอนว่าคุณต้องการให้ต้นแบบสามารถใช้งานได้และไม่ได้ใช้เพื่อการพัฒนาและจากที่ก่อนหน้านี้ที่ฉันเคยทำงานเป็นอาจารย์มักจะนำไปใช้ในการผลิตได้เสมอ อะไรคือข้อเสียของการใช้โครงสร้างการแยกสาขาที่ใช้สำหรับการพัฒนาเป็นหลักและแยกสาขาที่แยกต่างหากคือสิ่งที่คุณใช้สำหรับการปรับใช้?
16 git 

4
เวิร์กโฟลว์: การใช้รูปแบบเอกสารไบนารีใน Git โดยไม่ล็อค (ย้ายจากการโค่นล้ม)
เราเป็นที่ปรึกษาด้านซอฟต์แวร์ที่มีโครงการมากมายสำหรับลูกค้าที่แตกต่างกัน เราใช้การโค่นล้มแบบดั้งเดิม แต่ขณะนี้กำลังพิจารณาที่จะย้ายไป Git ส่วนสำคัญของเอกสารที่เราผลิตนั้นจะถูกแบ่งปันกับลูกค้าของเรา (ความต้องการ, การออกแบบระดับโลก, รายละเอียดการทดสอบ, ฯลฯ ) และเราใช้ MS Office เพื่อผลิตสิ่งเหล่านี้ ในการโค่นล้มเราสามารถใช้คุณสมบัติ "ล็อค" เพื่อให้แน่ใจว่าไม่มีใครแก้ไขเอกสารเดียวกันในเวลาเดียวกัน ใน Git คุณไม่สามารถทำเช่นนั้นได้เนื่องจากลักษณะการกระจายของมัน Git ไม่มีการล็อค ล็อคเป็นมากกว่ากลไกการสื่อสารเพียงเล็กน้อย แต่มันมีประสิทธิภาพมาก ปัจจุบันรหัสของเราและเอกสารที่ต้องพบกับลูกค้ามักอยู่ในโฟลเดอร์ย่อยที่แตกต่างกันของที่เก็บ svn ที่แตกต่างกัน เมื่อย้ายไปคอมไพล์คุณอยากแนะนำอะไรให้เราทำ? ฉันเห็นชุดตัวเลือก: เราย้ายที่เก็บ svn ไปที่ git 1-on-1 แทนที่จะใช้การล็อกไฟล์ Office เราทำในสิ่งที่คน git แนะนำและพยายามเปลี่ยนเวิร์กโฟลว์ของเราเพื่อแก้ไข สิ่งนี้อาจทำงานได้ในสาขาในการแก้ไขเอกสารใด ๆ และรวมเข้ากับการตรวจสอบ วิธีนี้แบ่งออกเป็นเช่นแผ่นงาน Excel ที่มีข้อมูลการจัดการโครงการ พวกเขาแก้ไขได้อย่างง่ายดายโดยสมาชิกในทีม (และเราขอแนะนำให้ดำเนินการนี้) แต่ไม่ต้องผ่านกระบวนการตรวจสอบอย่างเป็นทางการ เราใช้ git …
16 git  svn  dvcs  excel  word 

3
ดึงการเปลี่ยนแปลงจากต้นแบบไปยังสาขาที่ทำงานของฉันหรือไม่
เราสองคนกำลังทำงานกับบางสิ่งอยู่ เรากำลังใช้โครงสร้างสาขานี้ เจ้านาย dev-A dev-B เราทั้งคู่ทำงานแยกสาขา (dev-A, B) และเมื่อใดก็ตามที่เราทำเราส่งเสริมการเปลี่ยนแปลงของเราเป็นหลัก แต่ข้อเสียเปรียบของเรื่องนี้คือเราไม่สามารถเปลี่ยนแปลงสิ่งที่นักพัฒนาคนอื่นทำ ทุกอย่างมีอยู่ในทรีหลัก - แต่เราไม่สามารถรับอัปเดตล่าสุดที่นักพัฒนาคนอื่นทำ มีวิธีแก้ไขปัญหานี้หรือไม่หรือเราควรจะเปลี่ยนโครงสร้างสาขาของเรา (ต่อคุณสมบัติ)?
16 git 

3
Git: การแก้ไขข้อบกพร่องที่มีผลกระทบต่อสองสาขา
ฉันใช้ repo Git ของฉันในแบบจำลอง Git branching ที่ประสบความสำเร็จและสงสัยว่าจะเกิดอะไรขึ้นถ้าคุณมีสถานการณ์นี้: สมมติว่าฉันกำลังพัฒนาบนฟีเจอร์สองสาขา A และ B และ B ต้องใช้รหัสจาก A. โหนด X แนะนำข้อผิดพลาดในฟีเจอร์ A ซึ่งส่งผลกระทบต่อสาขา B แต่ไม่พบที่โหนด Y ที่ผสานคุณสมบัติ A และ B และ ทำการทดสอบก่อนที่จะแตกแขนงออกไปอีกครั้งและทำงานในการทำซ้ำครั้งถัดไป เป็นผลให้ข้อผิดพลาดที่พบในโหนด Z โดยคนที่ทำงานเกี่ยวกับคุณสมบัติ B ในขั้นตอนนี้ก็ตัดสินใจว่าจำเป็นต้องมีการแก้ไขข้อบกพร่อง การแก้ไขนี้ควรนำไปใช้กับฟีเจอร์ทั้งสองเนื่องจากผู้ที่ทำงานในฟีเจอร์ A ต้องมีการแก้ไขบั๊กเนื่องจากเป็นส่วนหนึ่งของฟีเจอร์ ควรจะสร้างสาขา bugfix จากคุณสมบัติ A ล่าสุดหรือไม่ (รวมเป็นหนึ่งจากโหนด Y) จากนั้นผสานกับคุณสมบัติ A หลังจากนั้นฟีเจอร์ทั้งสองจะถูกรวมเข้ากับการพัฒนาอีกครั้งและทดสอบก่อนที่จะแตกแขนงออก? ปัญหานี้คือมันต้องการให้ทั้งสองสาขารวมเพื่อแก้ไขปัญหา เนื่องจากฟีเจอร์ B …
16 git  bug  branching 

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

3
กลยุทธ์การแยก Git สำหรับโค้ดที่ยังไม่เผยแพร่ซึ่งใช้งานมานาน
ที่ทีมของเรานอกเหนือจากงานแต่ละหน่วย (เรื่อง) เรามีธีมการทำงานที่ยาวนานขึ้น (Epics) เรื่องราวหลากหลายทำให้มหากาพย์ ตามเนื้อผ้าเรามีฟีเจอร์กิ่งไม้สำหรับแต่ละเรื่องและรวมเหล่านั้นเข้ากับมาสเตอร์เมื่อพวกเขาผ่าน QA อย่างไรก็ตามเราต้องการเริ่มระงับการเผยแพร่เรื่องราวที่เสร็จสมบูรณ์ใน Epic จนกว่า Epic จะถือเป็น "คุณลักษณะเสร็จสมบูรณ์" เราจะปล่อยฟีเจอร์เหล่านี้เป็นการผลิตเมื่อปิด Epic ทั้งหมดแล้วเท่านั้น นอกจากนี้เรามีเซิร์ฟเวอร์ที่สร้างขึ้นทุกคืน - เราต้องการให้เรื่องราวทั้งหมดที่ปิด (รวมถึงส่วนที่เป็นส่วนหนึ่งของ Epics ที่ไม่สมบูรณ์) ถูกนำไปใช้กับเซิร์ฟเวอร์รายคืนนี้โดยอัตโนมัติ มีคำแนะนำใด ๆ เกี่ยวกับวิธีจัดการ repo ของเราเพื่อให้บรรลุเป้าหมายนี้หรือไม่? ฉันคิดว่าจะแนะนำ "สาขาที่ยิ่งใหญ่" ซึ่งเราจะรวมเรื่องที่ปิดไปยังสาขาที่เกี่ยวข้องแทนการเป็นอาจารย์โดยตรง แต่ข้อกังวลของฉันคือ: ฉันกังวลเกี่ยวกับความขัดแย้งที่อาจเกิดขึ้นหากสาขามหากาพย์เปิดให้บริการเป็นเวลานาน งานสร้างยามค่ำคืนจะต้องรวมสาขาของมหากาพย์ทั้งหมดไว้ในสาขา "สร้างยามค่ำคืน" อีกครั้งอาจเกิดความขัดแย้งผสานและสิ่งนี้จะต้องทำโดยอัตโนมัติ

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

2
โครงสร้างของที่เก็บ Git
ขออภัยถ้านี่เป็นรายการซ้ำฉันมอง เรากำลังจะย้ายไป Git ในการโค่นล้มฉันเคยมีโฟลเดอร์ \ trunk, \ branch และ \ tags ด้วย Git การสลับไปมาระหว่างสาขาจะแทนที่เนื้อหาของไดเรกทอรีการทำงานดังนั้นฉันถูกต้องที่จะสมมติว่าวิธีที่เราใช้ในการทำงานนั้นไม่ได้ใช้กับ Git ฉันเดาว่าฉันจะมีโฟลเดอร์ repo ที่อาจเป็น gitignore และ readme.txt จากนั้นโฟลเดอร์สำหรับโครงการที่ประกอบเป็น repo และนั่นก็คือ

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

1
เหตุใดที่เก็บ Git / Mercurial จึงใช้พื้นที่น้อย
ฉันได้อ่านการสนทนาหลายครั้งที่นี่และเพื่อให้ที่เก็บ DVCS ใช้พื้นที่เท่ากันหรือน้อยกว่าที่เคาน์เตอร์ส่วนกลาง ฉันอาจจะพลาด แต่ฉันไม่พบคำอธิบายที่ดีว่าทำไมถึงเป็นเช่นนั้น ใครรู้บ้าง

2
สคริปต์ขนาดเล็กจำนวนมากหนึ่งที่เก็บหรือหลาย ๆ
เพื่อนร่วมงานและตัวฉันเองพบเจอปัญหาที่เรามีความคิดเห็นหลายอย่าง ขณะนี้เรามีพื้นที่เก็บข้อมูล git ที่เราเก็บ cronjobs ของเราทั้งหมดมีประมาณ 20 crons และมันไม่เกี่ยวข้องจริงๆยกเว้นว่าพวกมันเป็นสคริปต์ python ขนาดเล็กและจำเป็นสำหรับกิจกรรมบางอย่าง เรากำลังใช้fabric.pyไฟล์เพื่อปรับใช้และrequirements.txtไฟล์เพื่อจัดการข้อกำหนดสำหรับสคริปต์ทั้งหมด ปัญหาของเราคือโดยพื้นฐานแล้วเราจะเก็บสคริปต์เหล่านี้ทั้งหมดไว้ในที่เก็บคอมไพล์เดียวหรือเราควรแยกพวกมันออกเป็นที่เก็บของพวกเขาเองเหรอ? โดยทำให้พวกมันอยู่ในที่เก็บเดียวทำให้ง่ายต่อการปรับใช้กับเซิร์ฟเวอร์เดียว เราสามารถใช้ไฟล์ cron เพียงไฟล์เดียวสำหรับสคริปต์ทั้งหมด อย่างไรก็ตามเรื่องนี้รู้สึกผิดเนื่องจาก cronjobs 20 คนไม่เกี่ยวข้องกับเหตุผล นอกจากนี้เมื่อใช้หนึ่งrequirements.txtไฟล์สำหรับสคริปต์ทั้งหมดมันยากที่จะเข้าใจว่าการอ้างอิงสำหรับสคริปต์นั้น ๆ และพวกเขาทั้งหมดต้องใช้แพ็คเกจรุ่นเดียวกัน เราสามารถแยกสคริปต์ทั้งหมดออกเป็นที่เก็บข้อมูลของตนเอง แต่สิ่งนี้จะสร้างที่เก็บข้อมูลที่แตกต่างกัน 20 แห่งซึ่งจำเป็นต้องจดจำและจัดการ สคริปต์เหล่านี้ส่วนใหญ่ไม่ได้มีขนาดใหญ่มากและวิธีการแก้ปัญหานั้นดูเหมือนจะเกินความจริง คำถามที่เกี่ยวข้องคือเราจะใช้ไฟล์ crontab ขนาดใหญ่หนึ่งไฟล์สำหรับ cronjobs ทั้งหมดหรือแยกไฟล์สำหรับแต่ละไฟล์หรือไม่ หากแต่ละคนมีของตัวเองการติดตั้งของ crontab จะหลีกเลี่ยงการเขียนทับอีก 19 รายการได้อย่างไร นี่ก็ดูเหมือนจะเป็นความเจ็บปวดเพราะในตอนนั้นมีไฟล์ cron 20 ไฟล์ที่แตกต่างกันเพื่อติดตาม กล่าวโดยย่อคำถามและปัญหาหลักของเราคือเรารวบรวมพวกเขาทั้งหมดอย่างใกล้ชิดเป็นที่เก็บหนึ่งหรือเราแยกพวกเขาออกเป็นพื้นที่เก็บข้อมูลของตัวเองด้วยความต้องการของตัวเอง.txtและ fabfile.py? เรารู้สึกว่าเราอาจจะมองหาวิธีแก้ปัญหาที่ง่ายมาก มีวิธีที่ง่ายกว่าในการจัดการกับปัญหานี้หรือไม่?

2
วิธีการโอเพนซอร์สโครงการที่มีที่เก็บ git มีสื่อที่มีลิขสิทธิ์ในประวัติศาสตร์?
ฉันต้องการเผยแพร่โครงการซอฟต์แวร์บันทึกข้อมูลเสียงด้วยลายนิ้วมือภายใต้ลิขสิทธิ์ฟรี แต่พื้นที่เก็บข้อมูลมีไฟล์เสียงที่มีลิขสิทธิ์ กรณีทดสอบยังใช้ไฟล์เหล่านี้ในปัจจุบัน ฉันจะปล่อยรหัสต่อสาธารณะด้วยประวัติเวอร์ชันสูงสุด แต่ไม่ละเมิดลิขสิทธิ์ได้อย่างไร รายละเอียด: รหัสเป็นรุ่นภายใต้คอมไพล์ เราจะยุบมันทั้งหมดกลับเป็นสาขาเดียวก่อนที่จะปล่อย มีข้อมูลเสียง 400 MB ไฟล์บางไฟล์เป็นเพลงที่ได้รับอนุญาตฟรีจาก Jamendo ส่วนไฟล์อื่น ๆ เป็น MP3 จากคอลเล็กชันส่วนตัวของเรา ไม่ว่าเราจะใช้วิธีใดเราจะเก็บสำเนา repo ดั้งเดิมที่ไม่เปลี่ยนรูปเสมอเพื่อไม่ให้ทำลายประวัติโครงการ คำถามหลัก: วิธีจัดการกับการเปิดตัวสาธารณะ? ลบล้างประวัติทั้งหมดของไฟล์ที่เป็นปัญหาจากที่เก็บ git และปล่อย repo ที่แก้ไข (v64 ชี้วิธีการทำเช่นนี้) อีกทางเลือกหนึ่งให้จับภาพสถานะปัจจุบันของรหัสและไม่ต้องกังวลว่าจะมีประวัติสาธารณะของรหัสเผยแพร่ล่วงหน้า คำถามด้าน: เราจะหลีกเลี่ยงภาวะที่กลืนไม่เข้าคายไม่ออกนี้ได้อย่างไรในตอนแรกเนื่องจากบางครั้งจำเป็นต้องใช้รหัสหรือสื่อส่วนตัวสำหรับช่วงแรก ๆ ของโครงการ

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