Manuals

Usuwanie, przenoszenie i zmiana nazwy

Subversion umożliwia zmianę nazwy i przenoszenie plików i folderów. Dlatego są wpisy menu pozwalające usuwać i zmieniać nazwy w podmenu TortoiseSVN.

Rysunek 4.34. Menu kontekstowe eksploratora dla wersjonowanych plików

Menu kontekstowe eksploratora dla wersjonowanych plików


Usuwanie plików i katalogów

Użyj TortoiseSVNUsuń by usunąć pliki i foldery z Subversion.

Podczas wykonywania TortoiseSVNUsuń na pliku lub folderze, jest on usuwany natychmiastowo z kopii roboczej oraz zaznaczony do usunięcia w repozytorium podczas następnego zatwierdzenia. Folder nadrzędny elementu wyświetla nakładkę ikony zmieniono. Do czasu zatwierdzenia zmiany, można odzyskać plik używając TortoiseSVNWycofaj na folderze nadrzędnym.

Jeśli chcecie usunąć element z repozytorium, ale zachować go lokalnie jako niewersjonowany plik/folder, użyjcie Rozszerzonego menu kontekstowegoUsuń (zachowaj lokalnie). Musicie przytrzymać klawisz Shift, podczas gdy prawy przycisk myszy wciskacie na elemencie w panelu listy plików w eksploratorze (prawy panel), aby zobaczyć to rozszerzone menu kontekstowe.

Jeśli element został usunięty w eksploratorze zamiast przy użyciu menu kontekstowego TortoiseSVN, okno zatwierdzenia wyświetla te elementy jako brakujące i pozwala wam usunąć je równiez z kontroli wersji przed zatwierdzeniem. Jednakże podczas uaktualnienia kopii roboczej, Subversion zauważy brak elementu i wypełni go ostatnią wersją z repozytorium. Jeśli potrzebujesz usunąć plik z kontroli wersji, zawsze korzystajcie z TortoiseSVNUsuń by Subversion nie musiało zgadywać, co macie zamiar zrobić.

Odzyskiwanie usuniętego pliku lub folderu

Jeśli usunięto plik lub folder i już zatwierdzono tą operację usuwania do repozytorium, zwykłe TortoiseSVN Wycofaj zmiany nie może go już przywrócić. Jednak plik lub folder nie jest zupełnie stracony. Jeśli znacie wersję, w której plik lub folder zostały usunięte (jeśli nie, skorzystajcie z okna dziennika, aby się dowiedzieć) otwórzcie przeglądarkę repozytorium i przełączcie się do tej wersji. Następnie wybierzcie ten usunięty plik lub folder, kliknijcie prawym przyciskiem myszy i wybierzcie Menu kontekstoweKopiuj do ... jako cel tej operacji kopiowania wybierzcie ścieżkę do kopii roboczej.

Przenoszenie plików i katalogów

Jeśli chcecie zrobić prostą miejscową zmianę nazwy z pliku lub folderu, użyjcie Menu kontekstoweZmień nazwę... Wpiszcie nową nazwę elementu i gotowe.

Jeśli chcecie przenieść pliki wewnątrz kopii roboczej, być może do innego podkatalogu, należy użyć obsługi przeciągnięcia prawym przyciskiem myszy:

  1. wybierzcie pliki lub katalogi, które chcecie przenieść

  2. przeciągnijcie prawym przyciskiem do nowej lokalizacji wewnątrz kopii roboczej

  3. puśćcie prawy przycisk myszy

  4. w menu kontekstowym wybierzcie Menu kontekstoweSVN Przenieś wersjonowany(-e) plik(i) tutaj

Zatwierdź folder nadrzędny

Ponieważ zmiana nazwy i przesunięcie są wykonywane jako usunięcie, a następnie dodanie trzeba zatwierdzić folder nadrzędny do przemianowanego/przeniesionego pliku, aby usuwana część zmiany nazwy/przeniesienia pojawiła się w oknie dialogowym zatwierdzenia. Jeśli nie zatwierdzi się usuwana część przemianowania/przeniesienia, to pozostanie w repozytorium, a kiedy współpracownicy zaktualizują kopię roboczą, stary plik nie zostanie usunięty. tj. będą posiadać obie, zarówno starą i nową kopię.

Jest konieczne zatwierdzenie zmiany nazwy folderu przed zmianą jakiegokolwiek plików w tym folderze, w przeciwnym razie w kopii roboczej zrobi się prawdziwy rozgardiasz.

