เซิร์ฟเวอร์ Git เช่น GitHub? [ปิด]


412

ฉันเป็นผู้ใช้โค่นล้มมานานแล้วที่จะลองใช้ Git ฉันได้อ่านเกี่ยวกับเรื่องนี้และทำความเข้าใจกับธรรมชาติที่กระจายตัว - ฉันเห็นประโยชน์มากมาย

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

ฉันรู้ว่าสิ่งนี้อาจขัดกับรูปแบบการใช้ Git มาตรฐาน แต่มันจะมีประโยชน์สำหรับโครงการของฉัน อย่างไรก็ตามความกังวลใด ๆ ที่ฉันอาจมองข้ามนั้นยินดีต้อนรับเสมอ

ขอบคุณ!


50
การใช้เซิร์ฟเวอร์รวมศูนย์ตามที่คุณอธิบายเป็นจริงรูปแบบการใช้งานมาตรฐานสำหรับระบบควบคุมเวอร์ชันกระจายดังนั้นไม่ต้องกังวลกับเรื่องนั้น :-)
Aasmund Eldhuset

8
อ่า - คิดว่ามันเป็นข้อยกเว้นมากกว่า อยากจะปัดป้อง "ถ้าคุณมีการรวมศูนย์จากนั้นคุณก็ไม่ได้รับ!" แสดงความคิดเห็น ขอบคุณ
skaz

27
ความคิดที่สมเหตุสมผล :-) ในความเข้าใจของฉันจุดสำคัญของการกระจาย VCS ไม่ใช่ว่าคุณควรจะไม่มี repo ส่วนกลาง (มักจะมีประโยชน์สูง) แต่แทนที่จะว่าคุณไม่ถูกบังคับให้ใช้ repo ส่วนกลาง - คุณสามารถดำเนินการได้ กระทำในท้องถิ่นและเป็นการง่ายที่จะแลกเปลี่ยนการแก้ไขกับคนที่เฉพาะเจาะจงหากจำเป็นและคุณสามารถมี repos "ส่วนกลาง" ได้หลายรายการ (ในคอมไพล์ repo อื่น ๆ ไม่ว่าจะมีบทบาทอะไรเรียกว่าระยะไกลและคุณสามารถ เพิ่มมากเท่าที่คุณต้องการ) และ DVCS มักจะมีรูปแบบการแตกแขนงที่ยืดหยุ่นมาก (git shines ที่นี่)
Aasmund Eldhuset

15
เพื่อสรุป / ปรับปรุงความคิดเห็นของ Aasmund: จุดของ DVCS นั้นมักจะไม่ถูกลบออกจากที่เก็บส่วนกลาง แต่เพื่อให้ผู้ใช้อื่น ๆ ทุกคนสามารถใช้ VCS ได้อย่างเต็มประสิทธิภาพเช่นกัน
Cascabel

2
Google มีแหล่งเก็บข้อมูลบนคลาวด์ใหม่ซึ่งอนุญาตให้มี repos ส่วนตัว: cloud.google.com/tools/cloud-repositoriesนอกจากนี้ FWIW ไม่แน่ใจว่าทำไมจึงถูกทำเครื่องหมายว่าเป็นหัวข้อปิด!
Josh M.

คำตอบ:


