Membuat cermin github resmi


108

Bagaimana cara membuat cermin github untuk repositori git eksternal, sehingga muncul sebagai "cermin nyata", misalnya, seperti di https://github.com/mirrors ?

Sejauh ini, saya menyiapkan cermin menggunakan:

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

dan konfigurasikan hook penerimaan pos untuk melakukan a git push --quiet github. Dengan cara ini, bagaimanapun, github tidak mengenali cermin.

Ada ide bagaimana melakukannya dengan cara github, sehingga "Mirrorred from" muncul di bawah nama repositori?


2
github.com/apache/libcloud contoh lain dari mirrored repo, semuanya dari Apache LOL
Colin Su

Jawaban:


113

Berdasarkan komunikasi dengan tim dukungan GitHub, saya menemukan bahwa GitHub saat ini tidak menawarkan mekanisme langsung bagi pengguna untuk mencerminkan repositori dengan cara ini.

Namun, seseorang dapat meminta GitHub untuk menginstal layanan ini untuk repositori yang merupakan bagian dari sebuah organisasi. GitHub kemudian mengonfigurasi repositori yang ada seperti mirror dan menariknya dalam interval yang merupakan fungsi dari jumlah keseluruhan mirror yang mereka miliki.

EDIT : seperti yang ditunjukkan Stuart, GitHub tidak lagi menerima permintaan untuk mencerminkan repositori arbitrer. Satu-satunya pilihan yang tersisa adalah solusi yang saya posting dalam pertanyaan saya, yaitu membuat hook pasca-terima untuk secara otomatis mendorong ke repositori GitHub Anda.


9

Dilihat dari konten https://github.com/mirrors saat ini , tampaknya GitHub tidak lagi melakukan "mirror resmi", karena sebagian besar project yang ingin kodenya dicerminkan di GitHub saat ini hanya membuat organisasi untuknya, seperti Git itu sendiri .

Ada juga permintaan fitur di: https://github.com/isaacs/github/issues/415


Sebenarnya, beberapa di antaranya memiliki repositori yang dicerminkan GitHub. Mereka masih melakukannya, tetapi hanya jika Anda adalah pengembang proyek, yaitu tidak ada mirror "tidak resmi".
nyuszika7h

Dan seperti yang mereka katakan, hanya untuk organisasi.
nyuszika7h


4

Menurut Mengimpor Git :

Untuk tujuan demonstrasi, kami akan menggunakan:

  • Akun eksternal bernama extuser
  • Akun pengguna pribadi GitHub bernama ghuser
  • Repositori GitHub bernama repo.git

Baris perintah:

# 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
Apa perbedaan antara git clone --baredan git clone --mirror? Bukankah varian kedua lebih pas di sini?
pengguna7610

0

Saya telah menggunakan alat yang disebut github-backup dengan tingkat keberhasilan yang lumayan, jika bukan mirror, setidaknya membuat cadangan penuh (termasuk masalah dan metadata lainnya) dari pengguna atau organisasi Github. Untuk mengutip file README :

Setiap kali Anda menjalankan github-backup, itu akan menemukan garpu baru di GitHub. Ini akan menambahkan remote ke repositori Anda untuk garpu, menggunakan nama seperti github_torvalds_subsurface. Ini akan diambil dari setiap garpu.

Ini mengunduh metadata dari setiap garpu. Ini disimpan ke dalam cabang bernama "github". Setiap garpu mendapat direktori di sana, seperti torvalds_subsurface. Di dalam direktori tersebut akan ada beberapa file, seperti torvalds_subsurface/watchers. Mungkin ada direktori lanjut, seperti untuk komentar: torvalds_subsurface/comments/1.

Anda dapat mengikuti komit ke cabang github untuk melihat informasi apa yang berubah di GitHub dari waktu ke waktu.

Format file di cabang github saat ini adalah tipe data serial Haskell. Ini adalah teks biasa, dan dapat dibaca, jika Anda menyipitkan mata.

Batasannya meliputi:

  • tidak ada dukungan repositori pribadi
  • tidak ada hal-hal "sosial" seperti bintang, pengikut, dll
  • catatan untuk baris komit tidak didukung (belum?)
  • label terbitan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.