2014-04-22 20 views
7

Czasami próbuję czytać i pisać w repozytorium Git w tym samym czasie. Ale później pojawia się następujący komunikat o błędzie podczas próby zatwierdzenia plików:LibGit2Sharp Indeks jest zablokowany - Błąd

Błąd został zgłoszony przez libgit2. Category = Index (LockedFile). Indeks jest zablokowany. Może to wynikać z równoczesnego lub zakończonego procesem .

Zatwierdzenie jest wykonywane zgodnie z oczekiwaniami, dlaczego pojawia się ten komunikat o błędzie? Jak się go pozbyć?

(Jeśli deweloper LibGit2Sharp widzi to: Istnieje misstake pisowni w komunikacie o błędzie. ConcuRRRent): D

Odpowiedz

5

Indeks jest kanałem brama między bazą danych obiektów git i katalogu roboczego. Służy do tworzenia commitów (np. Przemieszczanie, unstaging, ..) lub podczas sprawdzania plików. Zatem jednoczesne wykonywanie tych operacji może powodować takie błędy, ponieważ obie operacje będą ścigać się, aby uzyskać dostęp do indeksu.

Niektóre prace są wykonywane na poziomie libgit2, aby korzystanie z indeksu było lepsze dla operacji odczytu wątków (zobacz na przykład libgit2/libgit2#2108).

Jednakże, w zależności od rodzaju operacji odczytu/zapisu, które można wykonać, może nie trzeba przejść przez indeksie:

  • Na przykład, nawigacyjnych commit, drzewo lub pobierania treści Blob nie użyje indeksu.
  • Możesz także tworzyć Bloby, Drzewa i Commity bez przechodzenia przez indeks, bezpośrednio wstawiając obiekty do baz obiektów (Aby szybko rozpocząć, zobacz ten StackOverflow answer).

Jeśli deweloper LibGit2Sharp widzi to: Jest to błąd w pisowni w komunikacie o błędzie: concuRRRent.

Dobry połów! Czy masz ochotę otworzyć żądanie Pull, aby pomóc nam to rozwiązać? ;-)

+1

Mam pętli, która etapy i zatwierdza plik 1000 razy. Zawartość pliku zmienia się po każdym zatwierdzeniu. Jednocześnie przeprowadzam iterację po wszystkich zatwierdzeniach w repozytorium, aby uzyskać historię pliku. W pewnym momencie otrzymuję komunikat: "Błąd został zgłoszony przez libgit2. Category = Os (błąd) Nie powiodło się zmiana nazwy pliku blokującego na .git/index: Odmowa dostępu." Następnie pojawia się komunikat o błędzie z mojego wpisu startowego po każdym zatwierdzeniu. Czy mogę jakoś naprawić repozytorium? – JoeLiBuDa

+10

Jeśli plik 'index.lock' pochodzi z awarii, możesz go usunąć. Nie dzieje się to automatycznie, ponieważ może to być współbieżny proces na żywo. –

+0

@ CarlosMartínNieto To rozwiązuje mój problem! Wspaniały! – JoeLiBuDa

8

Dropbox może również zakłócać działanie git. Wstrzymuję synchronizację skrzynki nadawczej przed jakąkolwiek synchronizacją git.

+0

Nie mam zainstalowanej usługi Dropbox ... – JoeLiBuDa

Powiązane problemy