2011-06-19 13 views
16

Tylko dla jednego pliku, otrzymuję następujący błąd:git: Nie do pliku indeksu - Permission denied

error: unable to write sha1 filename /opt/www/.git/objects/3f/ce3587c54a8be14c69b08c6b01f94949b11b47: Permission denied 

error: wp/wp-admin/css/theme-install.dev.css: failed to insert into database 
fatal: unable to index file wp/wp-admin/css/theme-install.dev.css 

Sprawdziłem moje uprawnienia pliku w pytaniu .git obiektów katalogu w pytaniu i sam. .git. Mogę dodać inne pliki oprócz tego. Mogłem stat/r/w/touch plik, a dotknięcie nie pomogło. Wszystkie uprawnienia są następujące: .

Czy to jakiś szalony błąd?

+1

Czy możesz "dotknąć" nowych plików w '.../objects/3f', a jeśli nie, jaki jest jego tryb? Czy '.../objects/3f/ce3 ...' już istnieje, a jeśli tak, to jaki jest jego tryb? Czy partycja, na której znajduje się '/ opt', może być pełna? –

+0

Dotykanie jest w porządku, a plik nie istnieje. – h4xnoodle

+0

również mi się przydarzyło w tym przypadku: mając plik o nazwie "imafile" > usuwając ten plik> utwórz katalog o nazwie "imafile"> put files in = nie można zatwierdzić ponieważ "Nie można znaleźć indeksu" – Flozza

Odpowiedz

9

Patrząc na kodzie źródłowym Git (sha1_file.c, funkcja move_temp_to_file()) wygląda jak Git nie udaje się zmienić nazwę pliku tymczasowego o nazwie /opt/www/.git/objects/3f/tmp_obj_XXXXXX (gdzie XXXXXX jest sześć losowych znaków), aby /opt/www/.git/objects/3f/ce3587c54a8be14c69b08c6b01f94949b11b47. Może się to zdarzyć, jeśli nie masz uprawnień do usuwania plików w /opt/www/.git/objects/3f.

pewne rzeczy, aby spróbować:

  • Jeśli wielu użytkowników uzyskujących dostęp do repozytorium git, może trzeba uruchomić coś podobnego git config core.sharedRepository 0664 (patrz git help config szczegóły), aby zapewnić, że nowo utworzone katalogi i pliki mają odpowiednie uprawnienia dla wszystkich użytkownicy repozytorium.
  • Spróbuj uruchomić rm -f /opt/www/.git/objects/3f/tmp_obj_* i sprawdź, czy to rozwiąże problem.
  • Sprawdź, czy można odtworzyć problemu poza Git, wykonując następujące czynności:

    mkdir -p /opt/www/.git/objects/3f 
    cd /opt/www/.git/objects/3f 
    rm -f tmp_obj_* ce3587c54a8be14c69b08c6b01f94949b11b47 
    echo "testing" >tmp_obj_abcdefg 
    mv tmp_obj_abcdef ce3587c54a8be14c69b08c6b01f94949b11b47 
    rm -f tmp_obj_abcdefg 
    

    Pamiętaj, aby uruchomić powyższe polecenia tego samego użytkownika, który doświadczył błędu.

  • Spróbuj rekursywnie chown i chmod w katalogu obiektów.
+0

Z nieznanego powodu Rzeczywiście posiadałem pewne obiekty przez root. – Gra

5

Nie masz uprawnień do pisania w /opt/www/.git/objects/3f.

Najszybszym rozwiązaniem jest użycie polecenia sudo w celu wykonania polecenia z uprawnieniami użytkownika root.

sudo <Your git command>

rozwiązać go dla mnie.

+1

pracował dla mnie ... Myślę, że spowodowało to w moim przypadku przerwanie w połowie poprzedniego popełnienia –

31

Jeśli używasz Visual Studio lub czegoś podobnego, które generuje plik mdf, po prostu zamknij VS & ponów próbę ponownego uruchomienia polecenia git. Tym razem powinno działać.

+2

ty człowiek, mój przyjaciel – kiiiiNNNNNNNNNyyyy

Powiązane problemy