คุณอธิบายถึงความสำคัญของการใช้ระบบควบคุมเวอร์ชัน [แบบกระจาย] กับคนที่ไม่ได้อยู่ในเขตข้อมูล CS ได้อย่างไร [ปิด]


13

ตัวอย่างที่ดีของคนที่เหมาะกับคำอธิบายนั้นอาจเป็นผู้จัดการโครงการ

เมื่อวันก่อนหัวหน้าของฉันถูกถามว่า "สิ่งนี้คืออะไร Github และทำไมมันถึงสำคัญ?" เขามีโครงการที่เป็นกรรมสิทธิ์ดังนั้นเขาจะต้องการโฮสติ้งส่วนตัวและฉันพบว่าตัวเองกำลังดิ้นรนอธิบายนอกเหนือจากปกติ: VCS ทำให้การทำงานร่วมกันเป็นเรื่องเล็กน้อยจัดทำประวัติและ "สำรองข้อมูล" ของข้อมูลทั้งหมดของคุณและอนุญาตให้คุณบันทึกการเปลี่ยนแปลงอะตอมในรหัสฐาน . ในใจของฉันฉันกำลังคิดว่า "มันเกือบจะเหมือนกับว่าคุณต้องใช้ DRVS เพื่อทำความเข้าใจว่ามันมีประโยชน์อย่างไร"

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

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


1
คุณเคยเห็นไหมว่าทำไม GIT ถึงดีกว่า SVN
MarkJ

4
นี่เกี่ยวกับ VCS โดยทั่วไปหรือกระจาย v ที่ไม่ได้กระจายใช่ไหม
JeffO

2
คลายเกลียวฮาร์ดไดรฟ์ของเขาในตอนเช้าและวางไว้ในโต๊ะทำงานของคุณ จากนั้นเขาก็จะตระหนักถึงความสำคัญ
Andrew T Finnell

คำตอบ:


6

การควบคุมเวอร์ชันเหมาะสำหรับ (อย่างน้อย) สามสี่อย่าง: การสำรองข้อมูลการแชร์รหัสระหว่างนักพัฒนาการค้นหา + แก้ไขข้อบกพร่องและการติดตามความคืบหน้า

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

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

  3. การค้นหาและการแก้ไขข้อบกพร่อง เมื่อลูกค้าของคุณรายงานข้อผิดพลาดสำหรับรุ่นผลิตภัณฑ์ที่เฉพาะเจาะจงคุณสามารถรับภาพรวมแหล่งที่แท้จริงได้อย่างรวดเร็วเพื่อทำซ้ำและแก้ไข เป็นการยากที่จะสร้างข้อผิดพลาดหากแหล่งที่มาของคุณแตกต่างจากลูกค้า คุณขอให้พวกเขาส่งไฟล์ปฏิบัติการเพื่อให้คุณสามารถถอดแยกชิ้นส่วนออกได้หรือไม่? นอกจากนี้หากคุณมีปัญหาในการระบุสาเหตุของข้อผิดพลาดคุณสามารถใช้ VCS เพื่อระบุการแก้ไขที่ถูกนำมาใช้จริง

  4. ติดตามความคืบหน้า เมื่อคุณส่งมอบงานในสแน็ปช็อตจะช่วยให้คุณ (และผู้จัดการของคุณ) ติดตามความคืบหน้าของการใช้งานคุณสมบัติและสถานะของบั๊กที่เปิด ระบบ VC ยังรวมเข้ากับระบบติดตามและระบบการรวมอย่างต่อเนื่องได้อย่างง่ายดาย มันใกล้จะเป็นไปไม่ได้ที่จะรักษาระดับคุณภาพไว้สำหรับสิ่งอื่นนอกเหนือจากงานอดิเรกเว้นแต่ว่าคุณมี VCS

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

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

+1 สำหรับการกล่าวถึงการเกิดข้อผิดพลาด ฉันไม่เคยคิดอย่างนั้น!
David Cowden

31

"คุณเคยพบว่าปุ่ม 'เลิกทำ' มีประโยชน์ไหมโอ้คุณเห็นด้วยว่าเราควรใช้การควบคุมเวอร์ชันแล้วเหรอ?"

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


1
ผู้ใช้ @ Buttons840
David Cowden

9

เริ่มต้นด้วยพื้นฐาน:

ประการแรก VCS ปกป้องนักพัฒนาจากตัวเองและจากคนอื่น - ถ้ามันไม่มีจุดประสงค์อื่นนอกเหนือจากการอนุญาตให้นักพัฒนาสองคนขึ้นไปทำงานบน codebase เดียวกันค่อนข้างปลอดภัยมันจะมีค่ามาก (และฉันอยู่ในทีมที่ก่อนหน้านี้ วันทำงานถูกเขียนทับโดยการทำสำเนาอย่างประมาท)

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

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

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

เมื่อคุณขาย VCS (ซึ่งก็คือทั้งหมดใช้เฉพาะกับทีมพัฒนาที่มีจำนวน devs มากกว่าศูนย์) ดังนั้นคำถามที่ว่าทำไม DVCS ถึงพูดว่า SVN หรือ TFS และคำถามเพิ่มเติมเกี่ยวกับการทำงาน ในบ้านหรือใช้บริการโฮสต์เช่น Kiln หรือ Bitbucket หรือ Github (ซึ่งเป็นส่วนตัวหากคุณจ่ายเงิน) ค่อนข้างลึกและบริบทมากขึ้น


