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
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 veyachown
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.
Hata GitHub için bastırıyor - yetersiz...
Her nesne için özel depo vs genel bir ...
Hata 1046 Hiçbir veritabanı gidermek i...
Nasıl bir diziye bir nesne eklemek içi...
hata: ID 0 işlemi eklemek için başarıs...