รุ่นการควบคุมขึ้นอยู่กับการจัดเก็บแบบพกพา?


9

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

ระบบควบคุมเวอร์ชันทั่วไปใด ๆ รองรับการใช้ที่เก็บข้อมูลแบบพกพา (เช่นอุปกรณ์แฟลช USB) อย่างเชื่อถือได้หรือไม่?


ทำไมคุณต้องการ / จำเป็นต้องใช้ที่เก็บข้อมูลแบบพกพา
Bernard

ในการย้ายรหัสระหว่างสองเครื่องในลักษณะเดียวกับที่ระบบควบคุมเวอร์ชันปกติทำกับเซิร์ฟเวอร์ที่ใช้ร่วมกัน (ฉันไม่มีเซิร์ฟเวอร์ที่ใช้ร่วมกัน)
billpg

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

มีการกล่าวไว้แล้วที่นี่ว่า SVN รองรับการจัดเก็บในตัวเครื่องและคุณสามารถใช้ usb ได้ แต่ฉันชอบเก็บ DB ไว้ในโฟลเดอร์ DropBox ส่วนตัวของฉัน;) คุณสามารถใช้บริการฟรีมากมาย (เช่น assembla หรือ tfs.visualstudio.com)
Pavel Voronin

คำตอบ:


31

ใช้DVCSเช่นGitหรือMercurial

ระบบควบคุมเวอร์ชันที่แจกจ่ายไม่มีเซิร์ฟเวอร์ส่วนกลางที่ใช้ร่วมกัน

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


9
และถ้าคุณใช้ GitHub คุณก็ไม่จำเป็นต้องพกพาไดรฟ์ USB ไปเลย
CamelBlues

ขอบคุณ. สามารถตั้งค่าให้ใช้ที่เก็บข้อมูลแบบพกพาเป็นที่เก็บได้หรือไม่?
billpg

@billpg - ใช่ มันอาศัยอยู่ในโครงสร้างไดเรกทอรี
Oded

@CamelBlues หรือ bitbucket หรือ kilnhg หรือคนอื่น ๆ อาจจะต่าง ๆ ที่อาจจะหรืออาจจะไม่เหมาะสม ...
Murph

3
ฉันมีที่เก็บ Mercurial ส่วนตัวเป็นหลักใน DropBox ใช้งานได้ดีและทำการสำรองข้อมูลโดยอัตโนมัติ (เนื่องจาก DropBox ไม่น่าจะหายไปในเวลาเดียวกันกับที่ฉันทำคอมพิวเตอร์ทั้งหมดหาย)
David Thornley

7

นอกเหนือจาก GIT, Mercurial และอื่น ๆ ที่แนะนำข้างต้นแล้วยังได้ดู Fossil - มันมีข้อดีที่ไบนารีเวลาทำงานมีขนาดเล็ก (1Meg หรือดังนั้นสำหรับ Windows และ Linux) จำเป็นต้องติดตั้งแบบพกพาและไม่ต้องมีศูนย์ ดังนั้นแตกต่างจากคนอื่น ๆ (เท่าที่ฉันทราบ) มันสามารถใส่ลงในอุปกรณ์จัดเก็บข้อมูลและเรียกใช้บนเครื่องใด ๆ ที่จัดเก็บถูกเสียบเข้ากับโดยไม่ต้องติดตั้งแอปบนเครื่องก่อน มันมีวิกิพีเดียและระบบการติดตามการเปลี่ยนแปลงข้อบกพร่องกับ repo นอกจากนี้ยังมีกุยในตัว

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


แม้ว่า Git จะใช้คำสั่ง Unix ในการทำสิ่งหนึ่งและทำมันให้ดี แต่คุณสามารถมีคุณสมบัติเหล่านี้ใน Git ผ่านทางส่วนขยายเช่น ticgit (ระบบตั๋ว) และ gollum (wiki แบบ repo-based)
Jason Lewis

