ไม่มีคำตอบที่แน่นอนสำหรับเรื่องนี้
โดยทั่วไปนักแต่งเพลงไม่ควรทำในสิ่งที่ระบบการสร้างตั้งใจจะทำและคุณไม่ควรใส่นักแต่งเพลงไว้ใน VCS นักแต่งเพลงอาจย้อนกลับไปอย่างแปลก ๆ ผู้ใช้ปลายทางมากกว่าผู้สร้างไม่ควรใช้ไฟล์ล็อค โดยปกติแล้วระบบการสร้างของคุณจะเก็บสแน็ปช็อต, dirs ที่นำกลับมาใช้ใหม่ได้, แทนที่จะเป็น dir ที่ว่างเปล่าในแต่ละครั้ง ผู้ที่เช็คเอาต์ lib จากผู้แต่งอาจต้องการให้ lib นั้นใช้การล็อคเพื่อให้การอ้างอิงที่การโหลด lib ได้รับการทดสอบ
ในทางตรงกันข้ามที่เพิ่มภาระการจัดการเวอร์ชันอย่างมีนัยสำคัญซึ่งคุณเกือบจะต้องการหลาย ๆ เวอร์ชันของทุกไลบรารี่เนื่องจากการอ้างอิงจะถูกล็อคอย่างเคร่งครัด หากไลบรารีทั้งหมดมีแนวโน้มที่จะมีเวอร์ชันที่แตกต่างกันเล็กน้อยคุณจำเป็นต้องมีการสนับสนุนหลายไลบรารี่และคุณสามารถดูขนาดของการพึ่งพาที่ต้องการได้อย่างรวดเร็วดังนั้นจึงแนะนำให้เก็บไว้ในใบไม้
เมื่อนำขึ้นบอร์ดฉันไม่พบไฟล์ล็อคที่จะเป็นประโยชน์ทั้งห้องสมุดหรือผู้ทำงานของคุณเอง ใช้สำหรับฉันเท่านั้นคือในแพลตฟอร์มการสร้าง / ทดสอบซึ่งยังคงมีสินทรัพย์ที่ได้มาจากภายนอกเท่านั้นที่จะอัปเดตเมื่อมีการร้องขอ ในขณะที่สามารถเก็บไว้ใน VCS มันไม่ได้ถูกเก็บไว้กับแผนผังต้นไม้เสมอไป แต่ต้นไม้สร้างจะอยู่ที่อื่นในโครงสร้าง VCS หรือจัดการโดยระบบอื่นที่อื่น ถ้ามันถูกเก็บไว้ใน VCS มันเป็นที่ถกเถียงกันอยู่ว่าจะเก็บไว้ใน repo เดียวกับต้นไม้ต้นกำเนิดหรือไม่เพราะการดึงทุกครั้งสามารถนำสินทรัพย์จำนวนมากมาสร้าง ฉันชอบที่จะมีทุกสิ่งใน repo ที่จัดเรียงอย่างดียกเว้นการผลิต / หนังสือรับรองที่ละเอียดอ่อนและ bloat
SVN สามารถทำได้ดีกว่า git เพราะมันไม่ได้บังคับให้คุณซื้อ repo ทั้งหมด (แม้ว่าฉันคิดว่ามันไม่จำเป็นต้องใช้กับ git อย่างแท้จริง แต่การสนับสนุนนั้น จำกัด และไม่ได้ใช้กันทั่วไป) Simple repos บิวด์มักจะเป็นเพียงโอเวอร์เลย์สาขาที่คุณผสาน / ส่งออกโครงสร้างบิลด์ บางคนรวมทรัพยากรภายนอกในต้นไม้ต้นกำเนิดของพวกเขาหรือแยกเพิ่มเติมภายนอกสร้างและต้นไม้ต้นกำเนิด มันมักจะทำหน้าที่สองวัตถุประสงค์สร้างแคชและสร้างซ้ำ แต่บางครั้งทำให้แยกกันอย่างน้อยบางระดับยังอนุญาตให้สร้างใหม่ / เปล่าและสร้างหลายสร้างได้อย่างง่ายดาย
มีกลยุทธ์มากมายสำหรับสิ่งนี้และไม่มีกลยุทธ์ใดที่ทำงานได้ดีกับการเก็บรายการแหล่งข้อมูลไว้เว้นแต่คุณจะเก็บรักษาแหล่งข้อมูลภายนอกไว้ในแผนผังแหล่งข้อมูลของคุณ
พวกเขายังมีสิ่งต่าง ๆ เช่นแฮชในไฟล์การผสานนั้นเมื่อคนสองคนอัพเดทแพ็คเกจ สิ่งเดียวที่ทำให้คุณคิดว่านี่อาจจะเป็นความเข้าใจผิด
คนที่มีข้อโต้แย้งกำลังหยิบยกสำหรับไฟล์ล็อคเป็นกรณีที่พวกเขาได้รับมุมมองที่เฉพาะเจาะจงและ จำกัด ของปัญหา ต้องการงานสร้างซ้ำและงานสร้างที่สอดคล้องกันหรือไม่ รวมโฟลเดอร์ผู้จัดจำหน่ายใน VCS จากนั้นคุณยังสามารถดึงข้อมูลสินทรัพย์ได้เร็วขึ้นโดยไม่ต้องพึ่งพาทรัพยากรภายนอกที่อาจเสียหายในระหว่างการสร้าง ไม่มี build และ pipelines ที่ฉันสร้างต้องการการเข้าถึงจากภายนอกเว้นแต่จำเป็นจริงๆ หากคุณจำเป็นต้องอัปเดตทรัพยากรภายนอกเป็นเพียงครั้งเดียว ผู้เรียบเรียงคนใดที่พยายามทำให้บรรลุผลนั้นสมเหตุสมผลสำหรับระบบแบบกระจายยกเว้นที่กล่าวถึงก่อนหน้านี้ว่ามันไม่สมเหตุสมผลเพราะมันจะจบลงด้วยการพึ่งพาไลบรารี่สำหรับการอัพเดทไลบรารี่ด้วย clashes ทั่วไปและการอัปเดตช้าที่สุด
นอกจากนี้ฉันอัปเดตอย่างดุเดือด ทุกครั้งที่ฉันพัฒนาฉันอัปเดตและทดสอบทุกอย่าง มีหน้าต่างเล็ก ๆ มากสำหรับรุ่นสำคัญที่จะแอบเข้ามาเหมือนจริงเช่นกันเมื่อการกำหนดเวอร์ชันความหมายถูกยึดถือซึ่งมีแนวโน้มว่าจะเป็นนักแต่งเพลงคุณไม่คิดว่าจะมีปัญหาความเข้ากันได้หรือความเสียหายมากมาย
ใน composer.json คุณใส่แพ็คเกจที่คุณต้องการและเวอร์ชันของมัน คุณสามารถล็อคเวอร์ชันที่นั่นได้ อย่างไรก็ตามแพ็คเกจเหล่านั้นยังมีการอ้างอิงกับรุ่นไดนามิกที่จะไม่ถูกล็อคโดย composer.json (แม้ว่าฉันจะไม่เห็นว่าทำไมคุณถึงไม่สามารถใส่มันได้ด้วยตัวคุณเองถ้าคุณต้องการให้มันเป็นเวอร์ชั่นล็อค) ดังนั้นคนอื่นที่ติดตั้ง รับสิ่งที่แตกต่างโดยไม่มีการล็อค คุณอาจไม่สนใจอะไรมากมายหรือคุณอาจสนใจ คุณควรสนใจไหม อย่างน้อยก็น่าจะพอที่จะทำให้แน่ใจว่าคุณรับรู้ได้ในทุกสถานการณ์และผลกระทบที่อาจเกิดขึ้น แต่มันอาจไม่เป็นปัญหาหากคุณมีเวลาที่จะวิ่ง DRY ก่อนเสมอและแก้ไขสิ่งที่ได้รับการอัปเดต
นักแต่งเพลงที่ยุ่งยากพยายามที่จะหลีกเลี่ยงบางครั้งก็ไม่ได้อยู่ที่นั่นและความยุ่งยากในการมีไฟล์ล็อคนักแต่งเพลงที่สามารถทำให้มีความสำคัญ พวกเขาไม่มีสิทธิ์ที่จะบอกผู้ใช้ว่าพวกเขาควรหรือไม่ควรทำอะไรเกี่ยวกับการสร้างกับสินทรัพย์ที่มา (ไม่ว่าจะเข้าร่วมแยกจากกันใน VCS) เนื่องจากมันไม่ใช่ธุรกิจของพวกเขาพวกเขาไม่ใช่เจ้านายของคุณหรือฉัน "นักแต่งเพลงกล่าวว่า" ไม่ใช่อำนาจพวกเขาไม่ใช่เจ้าหน้าที่ระดับสูงของคุณหรือพวกเขาไม่ให้ความเหนือกว่าใด ๆ ในเรื่องนี้ มีเพียงคุณเท่านั้นที่รู้สถานการณ์จริงและสิ่งที่ดีที่สุดสำหรับสิ่งนั้น อย่างไรก็ตามพวกเขาอาจแนะนำวิธีการเริ่มต้นสำหรับผู้ใช้ที่ไม่เข้าใจว่าสิ่งต่าง ๆ ทำงานอย่างไรในกรณีที่คุณอาจต้องการติดตาม แต่โดยส่วนตัวแล้วฉันไม่คิดว่า ' เป็นตัวแทนที่แท้จริงสำหรับการรู้ว่าสิ่งต่าง ๆ ทำงานอย่างไรและสามารถออกกำลังกายตามความต้องการของคุณได้อย่างเหมาะสม ท้ายที่สุดแล้วคำตอบสำหรับคำถามนั้นเป็นคำตอบที่ดีที่สุด คนที่สร้างนักแต่งเพลงไม่ทราบว่าคุณควรเก็บนักแต่งเพลงของคุณไว้ที่ใด ความรับผิดชอบเดียวของพวกเขาคือการบอกคุณว่ามันคืออะไรและมันทำอะไร นอกเหนือจากนั้นคุณต้องตัดสินใจว่าอะไรดีที่สุดสำหรับคุณ
การเก็บล็อกไฟล์นั้นเป็นปัญหาสำหรับการใช้งานเพราะผู้แต่งมีความลับมากเกี่ยวกับว่าจะใช้การล็อกหรือ JSON และไม่สามารถใช้ทั้งคู่ร่วมกันได้ดี หากคุณรันการติดตั้งจะใช้ไฟล์ล็อคเท่านั้นมันจะปรากฏขึ้นดังนั้นหากคุณเพิ่มบางอย่างใน composer.json มันจะไม่ถูกติดตั้งเพราะมันไม่ได้อยู่ในล็อคของคุณ มันไม่ง่ายเลยในการดำเนินการใด ๆ และสิ่งที่พวกเขากำลังทำเกี่ยวกับไฟล์ json / lock และบางครั้งก็ดูเหมือนจะไม่สมเหตุสมผล (ช่วยบอกว่าการติดตั้งใช้ชื่อแพ็กเกจ แต่พยายามใช้มันบอกว่าไม่มี )
ในการอัปเดตล็อคหรือใช้การเปลี่ยนแปลงโดยทั่วไปจาก json คุณต้องใช้การอัปเดตและคุณอาจไม่ต้องการอัปเดตทุกอย่าง ล็อคมีความสำคัญเหนือกว่าสำหรับการเลือกสิ่งที่ควรติดตั้ง หากมีไฟล์ล็อคก็เป็นสิ่งที่ใช้ คุณสามารถ จำกัด การอัปเดตได้บ้าง แต่ระบบยังไม่เป็นระเบียบ
การอัปเดตนั้นใช้เวลานานเท่ากิ๊ก RAM ฉันสงสัยเช่นกันว่าถ้าคุณรับโครงการที่ไม่ได้สัมผัสเป็นระยะเวลาหนึ่งซึ่งดูจากรุ่นที่มีอยู่แล้วซึ่งจะมีเวลามากขึ้นและอาจไม่ทำอย่างมีประสิทธิภาพซึ่งเพียงแค่บีบคอ
พวกมันลับ ๆ ล่อๆมากเมื่อพูดถึงการมีคอมโพสิตลับที่คุณไม่คาดคิดว่าจะเป็นคอมโพสิต โดยค่าเริ่มต้นคำสั่งผู้แต่งลบจะปรากฏขึ้นเพื่อจับคู่กับการปรับปรุงผู้แต่งและการถอดผู้แต่ง
คำถามที่คุณต้องถามจริงๆไม่ใช่ว่าคุณควรเก็บล็อกไว้ในแผนผังต้นกำเนิดของคุณหรือไม่หรือว่าคุณควรจะเก็บมันไว้ที่ไหนสักแห่งในแบบนั้นหรือไม่ แต่คุณควรจะถามว่ามันทำอะไรจริงๆแล้วคุณสามารถตัดสินใจเองได้ เมื่อคุณต้องการยืนกรานมันและที่ไหน
ฉันจะชี้ให้เห็นว่าการมีความสามารถในการล็อคเป็นความสะดวกสบายที่ดีเมื่อคุณมีกลยุทธ์การติดตาภายนอกที่แข็งแกร่งเนื่องจากมันจะติดตามข้อมูลที่มีประโยชน์สำหรับการติดตาม (ต้นกำเนิด) และการอัปเดต แต่ถ้าคุณไม่ ถ้าอย่างนั้นก็ไม่ได้อยู่ตรงนี้ มันไม่มีประโยชน์เมื่อถูกบังคับให้ลำคอของคุณเป็นตัวเลือกที่จำเป็นในการทำให้ต้นไม้ที่มาก่อมลพิษ มันเป็นเรื่องธรรมดามากที่พบในรหัสฐานแบบดั้งเดิมที่ผู้คนได้ทำการเปลี่ยนแปลงมากมายใน composer.json ซึ่งยังไม่ได้นำไปใช้จริง ๆ และจะพังเมื่อผู้คนพยายามใช้นักแต่งเพลง ไม่มีผู้แต่งล็อคไม่มีปัญหา desync