Resmi bir github aynası oluşturma


108

Harici bir git deposu için "gerçek ayna" olarak görünecek şekilde, örneğin https://github.com/mirrors gibi bir github aynası nasıl oluşturabilirim ?

Şimdiye kadar, kullanarak bir ayna kurdum:

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

ve gönderi alma kancasını bir git push --quiet github. Ancak bu şekilde github aynayı tanımaz.

Bunun github yolu ile nasıl yapılacağına dair herhangi bir fikriniz var mı?


2
github.com/apache/libcloud , tümü Apache LOL'den yansıtılan bir repo örneği
Colin Su

Yanıtlar:


113

GitHub'ın destek ekibiyle iletişim kurmaya dayanarak, GitHub'ın şu anda bir kullanıcının depoları bu şekilde yansıtması için doğrudan bir mekanizma sunmadığını keşfettim.

Ancak, GitHub'dan bir kuruluşun parçası olan depolar için bu hizmeti yüklemesini isteyebilir. GitHub daha sonra mevcut bir depoyu böyle bir ayna olarak yapılandırır ve sahip oldukları genel ayna sayısının bir işlevi olan bir aralıkta ondan çeker.

DÜZENLEME : Stuart'ın da işaret ettiği gibi GitHub artık rastgele depoları yansıtma isteklerini kabul etmiyor. Geriye kalan tek seçenek, sorumda yayınladığım çözüm, yani GitHub deponuza otomatik olarak göndermek için bir alma sonrası kancası oluşturmak.


9

Https://github.com/mirrors sayfasının mevcut içeriğine bakılırsa , GitHub artık "resmi aynalar" yapmıyor gibi görünüyor, çünkü kodlarının GitHub'a yansıtılmasını isteyen çoğu proje bugün bunun için Git'in kendisi gibi bir organizasyon oluşturuyor .

Ayrıca şu adreste bir özellik talebi var: https://github.com/isaacs/github/issues/415


Aslında, bunların bazılarının GitHub yansıtmalı depoları var. Hala yapıyorlar, ancak sadece projenin geliştiricisiyseniz, yani "resmi olmayan" aynalar yoksa.
nyuszika7h

Ve dedikleri gibi, sadece kuruluşlar için.
nyuszika7h


4

Bir Git İçe Aktarmaya Göre :

Gösteri amacıyla şunları kullanacağız:

  • Extuser adlı harici bir hesap
  • Ghuser adlı bir GitHub kişisel kullanıcı hesabı
  • Repo.git adlı bir GitHub deposu

Komut satırı:

# 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
Arasındaki fark nedir git clone --bareve git clone --mirror? İkinci değişken buraya daha uygun değil mi?
user7610

0

Bir Github kullanıcısının veya kuruluşunun tam bir yedeğini (sorunlar ve diğer meta veriler dahil) yansıtmasa bile en azından tam yedeklemek için, orta düzeyde başarıya sahip github-backup adlı bir araç kullandım . README dosyasından alıntı yapmak için :

Github-backup'ı her çalıştırdığınızda, GitHub'da yeni çatallar bulacaktır. Gibi isimler kullanarak çatallar için deponuza uzaktan kumanda ekleyecektir github_torvalds_subsurface. Her çataldan alacak.

Her çataldan meta verileri indirir. Bu, "github" adlı bir dalda saklanır. Her çatal, orada bir dizin alır torvalds_subsurface. Dizinin içinde, gibi bazı dosyalar olacaktır torvalds_subsurface/watchers. Yorumlar için olduğu gibi, başka dizinler olabilir: torvalds_subsurface/comments/1.

GitHub'da zaman içinde hangi bilgilerin değiştiğini görmek için github şubesinin taahhütlerini takip edebilirsiniz.

Github dalındaki dosyaların biçimi şu anda Haskell serileştirilmiş veri türleridir. Bu düz bir metindir ve gözlerinizi kısarsanız okunabilir.

Sınırlamalar şunları içerir:

  • özel depo desteği yok
  • yıldızlar, takipçiler vb. "sosyal" şeyler yok
  • İşlem satırlarına notlar desteklenmiyor (henüz?)
  • yayın etiketleri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.