SVN – problem z commit typu „svn: Plik już istnieje: system plików …” itd.

Podczas pracy z SVN natrafić możemy podczas commitu na dość kuriozalny błąd. Szczególnie jeśli nasze repozytorium posiada z hakiem kilkadziesiąt tysięcy rewizji. Błąd typu:

Dodawanie       wp-content/plugins/akismet
svn: Zatwierdzenie nie powiodło się (szczegóły poniżej):
svn: Plik już istnieje: system plików '/home/user/repo/db', transakcja '52329-dey, ścieżka '/wordpress/blog/wp-content/plugins/akismet'

Może wytrącić z równowagi. Szczególnie dlatego, że uniemożliwia commit i np. pójście do domu..

Pomocne może być następujące działanie.

1. Zmieniamy lokalizację na folder nadrzędny i zmieniamy nazwę folderu z naszą kopią roboczą. Ważnie – nie usuwamy go bo stracimy w końcu naszą pracę.

cd ..
mv blog blog-tmp

2. Zgrywamy od nowa naszą kopię roboczą w te samo miejsce.

Najpierw musimy znać pełną ścieżkę. W tym celu używamy komendy:

svn info

Ścieżka podana jest po dwukropku:

URL:  [ścieżka]

Zaznaczamy ją i kopiujemy. W terminalu to skrót:

CTRL + SHIFT + c

Wykonujemy checkout – zgrywamy od nowa kopię roboczą.

svn co [ścieżka]

ścieżkę wklejamy w terminalu poprzez komendę:

CTRL + v

3. Wracamy do „niedziałającej” kopii roboczej i usuwamy pliki SVN:

cd blog-tmp
find -name ".svn" | xargs rm -r

(omawialiśmy tą komendę wcześniej na naszym blogu)

4. Przechdzimy do „nowej” kopii roboczej i wgrywamy pliki z „niedziałającej” kopii roboczej do naszej „nowej” kopii roboczej:

cd ../blog
cp * ../blog-tmp/. -R

Gotowe! Teraz należy skrupulatnie przeglądnąć zmienione przez nas pliki. Jeśli np. pracujemy w zespole – od momentu jak poprzednio zgraliśmy stare pliki – mogły nastąpić dodatkowe zmiany w zmienianych przez nas plikach. To rozwiązanie nie pozwoli uniknąć konfiktów i należy je ręcznie przepatrzyć.

Oczywiście możemy już zacommitować jak wszystko je O.K. i np. iść do domu 😉

Możesz również polubić…

Inna porada:
Niekiedy przy uruchomianiu programu pocztowego Thunderbird natrafiamy na problem: Thunderbird…