5

VCSs

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

โดยสรุป : VCS ให้คุณบันทึกสำเนาสำรองของงานของคุณและให้ความสามารถในการดูความแตกต่างระหว่างการสำรองข้อมูลเท่านั้น

DVCSs

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

สิ่งที่ดีอีกอย่างหนึ่งก็คือไม่เหมือนกับ VCS ส่วนกลางที่มีการสำรองข้อมูลเพียงครั้งเดียวหากเครื่องที่มีการสำรองข้อมูลเกิดไฟไหม้จะยังมีการสำรองข้อมูลที่สมบูรณ์แบบอื่น ๆ เพื่อไปรอบ ๆ

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


ฉันคิดว่ามันเป็นเรื่องปกติสำหรับนักพัฒนาที่จะคิดถึงสถานการณ์ที่เลวร้ายที่สุดที่เป็นไปได้ ... พวกเขามีความกลัวทางพยาธิวิทยา นี่เป็นเรื่องที่น่าสนใจมาก ...
Radu Murzea

กล้ามากเกินไป !!
David Cowden

2

ฉันทำงานส่วนใหญ่กับวิศวกร (ไม่ใช่นักพัฒนาต่อ se แต่พวกเขาเขียนโค้ด)

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

นั่นเป็นจุดขายที่ดี - และเป็นเหตุผลหลักที่ฉันใช้ VCS สำหรับการทำงานทั้งหมดของฉันรวมถึงข้อดีอื่น ๆ : มีประวัติ repo ที่สามารถสำรองได้อย่างง่ายดาย ...

พวกเขาส่วนใหญ่ชอบความคิดและพบว่ามันมีประโยชน์มากใช้กับโครงการของพวกเขา (โดยเฉพาะถ้าพวกเขาเกี่ยวข้องกับการทำงานร่วมกันกับวิศวกรอื่น ๆ )


2

เมื่อพยายามโน้มน้าวให้ใครก็ตามคุณต้องพยายามมองมันจากมุมมองของพวกเขา

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

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

สิ่งที่คุณต้องทำคืออธิบายกับผู้จัดการโครงการของคุณว่าทีมใช้เวลาXจำนวนชั่วโมงทุกสัปดาห์เพื่อแก้ไขปัญหาด้วยตนเองที่ GIT สามารถแก้ไขได้โดยอัตโนมัติหรือพูด0.1 * Xจำนวนชั่วโมงของนักพัฒนา

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


1

ฉันชอบคำอธิบายของ @ Buttons840 ซึ่งเป็นปุ่มเลิกทำสำหรับฐานรหัส นอกจากนี้ยังอาจช่วยเปรียบเทียบกับฟีเจอร์ "ติดตามการเปลี่ยนแปลง" ของ Word หรือ InDesign ได้ จากประสบการณ์ของฉันมันลดความต้องการสำหรับคนคนหนึ่งในการบอกคนอื่นว่าอย่าแตะไฟล์ X, Y และ Z ในอีกไม่กี่ชั่วโมงข้างหน้าซึ่งเป็นประโยชน์สำหรับการทำสิ่งต่าง ๆ ให้สำเร็จ

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


1

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

1 บุคคลที่แตกต่างกัน (ผู้ทดสอบนักพัฒนา) จะค้นหาข้อมูลเดียวกันในที่ต่าง ๆ

นำไปสู่ ​​DUPLICATE DATA ที่ไม่ซิงค์กัน
การควบคุมเวอร์ชันเป็นวิธีที่ง่ายที่สุดในการกำจัดข้อมูลที่ซ้ำกัน

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

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

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


0

นอกจากนี้หากคุณปล่อยซอฟต์แวร์คุณลักษณะต่อไปนี้ของ VCS ค่อนข้างสำคัญ: สมมติว่าลูกค้าของคุณพบข้อบกพร่อง การพัฒนาซอฟต์แวร์ในปัจจุบันอาจอยู่ในสภาพที่แตกต่างจากรุ่นที่ลูกค้ามีอยู่ บางทีข้อผิดพลาดอาจได้รับการแก้ไขในตอนนี้อาจจะไม่ใช่ แต่ในกรณีใด ๆ ซอฟต์แวร์ปัจจุบันไม่อยู่ในสถานะที่คุณสามารถจัดส่งให้กับลูกค้าได้

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

นอกจากนี้ VCS ยังช่วยให้คุณสามารถย้ายพอร์ตการแก้ไขนี้กลับไปยังสาขาการพัฒนาใหม่ได้อย่างง่ายดายหากข้อผิดพลาดยังคงมีอยู่เช่นกัน

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


0

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

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


2
ยกเว้นว่าเอกสาร Word / Excel นั้นทึบแสงสำหรับ VCS ทุกตัวที่ฉันเคยเห็น ระวังเมื่อใช้คำอธิบายนี้!
Peter Taylor

ฉันชอบใช้ตัวอย่างลูกโซ่อีเมลด้วย
David Cowden

0

เมื่อเลือกซอฟต์แวร์ / ไลบรารีแบบโอเพนซอร์สการมีที่เก็บ DVCS เป็นข้อได้เปรียบอย่างแน่นอนในเกณฑ์การเลือก

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

2) ผู้คนมีความเต็มใจที่จะส่งการแก้ไขข้อบกพร่องผ่านทางคำขอการดึงส่งผลให้แก้ไขข้อผิดพลาดได้เร็วขึ้นสำหรับปัญหาเร่งด่วน

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