การสร้างมิเรอร์ github อย่างเป็นทางการ


108

ฉันจะสร้างกระจก GitHub สำหรับเก็บคอมไพล์ภายนอกเช่นนั้นก็จะปรากฏเป็น "กระจกจริง" เช่นเดียวกับในhttps://github.com/mirrors ?

จนถึงตอนนี้ฉันตั้งค่ากระจกโดยใช้:

cd /path/to/bare/repository
git remote add --mirror github git@github.com:user/repo.git

และกำหนดค่าตะขอรับโพสต์เพื่อทำไฟล์git push --quiet github. อย่างไรก็ตามวิธีนี้ github ไม่รู้จักกระจกเงา

มีความคิดอย่างไรที่จะทำด้วยวิธี github เช่นที่ "Mirrorred from" ปรากฏอยู่ใต้ชื่อ repostiory?


2
github.com/apache/libcloudอีกตัวอย่างของ repo ที่ทำมิเรอร์ทั้งหมดจาก Apache LOL
Colin Su

คำตอบ:


113

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

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

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


9

เมื่อพิจารณาจากเนื้อหาปัจจุบันของhttps://github.com/mirrorsดูเหมือนว่า GitHub จะไม่ทำ "มิเรอร์อย่างเป็นทางการ" อีกต่อไปเนื่องจากโครงการส่วนใหญ่ที่ต้องการให้โค้ดของพวกเขามิเรอร์บน GitHub ในปัจจุบันเพิ่งสร้างองค์กรขึ้นมาเช่นGit เอง .

นอกจากนี้ยังมีคำขอคุณสมบัติที่: https://github.com/isaacs/github/issues/415


จริงๆแล้วบางส่วนมี repos GitHub ที่ทำมิเรอร์ พวกเขายังคงทำ แต่ในกรณีที่คุณเป็นผู้พัฒนาโครงการเท่านั้นกล่าวคือไม่มีกระจก "ไม่เป็นทางการ"
nyuszika7h

และอย่างที่พวกเขาพูดสำหรับองค์กรเท่านั้น
nyuszika7h


4

ตามการนำเข้า Git :

สำหรับวัตถุประสงค์ในการสาธิตเราจะใช้:

  • บัญชีภายนอกชื่อ extuser
  • บัญชีผู้ใช้ส่วนตัว GitHub ชื่อ ghuser
  • ที่เก็บ GitHub ชื่อ repo.git

บรรทัดคำสั่ง:

# Makes a bare clone of the external repository in a local directory  
$ git clone --bare https://githost.org/extuser/repo.git

# Pushes the mirror to the new GitHub repository
$ cd *repo.git*
$ git push --mirror https://github.com/ghuser/repo.git

# Remove the temporary local repository.
$ cd ..
$ rm -rf repo.git

1
อะไรคือความแตกต่างระหว่างgit clone --bareและgit clone --mirror? ตัวแปรที่สองไม่เหมาะสมกว่าที่นี่หรือ?
user7610

0

ฉันได้ใช้เครื่องมือที่เรียกว่าgithub-backupซึ่งประสบความสำเร็จในระดับปานกลางหากไม่ทำมิเรอร์อย่างน้อยก็ทำการสำรองข้อมูลทั้งหมด (รวมถึงปัญหาและข้อมูลเมตาอื่น ๆ ) ของผู้ใช้ Github หรือองค์กร ในการอ้างอิงไฟล์ README :

ทุกครั้งที่คุณเรียกใช้ github-backup มันจะพบส้อมใหม่ ๆ บน GitHub github_torvalds_subsurfaceมันจะเพิ่มรีโมทพื้นที่เก็บข้อมูลของคุณสำหรับงาโดยใช้ชื่อเหมือน มันจะดึงมาจากทุกส้อม

ดาวน์โหลดข้อมูลเมตาจากแต่ละส้อม ข้อมูลนี้จะถูกเก็บไว้ในสาขาที่ชื่อว่า "github" แต่ละส้อมจะมีไดเร็กทอรีอยู่ในนั้นเช่นtorvalds_subsurface. ภายในไดเร็กทอรีจะมีไฟล์บางไฟล์เช่นtorvalds_subsurface/watchers. torvalds_subsurface/comments/1อาจจะมีไดเรกทอรีเพิ่มเติมเช่นสำหรับความคิดเห็น:

คุณสามารถติดตามคอมมิตไปยังสาขา github เพื่อดูว่าข้อมูลใดเปลี่ยนแปลงบน GitHub เมื่อเวลาผ่านไป

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

ข้อ จำกัด ได้แก่ :

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