วิธีที่ดีที่สุดสำหรับฉันในการเริ่มต้นใช้การควบคุมเวอร์ชันในโครงการ opensource คืออะไร


10

มีข้อเสนอแนะว่าฉันนำโครงการโอเพ่นซอร์สของฉันเนื่องจากขนาดและทักษะที่ขาดไปของฉันดังนั้นฉันจึงตรวจสอบ Google Code และเริ่มทำโครงการและตอนนี้มันถามฉันว่าฉันต้องการให้โครงการมี Git, Mercurial หรือ Subversion รหัสโฮสติ้ง

ฉันไม่รู้ด้วยซ้ำว่าโค้ดโฮสติ้งคืออะไรและการค้นหาทำให้ฉันสับสนมากขึ้นกับการอภิปรายระหว่างสิ่งเหล่านี้ทั้งหมดและสิ่งนี้ก็ยิ่งแย่ลงเพราะ Google Code กำลังถามฉันว่าต้องการใบอนุญาตประเภทใด

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

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



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

1
นี่เป็นคำถาม 2 ข้อและทั้งคู่อาจซ้ำกัน stackoverflow.com/questions/2303136/… , และstackoverflow.com/questions/3859/…
sylvanaar

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

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

คำตอบ:


7

ทำไมฉันถึงต้องโฮสต์โค้ดที่ไหนสักแห่งเช่นนี้

จุดสำคัญของการพัฒนาซอฟต์แวร์โอเพ่นซอร์สคือการแบ่งปันรหัสต้นฉบับ มีหลายวิธีในการทำเช่นวางไฟล์ tar / zip บนเว็บหรือเซิร์ฟเวอร์ ftp บริการเช่นรหัส google (หรือ sourceforge.net, gitorious.org, bitbucket.org และอื่น ๆ อีกมากมาย) ทำให้คุณไม่จำเป็นต้องเรียกใช้เซิร์ฟเวอร์ของคุณเองเพื่อจุดประสงค์นี้

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

บริการเหล่านี้ไม่ได้เป็นโฮสต์เว็บทั่วไป แต่ใช้บริการพิเศษมาก สิ่งเหล่านี้ไม่ได้หมายถึงเป็นหน้าแรกของผลิตภัณฑ์ แต่เป็นหน้าแดชบอร์ดสำหรับนักพัฒนา

ด้วยรหัส google คุณจะได้รับ

  • วิกิ
  • นักติดตามบั๊ก
  • พื้นที่ดาวน์โหลดไฟล์ปกติ
  • เซิร์ฟเวอร์ควบคุมเวอร์ชัน

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

จะเกิดอะไรขึ้นเมื่อฉันสร้างเว็บไซต์ของฉันแบบโอเพ่นซอร์สฉันมีสิทธิ์ใด

นี่เป็นคำถามที่ยากเนื่องจากมันขึ้นอยู่กับกฎหมายของประเทศที่คุณอาศัยอยู่

ฉันให้สิทธิ์อะไร

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

มันใช้งานได้อย่างไรผู้คนเพิ่งมาและโยนรหัสมาให้ฉันฟรีหรือไม่?

สิ่งนี้ไม่น่าเกิดขึ้นเนื่องจากผลิตภัณฑ์ของคุณต้องการความนิยมเพียงพอเพื่อดึงดูดนักพัฒนารายอื่น

[... ] และตอนนี้ก็ขอให้ฉันถ้าฉันต้องการให้โครงการมีโฮสติ้งรหัส Git, Mercurial หรือ Subversion

เหล่านี้เป็นระบบควบคุมเวอร์ชันที่แตกต่างกันสามระบบโดยการโค่นล้มเป็นระบบรวมศูนย์ในขณะที่ Git และ Mercurial มีการกระจาย

มีสงครามศาสนาเกี่ยวกับสิ่งที่จะใช้ แต่ประเด็นหลักคือการใช้ ดูhttp://martinfowler.com/bliki/VersionControlTools.htmlสำหรับรายละเอียดเพิ่มเติม