Innym sposobem przenoszenia lub kopiowania plików jest użycie poleceń Windows kopiuj/wytnij. Wybierzcie pliki, które chcecie skopiować, kliknijcie prawym przyciskiem myszy i wybierzcie Menu kontekstoweKopiuj z menu kontekstowego eksploratora Windows. Następnie przejdźcie do folderu docelowego, kliknijcie prawym przyciskiem myszy i wybierzcie TortoiseSVNWklej. Przy przenoszeniu plików, wybierzcie Menu kontekstoweWytnij zamiast Menu kontekstoweKopiuj.

Można również użyć przeglądarki repozytorium, aby przenosić elementy wokół. Czytajcie „Przeglądarka repozytorium”, aby dowiedzieć się więcej.

Nie SVN przenoście zewnętrznych

Nie możecie używać poleceń TortoiseSVN Move lub Zmień nazwę w folderze, który został stworzony przy wykorzystaniu svn:externals. Ta akcja spowoduje, że zewnętrzny element zostanie usunięty ze swojego repozytorium, prawdopodobnie denerwując wielu innych ludzi. Jeśli chcecie przenieść folder zewnętrzny należy użyć zwykłych poleceń przenoszących powłoki, a następnie dostosować atrybuty svn:externals folderów nadrzędnych źródła i przeznaczenia.

Radzenie sobie z konfliktami wielkości liter nazwy pliku

Jeśli repozytorium zawiera już dwa pliki o tej samej nazwie, ale różniące się tylko w wielkością liter (np. TEST.TXT i test.txt), nie będziecie mogli zaktualizować ani pobrać katalogu nadrzędnego na kliencie Windows. Chociaż Subversion obsługuje różnice w wielkości liter w nazwach plików, system Windows nie.

To się czasem zdarza, kiedy dwaj ludzie zatwierdzają z oddzielnych kopii roboczych pliki, które czasem mają taką samą nazwę, ale z różnicą wielkości liter. Może się również zdarzyć, gdy pliki są zatwierdzone z systemu obsługującego rozróżnianie wielkości liter, takich jak Linux.

W takim przypadku trzeba zdecydować, który z nich ma pozostać a drugi usunąć (lub zmienić nazwę) z repozytorium.

Zapobieganie podwójnym plikom o tej samej nazwie

Istnieje skrypt przechwytujący serwera dostępny pod adresem: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/, który zapobiega pobraniom, w wyniku których powstaną konflikty wielkości liter.

Naprawa zmian zewnętrznych

Czasami przyjazne IDE będzie zmieniać nazwy plików za Was w ramach wykonywania refaktoryzacji, i oczywiście nie poinformuje Subversion. Jeśli spróbujecie zatwierdzić swoje zmiany, Subversion będzie widzieć stare pliki jako brakujące, a nowe jako niewersjonowane. Możecie po prostu zaznaczyć nową nazwę pliku, do dodania, ale stracicie wtedy ślad historyczny, jako że Subversion nie wie, że pliki są powiązane.

Lepszym sposobem jest powiadomienie Subversion, że ta zmiana jest rzeczywiście przemianowaniem, a można to zrobić w oknach Zatwierdź zmiany i Sprawdź zmiany. Wystarczy wybrać jednocześnie starą nazwę (brak) i nową nazwę (bez informacji o wersji) i użyć Menu kontekstoweNapraw przeniesienie by powiązać dwa pliki jako zmianę nazwy.

Usunięcie niewersjonowanych plików

Zazwyczaj ustawia się listy ignorowanych tak, że wszystkie wygenerowane pliki są ignorowane w Subversion. Ale co, jeśli chcecie wyczyścić wszystkie te ignorowane elementy w celu wykonania czystej kompilacji? Zazwyczaj ustawia się to w pliku makefile, ale jeśli debugujecie makefile, lub zmieniacie system kompilacji warto mieć sposób oczyszczania pokładów.

TortoiseSVN zapewnia właśnie taką opcję za pomocą Rozszerzonego menu kontekstowegoUsuń niewersjonowane elementy.... Musicie przytrzymać Shift podczas kliknięcia prawym przyciskiem myszy na folder w okienku eksploratora listy (prawy panel), aby zobaczyć rozszerzone menu kontekstowe. Wciśnięcie wejścia menu wyświetli okno dialogowe, które listuje wszystkie pliki bez informacji o wersji w dowolnym miejscu kopii roboczej. Możecie wybrać lub odznaczyć elementy do usunięcia.

Gdy takie elementy są usuwane, wykorzystuje się kosz, więc jeśli się tu pomylicie i usuniecie plik, który powinien być wersjonowany, nadal można go odzyskać.

TortoiseSVN homepage