ระบบควบคุมเวอร์ชันใดที่สามารถจัดการทุกด้านได้? [ปิด]


17

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


12
ดูเหมือนว่าคุณต้องการระบบสำรองข้อมูลแทนหรือไม่
Macke

2
คุณถือว่าใช้งานเว็บไซต์ภายใต้ OS X บนเครื่อง Mac แล้วหรือยัง? บางที Time Machine อาจเป็นโซลูชันสำรองที่ง่ายที่สุดที่มีอยู่ในปัจจุบันและทำให้สามารถย้อนกลับได้ง่ายหากจำเป็น

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

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

คำตอบ:


44

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

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

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

หากฉันถูกขอให้ทำงานกับเว็บไซต์ที่มีการอนุญาตที่ซับซ้อนและ ACLs บนเว็บไซต์ของคุณฉันจะมีข้อกังวลอย่างจริงจังเกี่ยวกับกระบวนการที่ใช้ในการจัดการเว็บไซต์ การนำระบบควบคุมเวอร์ชันมาใช้และการย้าย ACL ไปใช้นั้นจะเป็นหนึ่งในโซลูชันที่ฉันจะพิจารณาอย่างจริงจัง

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

แก้ไข:

การแก้ไขที่ฉันใช้คือ (a) ไม่มีการควบคุมเวอร์ชันเลย (b) ไซต์การผลิตคือไซต์หลัก (c) เก็บถาวรทุกครั้งที่มีการเปลี่ยนแปลงอะไร (d) สคริปต์การเก็บถาวรจะลบขยะเช่น ACL และ (e) สคริปต์การติดตั้งแก้ไขขยะอื่น ๆ เช่นการอนุญาตไฟล์

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

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

แต่ทำไมไม่มีใครสร้างระบบทั่วไปเพื่อทำสิ่งนี้?

เพราะมันไม่จำเป็นถ้าคุณใช้ระบบควบคุมเวอร์ชัน

ระบบควบคุมเวอร์ชันสามารถติดตามทุกสิ่งนี้ได้ แต่ไม่มีเลย

ทั้ง CVS และการโค่นล้มจะติดตามสิ่งที่คุณต้องการติดตามหากคุณใช้พวกเขา พวกเขาจะไม่ติดตามสิ่งที่คุณต้องการติดตามเพราะคุณไม่ได้ใช้ระบบควบคุมเวอร์ชันและไม่ควรติดตาม พวกเขาติดตามสิ่งที่คุณต้องการติดตามเมื่อคุณใช้ระบบควบคุมเวอร์ชัน

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

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


+1 เพื่อหาเหตุผลว่าทำไมคำถามนี้ผิดตั้งแต่เริ่มต้น
Macke

2
+1 อย่างไรก็ตามมันเป็นเรื่องดีที่คำถามถูกถามเพื่อให้คนอื่นได้ประโยชน์จากคำตอบของคุณ
oliver-clare

ระบบควบคุมเวอร์ชันควรให้ความสามารถในการพูดว่า "ตกลงบนคอมพิวเตอร์เครื่องอื่นตรงนี้สร้างเว็บไซต์ให้ฉันตั้งแต่วันที่ 28 กรกฎาคม" การควบคุมเวอร์ชันมีประสิทธิภาพมากกว่าการสำรองข้อมูลเนื่องจากจะติดตามการเปลี่ยนแปลง มิฉะนั้นใช่การสำรองข้อมูลรายวันจะทำงานได้ดี
Andy Canfield

ใช่การแก้ไขที่ฉันใช้คือ (a) ไม่มีการควบคุมเวอร์ชันเลย (b) ไซต์การผลิตคือเว็บไซต์หลัก (c) เก็บถาวรทุกครั้งที่มีการเปลี่ยนแปลงอะไร (d) สคริปต์การเก็บถาวรจะลบขยะเช่น ACL และ ( e) สคริปต์การติดตั้งแก้ไขขยะอื่น ๆ เช่นการอนุญาตไฟล์ แต่ทำไมไม่มีใครสร้างระบบทั่วไปเพื่อทำสิ่งนี้? ระบบควบคุมเวอร์ชันสามารถติดตามทุกสิ่งนี้ได้ แต่ไม่มีเลย
Andy Canfield

+1: คำตอบที่ดี อย่างไรก็ตามฉันต้องการเพิ่มว่าไม่มีระบบควบคุมเวอร์ชันที่ติดตามเนื้อหาเพราะพวกเขาไม่ได้เป็น สิทธิ์และชื่อผู้ใช้เป็นแบบเฉพาะโฮสต์และรูปแบบเป็นแบบเฉพาะระบบ ไม่มีวิธีที่เครื่องมือสามารถย้ายพอร์ตเหล่านั้นไปยังโฮสต์อื่นโดยอัตโนมัติโดยเฉพาะอย่างยิ่งเมื่อเป็นระบบปฏิบัติการที่แตกต่างกัน
Jan Hudec

10

ทั้งหมดของพวกเขาและไม่มีพวกเขา

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

อย่างไรก็ตามคุณสามารถเขียนสคริปต์ bash (* nix) หรือ powerhell script (Windows) ซึ่งบรรลุเป้าหมายใด ๆ หรือทั้งหมด สคริปต์นี้สามารถเก็บไว้ในการควบคุมแหล่งที่มา

จากนั้นคุณสามารถทำให้สคริปต์นั้นเป็นหนึ่งในงานสร้างของคุณและเรียกใช้เป็นส่วนหนึ่งของการปรับใช้ของคุณ


นี้. แนวคิดของการมีแหล่งข้อมูลทั้งหมดคือคุณสามารถดึงพวกเขาออกจาก VCS ของคุณและใช้พวกเขาเพื่อสร้างผลิตภัณฑ์สำเร็จรูป
Blrfl