เมื่อใดที่จะเลือกการโค่นล้ม:

  • คุณมีไฟล์ไบนารีซึ่งไม่สามารถผสานได้อย่างง่ายดายและต้องการ lock-> modified-> commit-> unlock เวิร์กโฟลว์ซึ่งรองรับการโค่นล้ม¹
  • คุณต้องตรวจสอบเพียงส่วนหนึ่งของโครงสร้างไดเรกทอรี

¹มีส่วนขยายแบบล็อคสำหรับ Mercurial แต่ฉันไม่มีประสบการณ์กับมันและไม่สามารถพูดได้ว่ามันใช้งานได้

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

  • เร็ว (และเร็วฉันหมายถึงเร็วมาก )
  • การแตกแขนงและการผสานง่าย (ทำได้ดีกว่าตั้งแต่การโค่นล้ม> = 1.5 แต่มันไม่เหมือนกัน)
  • มอบอำนาจและเผยแพร่เป็น decoupled ดังนั้นคุณสามารถทำงานได้โดยไม่ต้องรบกวนคุณสมบัติและเผยแพร่งานเมื่อเสร็จสิ้น
  • พวกเขาติดตามสถานะของไดเรกทอรีผลิตภัณฑ์โดยรวม
  • คุณได้รับสำเนาฉบับเต็มของประวัติรุ่นทั้งหมดเมื่อคุณโคลนที่เก็บระยะไกล
  • หมายเลขการแก้ไขที่มีความปลอดภัยแบบเข้ารหัสซึ่งหมายความว่าแม้กระทั่งเมื่อมีคนแบ่งเซิร์ฟเวอร์

    • แต่เนื่องจากไม่มีใครตรวจสอบการแก้ไขเหล่านี้คุณลักษณะนี้จึงไม่มีประสิทธิภาพ

9

การโฮสต์รหัสนั้นเป็นสิ่งที่แน่นอนที่จะโฮสต์ (หรือเก็บ) รหัสของคุณ

Git, Mercurial และ Subversion เป็นเครื่องมือควบคุมแหล่งที่มาที่คุณใช้ในการจัดการประวัติโค้ดของคุณ Git และ Mercurial เป็นระบบกระจายในขณะที่การโค่นล้มเป็นการตั้งค่าเซิร์ฟเวอร์แบบดั้งเดิม

ลองดูที่ Wikipedia หรือบางอย่างและดูว่าสิ่งใดที่คุณสนใจมากที่สุด โดยส่วนตัวแล้วเราใช้ Mercurial และใช้งานได้ดีมากสำหรับเรา


6

Joel Spolsky เขียนบทช่วยสอนที่ดีเกี่ยวกับ Hg (Mercurial) และฉันเชื่อว่าส่วนเกริ่นนำนั้นครอบคลุมการโค่นล้มรวมถึงสาเหตุที่ทำให้คุณอัพเกรดเป็น Mercurial ให้การอ่านนั้นช่วยให้ฉันเข้าใจมากเกี่ยวกับ Mercurial และ DVCS โดยทั่วไป

โอ้และเมื่อคุณพร้อมที่จะเป็นโฮสต์คุณสามารถใช้ Google Code, BitBucket , Github (ด้วยความช่วยเหลือของส่วนขยายที่ยอดเยี่ยมนี้ ) หรืออื่น ๆ


Mercurial เป็นระบบที่ยอดเยี่ยมมันทำให้ฉันพ่ายแพ้จากการโค่นล้มหลังจากใช้งานไปเพียงไม่กี่นาที
Jim In Texas

3

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

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


2

การโค่นล้มจะเป็นตัวเลือกที่ง่ายที่สุดเพราะเป็น VCS Git และ Mercurial เป็นระบบ DVCS พวกมันทันสมัยและมีพลังมากกว่า แต่ยากที่จะเข้าใจ การใช้ front-end เช่น TortoiseSVN หรือ TortoiseHG (สำหรับ Mercurial aka HG) ก็ช่วยได้เช่นกัน

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

[แก้ไข]

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


1
ทำไมคุณถึงบอกว่า svn นั้นง่ายที่สุด? โปรดแสดงให้เห็นถึงคำสั่งนี้

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