@ Jason Lewis: คุณถูกต้องและเนื่องจากเป็นโอเพ่นซอร์สคุณสามารถแก้ไขเพื่อให้ตรงกับความต้องการของคุณได้ดังนั้น GIT (หรือเครื่องมืออื่น ๆ ) สามารถเป็นทุกอย่างให้กับทุกคน (ผู้ที่ถูกรบกวนมีเวลาว่างและทรัพยากร เพื่อดาวน์โหลดติดตั้งและแก้ไขข้อบกพร่องทั้งหมด "ปลั๊กอิน" ทั้งหมดที่ฉันพูดคือสำหรับวิธีการแก้ปัญหาที่ "เพิ่งทำงานนอกกรอบ" มันคุ้มค่าที่จะพิจารณาฟอสซิล
mattnz

1

การใช้ DCVS อาจเป็นความคิดที่ดี แต่ไม่ใช่ตัวเลือกเดียว

ฉันมีที่เก็บ CVS ขนาดเล็กบนธัมบ์ไดรฟ์ USB เมื่อฉันต้องการที่จะเข้าถึงมันฉันเพียงแค่ต้องใช้cvs -d <path>หรือตั้งค่า$CVSROOTเส้นทางของรากของพื้นที่เก็บข้อมูล (ซึ่งแน่นอนว่าต้องใช้ไดรฟ์หัวแม่มือที่จะติดตั้งบนระบบ)

หากคุณคุ้นเคยกับการใช้ CVS อยู่แล้วควรจะสามารถใช้การได้ เช่นเดียวกันกับ SVN หมายความว่าที่เก็บส่วนกลางของคุณอยู่ใน thumb drive และไม่สามารถมองเห็นได้ตลอดเวลา

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


1
ปกติฉันไม่ใช่แฟนตัวยงของ DVCS แต่ฉันคิดว่า DVCS น่าจะดีกว่าในกรณีนี้ ปัญหาของ VCS ที่ไม่กระจายคือว่า repo เป็นจุดเดียวของความล้มเหลว หากมันนั่งอยู่ในศูนย์ข้อมูลที่มีการควบคุมสภาพอากาศและได้รับการสำรองข้อมูลเป็นประจำนั่นไม่ใช่เรื่องใหญ่ แต่สิ่งที่เหมือนไดรฟ์หัวแม่มือจะหายไป (หรือเหยียบลงบนหรือกินสุนัข หรือภายหลัง
Mike Baranczak

1
@MikeBaranczak: จุดดี - แต่ทุกอย่างบนไดรฟ์หัวแม่มือควรสำรองข้อมูลเป็นประจำไม่ว่าจะเป็นที่เก็บ CVS หรือไม่ก็ตาม
Keith Thompson

ด้วยระบบกระจายลูกค้าแต่ละรายมีสำเนาเต็มของ repo อยู่แล้ว ดังนั้นจึงไม่มีเหตุผลสำหรับขั้นตอน "สำรอง" แยกต่างหาก
Mike Baranczak

1
@ MikeBaranczak: แน่นอนว่าเป็นเหตุผลที่ดีที่จะใช้ DCVS ประเด็นของฉันคือตัวเลือกของ DCVS กับระบบรวมศูนย์ไม่ได้ขึ้นอยู่กับว่าคุณกำลังใช้ธัมบ์ไดรฟ์หรือไม่
Keith Thompson

0

นอกเหนือจากคำตอบอื่น ๆ :

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

ข้อเสียเมื่อเทียบกับ DVCS อาจเป็นได้ว่าคุณสามารถทำงานกับ Subversion เท่านั้น (เช่นคอมมิชชัน, ดูบันทึก ฯลฯ ) ในขณะที่เสียบปลั๊กไดรฟ์หัวแม่มือนอกจากนี้จะต้องเป็นไดรฟ์หัวแม่มือเดียวกันเสมอ - to - date คัดลอก) เนื่องจากมีการโค่นล้มคุณไม่ควรใช้มากกว่าหนึ่งที่เก็บ (นั่นคือส่วนที่ไม่กระจาย) ดังนั้นหากคุณลืมไดรฟ์หัวแม่มือคุณจะไม่สามารถใช้งานได้เหมือน Git หรือ Mercurial

บันทึก:

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


1
เช่นเดียวกับคำตอบของKeithปัญหาของ VCS ในสารบบท้องถิ่นคือมันเป็นจุดเดียวของความล้มเหลว นอกจากนี้หากคุณย้ายจากเครื่อง A ไปยังเครื่อง B แต่ปล่อยให้ thumb drive เชื่อมต่อกับเครื่อง A คุณจะมีโอกาสน้อยที่จะดูแลหากคุณใช้ DVCS (คุณสามารถผสานการเปลี่ยนแปลงในท้องถิ่นของคุณได้ในภายหลัง) ในขณะที่ใช้ VCS คุณต้องกลับไปที่ mechine A ขับรถกลับไปที่เครื่อง B ก่อนที่จะดำเนินการต่อ
Mark Booth

@ MarkBooth: ฉันไม่ได้สนับสนุนการแก้ปัญหานี้ฉันแค่อยากจะชี้ให้เห็นมันมีอยู่เพราะเห็นแก่ความสมบูรณ์และในกรณีที่ OP มีการตั้งค่าพิเศษบางอย่างสำหรับการโค่นล้ม ฉันแก้ไขคำตอบเพื่อให้ชัดเจน
sleske

ขอบคุณ @sleske ฉันเห็นด้วยว่าการตั้งค่าสำหรับsvn(หรือ Cvs จริง ๆ ) สามารถชั่งน้ำหนักในความโปรดปรานของการใช้โซลูชันนั้น แต่เพื่อประโยชน์ในการเปิดเผยอย่างเต็มที่ข้อเสียของวิธีการนั้นก็ควรได้รับการกล่าวถึงเช่นกัน รู้สึกอิสระที่จะแก้ไขคะแนนจากความคิดเห็นของฉันเป็นคำตอบของคุณ ถ้าคุณทำฉันยินดีที่จะทำความสะอาด (ลบ) ความคิดเห็นของฉัน * 8 ')
ทำเครื่องหมายบูธ

ฉันไม่แน่ใจว่าคำตอบนี้เพิ่มที่ฉันไม่ได้พูดในของฉันแล้ว
Keith Thompson

1
@KeithThompson: เพิ่มข้อมูลที่ SVN สามารถใช้ไดเรกทอรีภายในเครื่องแทนเซิร์ฟเวอร์กลาง อธิบายไว้ในเอกสาร SVN แต่เนื่องจากคนส่วนใหญ่ใช้ SVN ผ่านเซิร์ฟเวอร์กลางอาจไม่ชัดเจนว่า SVN ไม่ต้องการเซิร์ฟเวอร์
sleske
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.