203

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

  1. ค้นหาที่อื่นเพื่อวางที่เก็บ ( /var/gitrootตัวอย่าง)
  2. สร้าง repo ใหม่ ( mkdir project.git && cd project.git && git init --bare --shared=group)
  3. จากนั้นในไคลเอนต์ของคุณโคลน repo ระยะไกล ( git clone ssh://yourserver.com/var/gitroot/project.git && cd project)
  4. เพิ่มบางไฟล์ ( git add README)
  5. กระทำ ( git commit -m "Initial import")
  6. ดัน ( git push origin master)

สิ่งนี้ควรจัดเตรียมสิ่งต่าง ๆ ให้คุณ


5
เพียงแค่ฉันชัดเจน: ติดตั้ง git บนเซิร์ฟเวอร์อื่น (เข้าถึงได้) และสร้าง repo มีลูกค้าโคลนที่ซื้อคืน เมื่อไคลเอนต์ทำการแก้ไขเสร็จสมบูรณ์ให้กดถึง repo ของเซิร์ฟเวอร์ ขอบคุณ!
skaz

8
+1 เป็นเรื่องของความเป็นจริงนี้เป็นรูปแบบการใช้สำหรับการใช้งานร่วมกันของคอมไพล์
Aasmund Eldhuset

1
ข้อผิดพลาดนี้เกิดขึ้นเมื่อผลักต้นแบบหลัก :::: การนับวัตถุ: 3 เสร็จแล้ว วัตถุการเขียน: 100% (3/3), 244 ไบต์ 0 ไบต์ / s เสร็จแล้ว ทั้งหมด 3 (เดลต้า 0), นำมาใช้ใหม่ 0 (เดลต้า 0) ระยะไกล: ข้อผิดพลาด: สิทธิ์ไม่เพียงพอสำหรับการเพิ่มวัตถุในฐานข้อมูลที่เก็บ. / โครงการระยะไกล: ร้ายแรง: ล้มเหลวในการเขียนข้อผิดพลาดวัตถุ: unpack ล้มเหลว: unpack-objects //localhost/var/gitroot/project.git! ข้อผิดพลาด [ปฏิเสธจากระยะไกล] master -> master (ข้อผิดพลาด unpacker): ล้มเหลวในการส่งการอ้างอิงถึง 'ssh: //localhost/var/gitroot/project.git'
Abdo

3
ฉันได้เขียนโพสต์บล็อกเกี่ยวกับวิธีการตั้งค่า repit คอมไพล์ท้องถิ่นบางครั้งที่ผ่านมา สูงสุด 10 นาที สิ่งที่ยากคือการกำหนดกลยุทธ์การสำรองข้อมูลเซิร์ฟเวอร์ภายในที่เหมาะสมการจัดการเซิร์ฟเวอร์ ฯลฯ
atmosx

คุณวิ่งgit init --bare project.gitไม่ได้เหรอ
Dan Dascalescu

199

Gitorious เป็นเว็บอินเตอร์เฟสแบบโอเพนซอร์สเพื่อให้คอมไพล์ที่คุณสามารถเรียกใช้บนเซิร์ฟเวอร์ของคุณเองเหมือน GitHub:

http://getgitorious.com/

ปรับปรุง:

http://gitlab.org/เป็นอีกทางเลือกหนึ่งเช่นกัน

อัปเดต 2:

Gitorious ได้เข้าร่วมกับ GitLab แล้ว


5
ดูดี แต่การตั้งค่าดูเหมือนว่าจะมีน้ำหนักมาก (โดยเฉพาะสำหรับผู้ใช้ที่ไม่ใช่ผู้ใช้ราง) [ cjohansen.no/en/ruby/setting_up_gitorious_on_your_own_server ]
gatoatigrado

1
กระบวนการติดตั้งอยู่ในขั้นตอนของการทำให้ง่ายขึ้นและทำให้ "Rails-y" น้อยลง นอกจากนี้ยังมีตัวติดตั้งอัตโนมัติสำหรับเซิร์ฟเวอร์ CentOS (และอุปกรณ์สำเร็จรูป) ที่หน้าติดตั้ง Gitoriousที่ getgitorious.com
thomanil

3
ดูเหมือนว่า Gitorious จะไม่ใช่โซลูชันโฮสติ้งส่วนตัวแบบโอเพ่นซอร์สฟรีอีกต่อไป
Mingming

1
ถ้าคุณไปที่getgitorious.comแล้วคลิกโปรแกรมติดตั้งภายใต้ Gitorious Community Edition ไม่ได้ให้โซลูชันโฮสติ้งส่วนตัวแบบโอเพ่นซอร์สฟรีหรือไม่
Craig

16
นอกจากนี้gitlab.orgเป็นอีกทางเลือกหนึ่งที่ได้รับการพัฒนาตั้งแต่คำตอบของฉัน
Craig

74

ลองGitLab

เครื่องมือ GUI ที่ดีที่สุดที่ฉันเคยใช้ มันคล้ายกับ GitHub มาก

เป็นโอเพ่นซอร์ส (MIT License) และเป็นซอฟต์แวร์การจัดการ git ที่ติดตั้งมากที่สุดพร้อมการติดตั้งมากกว่า 25.000 รายการ มันมีการเผยแพร่รายเดือนและชุมชนที่ใช้งานกับผู้มีส่วนร่วมมากกว่า 375 คุณสามารถมีที่เก็บส่วนตัวภายในและสาธารณะไม่ จำกัด บนเซิร์ฟเวอร์ของคุณเอง มันเป็นแอพ Ruby on Rails ที่ทำงานบนแพลตฟอร์ม Unix ส่วนใหญ่


1
ฉันเห็นด้วยมันยอดเยี่ยม (+1) แต่จากความคิดเห็นนี้มันเป็นความเจ็บปวดในการติดตั้ง มันจะดีถ้าพวกเขาสามารถจัดแพ็คเกจรอบต่อนาที, deb ฯลฯ
Synesso

2
ฉันได้พบว่าการติดตั้งสคริปต์ใหม่ที่ค่อนข้างใหม่สำหรับ Ubuntu นั้นค่อนข้างเจ็บปวด แม้จะไม่มีมันก็เป็นเรื่องของการปฏิบัติตามคำแนะนำออกจากเว็บไซต์ ฉันไม่เคยใช้รางหรือแม้กระทั่งเซิร์ฟเวอร์ Ubuntu และฉันได้ลองใช้งานก่อน
Jon Shier

ฉันประสบปัญหาในการรวมเข้ากับ Active Directory ผ่าน LDAP
riezebosch

2
จริงๆแล้วทุกวันนี้ GitLab นั้นติดตั้งง่าย เป็นเพียงเรื่องของการเปิดหีบห่อ ดู about.gitlab.com/downloads
งาน

2
Gitlab Enterprise นั้นไม่ฟรี แต่มีรุ่นชุมชนซึ่งฟรีและติดตั้งได้ง่าย แม้ว่าจะต้องใช้พื้นที่ดิสก์ประมาณ 800 MB เนื่องจากติดตั้งเอ็นจิ้นฐานข้อมูลและการพึ่งพาจำนวนมาก
OndroMih

39

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

นี่คือบทสรุปจากเว็บไซต์ของผู้เขียน:

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

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

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

  • เพิ่มผู้ใช้ไปยังไฟล์การกำหนดค่า
  • เพิ่มคีย์ ssh ของผู้ใช้
  • ยอมรับการเปลี่ยนแปลง
  • ดันไปที่ gitolite
  • Voila การกำหนดค่าใช้งานจริง!

และเมื่อต้องการดูรหัสผ่านเบราว์เซอร์ gitolite มีการรองรับการตั้งค่า "ซิงค์" ด้วย gitweb หรือถ้าคุณชอบcgitซึ่งเป็นส่วนหน้าเว็บที่ดีมากสำหรับคอมไพล์ที่เขียนด้วยภาษา C ดีกว่าคุณควรดูวิธีการนี้


24

คุณอาจพิจารณาGitblit , open-source, integrated, เซิร์ฟเวอร์ Java Git ล้วน, วิวเวอร์และผู้จัดการพื้นที่เก็บข้อมูลสำหรับกลุ่มงานขนาดเล็ก


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

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

15

เบราว์เซอร์ Bare Bones

git instaweb --httpd=webrick

จากหนังสือ scit git

รวมกับสิ่งที่ต้องการแนวทางที่อธิบายไว้ที่นี่เพื่อการพัฒนาแบบกระจาย (เครดิตให้กับดาต้าโกรคสำหรับแนวคิดที่อธิบายไว้อย่างดี)

เรียกใช้เซิร์ฟเวอร์ git แบบครั้งเดียวจากที่เก็บในตัวเครื่อง

ฉันทวีตไปแล้วแต่ฉันคิดว่ามันสามารถใช้การขยายตัวได้บ้าง:

เปิดใช้งานเวิร์กโฟลว์ Git แบบกระจาย: git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr - เส้นทาง จำกัด . git /"

สมมติว่าคุณใช้เวิร์กโฟลว์ git ที่เกี่ยวข้องกับการทำงานกับพื้นที่เก็บข้อมูลหลัก "เป็นทางการ" ที่คุณดึงและดันการเปลี่ยนแปลงจากและเข้า ฉันแน่ใจว่าหลาย บริษัท ทำเช่นนี้เช่นเดียวกับผู้ใช้บริการโฮสติ้ง Git จำนวนมากเช่น Github

พูดว่าเซิร์ฟเวอร์หรือ Github ลงไปเล็กน้อย

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

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

แต่ถ้าหากในช่วงเวลานี้คุณต้องการร่วมมือกับคนอื่นซึ่งอาจไม่ใช่ผู้เชี่ยวชาญคอมไพล์ในที่เก็บเดียวกัน

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

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

ดีคอมไพล์ที่คุณอาจทราบเป็น"กระจาย" ระบบการควบคุมเวอร์ชัน

แม้ว่าคุณอาจใช้พื้นที่เก็บข้อมูล git "เป็นทางการ" กลางในเวิร์กโฟลว์ของคุณคุณยังสามารถใช้ git ในลักษณะเพียร์ทูเพียร์ที่ซึ่งคุณและผู้ทำงานร่วมกันสร้างและแบ่งปันคอมมิชชันร่วมกันและศูนย์กลาง เซิร์ฟเวอร์ไม่เคยรู้

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

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

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

เครื่องมือที่เปิดใช้งานสิ่งนี้คือgit daemonซึ่งมีตัวเลือกและฟังก์ชั่นมากมาย แต่เพื่อจุดประสงค์ในการเปิดใช้งานง่ายเพียงครั้งเดียว "เพียงให้บริการ repo ที่ฉันเข้ามา" วิธีใช้งานก็คือสร้างนามแฝง git serveผมชอบที่จะเรียกมันว่า วิ่ง:

git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"

การใช้นามแฝงนั้นสำคัญมากเพราะนามแฝง git จะถูกดำเนินการในไดเรกทอรีฐานของแผนผังการทำงานของคุณ ดังนั้นเส้นทาง '.git' จะชี้ไปยังตำแหน่งที่ถูกต้องเสมอไม่ว่าคุณจะอยู่ที่ไหนในแผนผังไดเรกทอรีของพื้นที่เก็บข้อมูลของคุณ

ใช้ของใหม่git serveเช่น:

  1. วิ่ง git serveวิ่ง"พร้อมที่จะดังก้อง" มันจะรายงาน Git แย่มาก
  2. ค้นหาที่อยู่ IP ของคุณ พูดว่า 192.168.1.123
  3. พูดว่า "เฮ้เจนฉันไม่พร้อม / สามารถผลักดันสิ่งเหล่านี้ได้ถึงจุดเริ่มต้น แต่คุณสามารถดึงข้อมูลความมุ่งมั่นของฉันเข้าสู่โคลนนิ่งของคุณได้ด้วยการวิ่ง git fetch git://192.168.1.123/ "
  4. กด ctrl + c เมื่อคุณไม่ต้องการให้บริการ repo นั้นอีกต่อไป

คุณสามารถบอกเจนgit clone git://192.168.1.123/ local-repo-nameว่าถ้าเธอยังไม่มีโคลนของที่เก็บ หรือใช้git pull git://192.168.1.123/ branchnameเพื่อดึงข้อมูลและผสานในครั้งเดียวมีประโยชน์หากคุณทำงานร่วมกันในสาขาคุณลักษณะ

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

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

มีความเกี่ยวข้องกัน: ในเรื่องของเซิร์ฟเวอร์ที่ใช้ครั้งเดียวหากคุณต้องการแชร์ไฟล์สแตติกจำนวนมากผ่าน HTTP ชั่วคราว: python -m SimpleHTTPServer


11

หากคุณต้องการเซิร์ฟเวอร์ GIT ที่ดีง่ายกว่าที่คุณต้องลอง GitBlit นอกจากนี้ฉันใช้ gitolite แต่เป็นเพียงเซิร์ฟเวอร์ด้วย GitBlit คุณจะได้รับทั้งหมดในเซิร์ฟเวอร์เซิร์ฟเวอร์ผู้ดูแลระบบ repos ผู้จัดการ ... URL: http://gitblit.com/


9

https://rhodecode.comเป็นเว็บแอปเปิดแหล่งที่มาสำหรับ Git & Mercurial ซึ่งสามารถติดตั้งได้ง่ายมากในทุกระบบปฏิบัติการ (รวมโปรแกรมติดตั้งไว้ด้วย)

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


1
ที่จริงผมเรียกใช้อินสแตนซ์ของตัวเองที่นี่: code.gmgauthier.com รุ่น 3.x นั้นสะอาดและเสถียรอย่างน่าทึ่ง ฉันใช้มันมากกว่าโค้ดจริง ๆ แล้ว (แม้ว่าจะมีจำนวนมากที่นั่น) ฉันใช้มันเพื่อเก็บสำเนาต้นฉบับของสมุดบันทึกส่วนตัวต้นฉบับของฉันสำหรับหนังสือสองเล่มสคริปต์พอดคาสต์และร่างบล็อก เหมาะอย่างยิ่งสำหรับเรื่องนี้ส่วนหนึ่งเป็นเพราะแสดงผลทั้ง Markdown และ RestructuredText สำหรับคุณทำให้ร่างสามารถอ่านได้จากทุกที่
Greg Gauthier

8

นอกจากนี้คุณยังสามารถติดตั้งIndeferoเป็น GPL clone ของ GoogleCode เนื่องจากรองรับทั้ง Subversion และ Git คุณสามารถเปลี่ยนได้อย่างราบรื่น ฉันเป็นผู้เขียนของ Indefero


ฉันใช้มันและชอบมัน แต่การออกแบบค่อนข้างล้าสมัยเล็กน้อย มันยังคงอยู่หรือไม่?
Jaroslav


8

มันอาจไม่ใช่การตั้งค่าเซิร์ฟเวอร์ git ที่ใช้กันโดยทั่วไปแต่เมื่อเล่นด้วยเลย์เอาต์, เครื่องมือ, การทำมิเรอร์และโครงร่างการอนุญาตที่แตกต่างกัน, ฉันว่าหนึ่งทางเลือกที่น่าสนใจสำหรับที่เก็บข้อมูลองค์กรคือGerrit , ซึ่งอาจดูแปลกใจ เครื่องมือตรวจสอบรหัส เราเริ่มใช้มันเป็นการตรวจสอบโค้ดและมันก็กลายเป็นพื้นที่เก็บข้อมูลหลักของเราอย่างช้าๆเลิกใช้ g3 / gitolite

  • เป็นเรื่องง่ายที่จะปรับใช้ (โดยทั่วไปแล้วคุณปล่อย. สงครามในแมวมอง)
  • มี web UI เพื่อจัดการที่เก็บกลุ่มและสิทธิ์ (หรือ ssh cli)
  • มีการใช้จาวาสคริปต์ ssh และ git ในตัวดังนั้นคุณไม่มีอะไรจะตั้งค่า
  • ldap รองรับผู้ใช้และกลุ่ม (โดยปกติจะต้องมีสำหรับ บริษัท )
  • ระบบการอนุญาตที่ยืดหยุ่นมาก (ด้วยกลุ่มโปรเจ็กต์, การสืบทอดสิทธิ์, การ จำกัด การอ่าน / เขียน / การแบรนช์ / การอ่านซ้ำ / ฯลฯ )
  • ความสามารถในการตรวจสอบโค้ด (ถ้าคุณเป็นอย่างนั้น)
  • repo mirroring (เพื่อพุชที่เก็บบางอันไปยัง GitHub หรือ repo สาธารณะอื่น ๆ )

นอกจากนี้มันถูกใช้โดยโครงการขนาดใหญ่ (เช่น Android, chrome) ดังนั้นมันจึงปรับขนาดและตอนนี้ค่อนข้างแข็งแกร่ง เพียงให้สิทธิ์แก่ผู้ใช้ของคุณในการผลักดันหากคุณต้องการอนุญาตให้ข้ามส่วนการตรวจสอบโค้ด


7

สำหรับโฮสติ้งระยะไกลอย่างที่คนอื่นบอกว่าbitbucket.org ให้บริการพื้นที่เก็บข้อมูลส่วนตัวฟรีฉันใช้มันโดยไม่มีปัญหา

สำหรับเครือข่ายท้องถิ่นหรือ LAN ฉันจะเพิ่มไฟล์นี้scm-manager.org (ไฟล์เรียกทำงานไฟล์เดียวมันง่ายมากที่จะติดตั้งมันทำบน Java เพื่อให้สามารถทำงานบน Linux หรือ Windows) ในกรณีที่คุณติดตั้งมันเป็นรหัสผ่านเริ่มต้น

Username: scmadmin
Password: scmadmin

3
ขอบคุณที่ให้ข้อมูลรับรองเริ่มต้น
Ryan Williams

6

ในขณะเดียวกันเว็บไซต์โฮสติ้งของMercurial Bitbucketก็เริ่มนำเสนอที่เก็บ Git เช่นกัน

ดังนั้นหากคุณไม่ต้องการเซิร์ฟเวอร์ท้องถิ่นเพียงแค่สถานที่ส่วนกลางที่คุณสามารถโฮสต์ที่เก็บ Git ส่วนตัวฟรี IMO Bitbucket เป็นตัวเลือกที่ดีที่สุด

ฟรีคุณจะได้รับที่เก็บส่วนตัวและสาธารณะ Git และ Mercurial ไม่ จำกัด
ข้อ จำกัด เพียงอย่างเดียวคือในแผนฟรีผู้ใช้ไม่เกินห้าคนสามารถเข้าถึงที่เก็บส่วนตัวของคุณได้ (เพื่อให้มากขึ้นคุณต้องจ่ายเงิน)
ดูhttps://bitbucket.org/plansสำหรับข้อมูลเพิ่มเติม!



2

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

ถ้าคุณต้องการให้เว็บไซต์ "ของจริง" บนเซิร์ฟเวอร์ท้องถิ่นของคุณฉันรู้ว่าโฮสติ้งเว็บไซต์ Git http://repo.or.cz
ดูเหมือนว่าจะมีคุณสมบัติน้อยกว่า GitHub แต่ไม่เหมือนกับ GitHub คุณสามารถรับซอร์สโค้ดและโฮสต์ไว้ในเซิร์ฟเวอร์ภายในเครื่องของคุณเอง

คำเตือน: ฉันอ่านเกี่ยวกับ repo.or.cz ฉันไม่เคยลองด้วยตัวเอง!


2

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

คุณอาจพิจารณา gitosis ซึ่งให้เซิร์ฟเวอร์ http และความสามารถในการจัดการจากระยะไกล ด้วยวิธีนี้คุณไม่ต้องให้สิทธิ์การเข้าถึง ssh และสิ่งที่เกี่ยวข้องกับผู้ส่งแต่ละคน


2

เพื่อเพิ่มสิ่งที่ Chris พูดคุณสามารถใช้ gitosis (http://eagain.net/gitweb/?p=gitosis.git) เพื่อควบคุมผู้ที่สามารถเข้าถึง repo ได้

ขึ้นอยู่กับการใช้งานของคุณคุณยังสามารถใช้ hooks (ในโฟลเดอร์. git / hooks) เพื่อให้โค้ดของคุณจะถูกดึงเข้าสู่ระบบไฟล์ของเซิร์ฟเวอร์โดยอัตโนมัติเมื่อคุณกดจากเครื่องของคุณ นี่เป็นสคริปต์ที่นิยมสำหรับการทำที่: http://utsl.gen.nz/git/post-update สิ่งนี้ไม่จำเป็นในทุกกรณี


เชื่อมโยงไปยังโพสต์สคริปต์การปรับปรุงเป็นตาย ...
มอร์เทนเซ่น

1

http://repo.or.czในขณะที่ค่อนข้างดีมีปัญหาบางอย่างกับผู้ใช้บางคน

หากคุณเป็นหนึ่งในนั้นฉันขอแนะนำให้คุณลอง http://unfuddle.comเนื่องจากคุณมาจากพื้นหลังการโค่นล้ม

ลองดู " ทัวร์ 30 วินาที ": http://unfuddle.com/about/tour/plans


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