ใช้ GPL สำหรับไลบรารีหากคุณต้องการกำหนดข้อ จำกัด บางประการเกี่ยวกับการใช้งาน ใช้ LGPL หากคุณต้องการกำหนดข้อ จำกัด น้อยลง
Keith Thompson

0

มันดูเหมือนว่าฉันว่าในขณะที่คนส่วนใหญ่ที่นี่จะตอบว่าไม่มีใครได้ตอบจริงๆว่าทำไมในคำถามของคุณ

หนึ่งในคนแรกมาเปิดโครงการที่ผมมีประสบการณ์เป็นนิยายFractintโครงการนี้ได้รับการพัฒนาโดยซุปกลุ่มหินที่ได้รับแรงบันดาลใจจากเก่าเรื่องราวพื้นบ้านซุปหิน

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


0

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

(หนังสือเปิดแหล่งที่มาของ O'Reilly http://oreilly.com/openbook/opensources/book/index.htmlมีประโยชน์ แต่อาจไม่แม่นยำในสิ่งที่คุณกำลังมองหา)

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


0

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

อย่างไรก็ตามรหัสนี้จะต้องสามารถเข้าถึงได้โดยคนอื่นเพื่อให้ได้

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

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

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

มันเหมือนกับมาตรฐานทั่วไปในการทำสิ่งต่าง ๆ การปฏิบัติทั่วไป

ลิงก์บางรายการที่คุณอาจพบว่ามีประโยชน์ในการอธิบายโอเพนซอร์สเพิ่มเติม:


-6

เกี่ยวกับระบบควบคุมเวอร์ชันฉันจะบอกว่าคุณควรติดกับทางเลือกที่ใช้มากที่สุดและล่าสุดกว่านั่นคือ: "Git" Mercurial นั้นเป็นที่นิยมน้อยลงและ SVN นั้นเก่าช้าและรวมศูนย์ ด้วย GIT คุณจะได้รับประโยชน์จากระบบควบคุมเวอร์ชันที่ทันสมัยและเป็นที่นิยม ไม่มีอะไรจะเสีย

แหล่งที่มา (reggarding ความนิยมของ DVCS):

/programming/tagged/git ~ 10k คำถาม /programming/tagged/mercurial ~ คำถาม 3k

http://www.googlefight.com/index.php?lang=en_GB&word1=git&word2=mercurial

ผลลัพธ์ 11,700,000 เทียบกับ

ผลลัพธ์ 15,800,000

เกี่ยวกับสิทธิ์ใช้งาน: บางทีคุณควรดูสิ่งที่พบบ่อยที่สุด: GLP, MIT, LGPL, BSD และเลือกสิ่งที่เหมาะสมกับโครงการของคุณมากขึ้น


7
Mercurial ไม่ได้เป็นเจ้าของ ... มันเป็นโอเพนซอร์สเหมือนกับ Git!
Christian Specht

4
Fanboy ตอบด้วยข้อโต้แย้งที่ผิดบางส่วน
Oben Sonne

1
"ใช้มากที่สุด" - โปรดให้ข้อมูลอ้างอิงถึงแหล่งข้อมูลของคุณ
sylvanaar

คนเสียใจ .. มันเป็นเพียงการรับรู้ของฉัน: ฉันเดาว่า Git นั้นถูกใช้มากกว่า Mercurial และฉันรู้ว่า SVN นั้นเก่าช้าและรวมศูนย์ ... ฉันสงสัยว่าความคิดเห็นของคุณนั้นน้อยกว่าคอมเม้นท์บอยที่เรียกว่า fanboy คำตอบ Come on, git hub ใช้ git, linux kernel ใช้ git, ทุกโปรเจ็กต์ในแผนกของฉันใช้ git ...
Pedro Rolo

2
บางทีคำถามมากมายเกี่ยวกับ Git ก็แสดงให้เห็นว่ามันใช้งานยากขึ้น? มีคนไม่กี่คนที่ใช้ข้อมูลที่คล้ายกันเมื่อตรวจสอบว่ากรอบการพัฒนาเว็บใดที่ 'ได้รับความนิยมมากที่สุด' ซึ่งมีการยกประเด็นเดียวกันขึ้นมา (แสดงความคิดเห็นเกี่ยวกับความไม่ถูกต้อง)
Tim Post
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.