SORU
23 HAZİRAN 2011, PERŞEMBE


Git Bas Hata: veritabanı depo için bir nesne eklemek için izniniz

Paylaşılan bir git remote için zorlamaya çalıştığımda aşağıdaki hatayı alıyorum: insufficient permission for adding an object to repository database

Sonra okudum hakkında bir düzeltme burada: Fix Bu çalışan için bir sonraki itme bu yana tüm dosyaları doğru grup, ama bir dahaki sefere birisi itti bir değişiklik yapılmış yeni bir öğe nesneleri klasör vardı onların varsayılan grup grup. Aklıma gelen tek şey onlar kontrol ürünlerinin geliştirici varsayılan grubun tüm değiştirmek için, ama bu bir hack gibi görünüyor. Herhangi bir fikir? Teşekkürler.

CEVAP
23 HAZİRAN 2011, PERŞEMBE


Onarım İzinleri

Teşhis ve altta yatan neden (aşağıya bakınız) düzelttikten sonra izinleri onarın.

cd /path/to/repo.git
chgrp -R groupname .
chmod -R g rwX .
find . -type d -exec chmod g s '{}'  

Eğer altta yatan neden düzeltme yaparsanız, hata geri gelmesini ve yeniden çalıştıran yukarıdaki komutları tekrar tekrar tutmak gerekir.

Altta Yatan Neden Olur

Hata aşağıdakilerden biri neden olabilir:

  • Depo paylaşılan bir depo olacak şekilde (git help config core.sharedRepository) değil. Eğer çıkış:

    git config core.sharedRepository
    

    group true 1 ya da bazı maske değil, çalıştırmayı deneyin:

    git config core.sharedRepository group
    

    ve yeniden çalıştırmak özyinelemeli chmod chgrp (bkz: "Onarım") yukarıdaki İzinler. sonra

  • İşletim sistemi dizinleri setgid biraz yorumlayamaz "yeni dosya ve alt dizinleri tüm grubun sahibi alması gerektiğini".

    core.sharedRepository true group, Git temel bir özelliği GNU işletim sistemleri (örneğin, her Linux dağıtımı) sağlamak için yeni oluşturulan dizinleri sahibi tarafından doğru bir grup (Grup Hepsi depo kullanıcıları). Bu özellik GNU coreutils documentation belgelenmiştir:

    ... [Eğer] bir dizinin set-group-ID bit ayarlanır, yeni oluşturulan alt devralır aynı grup olarak dizin ve yeni oluşturulan alt dizinleri miras set-group-ID bit üst dizin. ... [Bu mekanizma sağlar] dosya paylaşımı daha kolay, chmod kullanma ihtiyacı azalmıyor, kullanıcılar tarafından veya chown yeni dosyalar paylaşmak.

    Ancak, tüm işletim sistemlerinde bu özellik (sizi uyarıyorum bir örnektir). Bu işletim sistemleri, Gıt tüm kullanıcılarınız aynı varsayılan grup var emin olmalısınız. Alternatif olarak, bir depo git config core.sharedRepository world (ama dikkatli-olun, bu daha az güvenli) çalışan tarafından yazılabilir dünya yapabilirsiniz.

  • Dosya sistemi grup kimliğini üst dizinden (örneğin, YAĞ) desteklemiyor. ext2, ext3, ext4 setgid bit desteği. Bildiğim kadarıyla, dosya sistemleri bu yok destek setgid bit de yok destek kavramı, grup sahipliğini, yani tüm dosya ve dizinler olacak sahibi tarafından aynı grup zaten (hangi grup olduğunu bir bağlama seçeneği). Bu durumda, tüm kullanıcıların Gıt dosya sistemindeki bütün dosyaların sahibi olan grup içinde olduğundan emin olun.
  • Gıt kullanıcıların tüm depo dizinleri de sahibi olan aynı grupta. Dizinler üzerinde grup sahibi doğru olduğunu ve tüm kullanıcıların bu grup içinde olduğundan emin olun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011
  • UKF

    UKF

    2 Aralık 2009