2

IMHO ระบบควบคุมเวอร์ชันในตัวมันไม่ได้มีวัตถุประสงค์เพื่อใช้ในวิธีนั้น

แต่สิ่งที่ฉันมักจะทำคือให้แน่ใจว่าคุณได้รับเวอร์ชันจากแหล่งควบคุมคุณเพียงแค่เรียกใช้ไฟล์ build / powershell หนึ่งไฟล์และทุกอย่างกลับมาทำงานอีกครั้ง

สำหรับสิ่งนี้คุณต้อง:

  • ไลบรารีทั้งหมดที่คุณแอพขึ้นอยู่กับการควบคุมแหล่งที่มา
  • ไฟล์บิลด์ที่กำหนดสภาวะแวดล้อมของคุณ
  • คำแนะนำเกี่ยวกับข้อกำหนดของสภาพแวดล้อมของคุณ (คุณไม่ต้องการติดตั้งเซิร์ฟเวอร์ sql ในการควบคุมแหล่งที่มาของคุณ)

1

ฉันเชื่อว่าสิ่งที่คุณต้องการในกรณีของคุณคือเครื่องมือจัดการการกำหนดค่า หนึ่งที่ผมเคยใช้เป็นหุ่นเชิด

อ้างถึงคุณ:

จัดการการเป็นเจ้าของไฟล์ / ไดเรคทอรีการเข้าถึงการอ่านและเขียนไฟล์ / ไดเรกทอรี

ฉันได้ทำเช่นนั้นด้วยหนึ่งบรรทัด (ตรวจสอบให้แน่ใจว่าผู้ใช้มีอยู่ตรวจสอบว่ามีไดเรกทอรีอยู่ ฯลฯ )

รายการควบคุมการเข้าถึง

หากนี่คือ ACL ของ Windows แสดงว่ามีเครื่องมือ CM เฉพาะสำหรับ Windows ...

การประทับเวลา

คำสั่งtouch unix อีกครั้งในหนึ่งบรรทัดในสคริปต์หุ่นเชิดสามารถทำสิ่งนี้ให้คุณได้

เนื้อหาฐานข้อมูล

นั่นคือการสร้างในหลาย ๆ กรอบงาน cron ที่ทำให้มั่นใจได้ว่าทุกอย่างจะมีอย่างอื่น?

และลิงก์ภายนอก

ไม่รู้อะไรเกี่ยวกับเรื่องนั้น

แน่นอนหลังจากที่คุณเขียนรหัสการจัดการการกำหนดค่าของคุณคุณอาจต้องการใส่ (หรือดึงข้อมูลในระบบที่เกี่ยวข้อง) ในระบบควบคุมเวอร์ชัน คุณจะไม่หนีจาก :-)


ฉันไม่เข้าใจสิ่งที่คุณหมายถึงโดย "timestamps - อีกครั้งหนึ่งคำสั่ง unix ในหนึ่งบรรทัดในสคริปต์หุ่นเชิดสามารถทำได้" ในเว็บไซต์ของฉันเพื่อรับรุ่นไซต์มันจะทำการสแกนไซต์ทั้งหมดและส่งคืนวันที่และเวลาของไฟล์ใหม่ล่าสุด ฉันต้องการควบคุมเวอร์ชัน "Checkout" เพื่อให้ไฟล์มีการประทับเวลาเดียวกับที่มีในการเช็คอินไม่ได้ตั้งค่าเป็น 'ตอนนี้' คุณจะทำเช่นนั้นในคำสั่ง unix ได้อย่างไร?
Andy Canfield

แน่นอนคุณกำลังมองหา "สัมผัส" ตรวจสอบเรื่องนี้: en.wikipedia.org/wiki/Touch_(Unix) โดยทั่วไปเมื่อตรวจสอบเวลานี้จะถูกนำไปใช้ แต่ถ้าด้วยเหตุผลบางอย่างที่คุณต้องการให้บันทึกเวลาที่แตกต่างกันนี่คือวิธีการทำเช่นนี้
Dimitrios Mistriotis

ฉันชอบเหตุผลของคำถามของคุณคุณต้องการทำให้มากที่สุดโดยอัตโนมัติซึ่งเป็น "วิธีที่ถูกต้อง" คุณต้องมีความรู้เกี่ยวกับวิธีการทำและสิ่งที่จะไป VControl และสิ่งที่ไม่ ฉันหวังว่าผู้คนในวงการอุตสาหกรรมจะคิดมากเหมือนกัน ...
Dimitrios Mistriotis

0

มีระบบควบคุมเวอร์ชันที่ดีที่สุดที่จัดการทุกด้านของเอกสารดิจิตอลทั้งหมด มันถูกเรียกว่าซานาดูและถูกสร้างขึ้นโดยเทโอดอร์โฮล์มเนลสันในปี 1960 แม้กระทั่งก่อนที่สิ่งต่าง ๆ เช่นระบบไฟล์จะเป็นเรื่องธรรมดา ในทางทฤษฎีทุกอย่างได้รับการแก้ไขอย่างสมบูรณ์แบบ ในทางปฏิบัติซานาดูไม่เคยถูกนำไปใช้ตามที่จินตนาการโดยเนลสัน แต่มันเป็นแรงบันดาลใจให้กับระบบพิเศษอื่น ๆ อีกมากมายรวมถึงเว็บและระบบควบคุมเวอร์ชัน ผลงานของเนลสันยังคงคุ้มค่ากับการอ่านสด - และพวกเขาอาจตอบคำถามว่าทำไมไม่มี VCS ทั่วไปที่จัดการทุกด้าน

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