1 / 117

CVS i SVN

Systemy kontroli wersji. CVS i SVN. Zagadnienia. CVS i SVN – charakterystyka i różnice Komendy CVS Komendy SVN Serwery i ich konfiguracja Aplikacje klienckie Usługi hostingowe. CVS - charakterystyka.

lovie
Download Presentation

CVS i SVN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systemy kontroli wersji CVS i SVN

  2. Zagadnienia • CVS i SVN – charakterystyka i różnice • Komendy CVS • Komendy SVN • Serwery i ich konfiguracja • Aplikacje klienckie • Usługi hostingowe

  3. CVS - charakterystyka CVS (ang. Concurrent Versions System) to popularny system kontroli wersji udostępniany na licencji GPL. Został stworzony do pracy grupowej nad kodem programów lub innych projektów realizowanych w zapisie elektronicznym. CVS zbudowany jest w architekturze klient/serwer. Dick Grune zaprojektował CVS w latach 80. XX wieku. Od początku lat 90. XX wieku CVS jest wykorzystywany jako narzędzie pracy grupowej w wielu projektach programistycznych, których współpraca opiera się na wykorzystaniu Internetu - m.in. całe systemy operacyjne jak FreeBSD czy NetBSD oraz wielu mniejszych przedsięwzięciach.

  4. CVS - charakterystyka Standardowo klient i serwer łączą się ze sobą przez sieć LAN lub przez Internet, istnieje jednak możliwość działania zarówno klienta jak i serwera na jednej maszynie (jeżeli CVS ma za zadanie śledzenie historii wersji projektu wśród developerów lokalnych). Oprogramowanie serwera standardowo obsługiwane jest przez systemy z rodziny Unix, aczkolwiek CVSNT może być uruchomiony także na systemach z rodziny Windows. Oprogramowanie klienckie obsługiwane jest natomiast przez większość dostepnych systemów operacyjnych.

  5. CVS - charakterystyka Wszystkie pliki projektu są trzymane w jednym miejscu, w tzw. repozytorium (ang. repository). Użytkownik najpierw pobiera fragment z repozytorium do swojego lokalnego katalogu. Po wprowadzeniu w nim zmian może wysłać poprawki z powrotem do repozytorium, żeby stały się dostępne dla innych. Jeżeli operacja ta zostanie przeprowadzona pomyślnie, kolejne wersje danego projektu są automatycznie inkrementowane przez serwer, który zapisuje datę uaktualnienia wersji oraz informację o autorze w logach. Numery rewizji nadawane są niezależnie dla każdego pliku. Żeby zaznaczyć, że dany zbiór plików w konkretnych rewizjach stanowi wersję pakietu jako całości, albo żeby dla innych potrzeb związać ze sobą rewizje różnych plików, możemy nadać danemu zbiorowi plików o ustalonych rewizjach symboliczną nazwę (tag). Takie nazwy mogą być potem używane zamiast numerów rewizji.

  6. CVS - charakterystyka Klient ma możliwość porównywania wersji, oglądania całej historii zmian dokonywanych w projekcie oraz automatycznego uaktualniania swoich plików projektu (likwiduje to konieczność manualnego ściągania aktualnych plików). CVS udostępnia możliwość obsługi autonomicznych gałęzi (ang. branches) danego projektu. Do efektywnego przechowywania wielu wersji jednego pliku używana jest kompresja delta. W środowisku open source CVS był najczęściej wybieranym systemem kontroli wersji dzięki temu, że jest systemem darmowym oraz dzięki swej funkcjonalności i prostocie. CVS jest systematycznie wypierany przez doskonalszy system, którym jest SVN (Subversion).

  7. SVN - charakterystyka Subversion (znany również jako SVN) - system kontroli wersji, który powstał w celu zastąpienia CVS. Funkcjonalnie jest z nim zgodny w większości przypadków, z kompatybilności zrezygnowano tylko tam, gdzie było to niezbędne. SVN jest wolnym oprogramowaniem na licencji Apache. SVN został pomyślany jako lepszy CVS. Zachowuje większość koncepcji CVS, zmieniając tylko te, które od początku były uznawane za błędne lub wynikały z zaszłości historycznych. Istnieje jednak sporo różnic między CVS a Subversion.

  8. CVS a SVN - różnice • wersjonowane są całe projekty • nie ma wersji poszczególnych plików, tylko wersje całego systemu plików • do wersji pliku odwołujemy się jako do wersji systemu, w którym plik miał pewną postać • wersjonowane są katalogi • katalogi można przesuwać (svn move) i usuwać (svn rm) zachowując informacje o ich poprzednim stanie • można sprawdzać i odwracać lokalne zmiany bez łączenia się z serwerem • operacje takie jak svn status czy svn revert nie wymagają połączenia z serwerem, przez co są o wiele szybsze • komenda update działa inaczej • svn update uaktualnia pliki w lokalnej kopii i wypisuje informacje tylko o tych plikach, które zostały uaktualnione • svn status wypisuje pliki, które zostały lokalnie zmienione (chyba, że poda mu się flagę -u)

  9. CVS a SVN - różnice • branchowanie i tagowanie jest szybkie i przejrzyste • dla Subversion tag jest kopią danych z osobnego katalogu w repozytorium • SVN tworzy kopie plików w sposób efektywny czasowo i pamięciowo • SVN pamięta własności plików i katalogów, oprócz ich fizycznej zawartości • SVN wymaga rozwiązania explicit konfliktów pojawiających się podczas uaktualniania wersji • SVN efektywnie traktuje pliki binarne • SVN umożliwia dostęp do repozytorium na wiele sposobów • demon svnserve • tunelowanie połączenia w dowolny sposób (svn+ssh, svn+rsh itd.) • moduł Apache (SSL lub HTTP) • zmiany są transakcjami atomowymi • zmiany w kilku plikach lub katalogach odnoszą skutek tylko wtedy, gdy wszystkie modyfikacje zostały zakończone pomyślnie

  10. Komendy cvs 1. Składnia: cvs [-opcje_ogólne] polecenie [-opcje_polecenia][argumenty] Przydatne opcje: -n pusty przebieg, żadnych efektów -t wyświetla komunikaty pokazujące etapy pracy cvs

  11. Komendy cvs 2. Łączenie się z serwerem CVS: Ustawienie zmiennej środowiskowej CVSROOT: Połączenie do lokalnego serwera CVS export CVSROOT=/var/cvsroot Zdalny serwer CVSROOT używający protokołu haseł serwera CVS: export CVSROOT=:pserver:cvs@nasz-server.com:/var/cvsroot CVSROOT z RSH/SSH export CVSROOT=login@foo.bar.com:/data/cvs

  12. Komendy cvs Jeżeli zmienna środowiskowa CVS_RSH ma wartość "ssh" to nasz klient będzie się starał użyć ssh do nawiązania połączenia. W innym przypadku użyje RSH. Połączenie RSH/SSH jest bezpieczne, jednak nie umożliwia pobierania źródeł przez klienta anonimowego. Jeżeli nie ustawimy zmiennej CVSROOT, polecenia: cvs login cvs checkout będą wymagały dodatkowo dopisania: -d :pserver:cvs@nasz-server.com:/var/cvsroot po komendzie cvs. Eksportowanie zmiennej CVSROOT przyspiesza pracę.

  13. Komendy cvs 3. Logowanie do serwera: cvs login|logon|lgn Brak ustawionej zmiennej CVSROOT: cvs –d pserver:cvs@nasz-server.com:/var/cvsrootlogin Następnie podajemy nasze hasło. W przypadku logowania się na konto anonimowe nie podajemy nic.

  14. Komendy cvs 4. Pobieranie repozytorium: cvscheckout|co|get [-ANPRcflnps] [-rrev] [-D date] [-d dir][-jrev1] [-jrev2] [-k kopt] modules... Dostępne opcje: -c - wyświetla listę modułów dostępnych w repozytorium (o ile administrator uaktualnił bazę danych modułów) -d nowy_katalog - zapisuje moduł do katalogu 'nowy_katalog' -z<0-9> - poziom kompresji Więcej informacji: cvs –help co

  15. Komendy cvs Kiedy komenda wypożyczenia ("co") wykona swoje zadanie, ujrzymy katalog "moduły" w katalogu, w którym obecnie się znajdujemy; przechowywane będą tam najnowsze zasoby. Zauważyć można, że wszystkie katalogi mają dodatkowy katalog CVS znajdujący się wewnątrz nich - w ten właśnie sposób CVS przechowuje informacje dotyczące konta użytkownika. Owe katalogi można spokojnie pominąć i zapomnieć o nich. Odtąd nie będziemy musieli się martwić ustawianiem zmiennej CVSROOT, czy też przymusem wpisywania wartości CVSROOT w linii poleceń. Dzieje się to dlatego, że te dane są zapisane właśnie we wcześniej wspomnianych katalogach. Ustawienie zmiennej CVSROOT jest wymagane tylko przy początkowej inicjalizacji oraz wykonywaniu polecenia "co". Również opcja export|ex|exp.

  16. Komendy cvs 5. Aktualizacja zasobów: cvs update|up|upd [-APCdflRp] [-k kopt] [-r rev] [-D date] [-j rev] Powoduje połączenie najnowszej wersji plików z repozytorium z plikami pobranymi wcześniej przez nas. W efekcie nasze lokalne pliki będą zawierać wszystkie wprowadzone do tej pory zmiany. Konieczne jest wydanie tej komendy w przypadku, gdy CVS wykryje konflikt wersji. Przykład: cvs up –dP -d – stwórz nowe katalogi, jeśli te wystąpiły w repozytorium -P – usuń puste katalogi z lokalnie wypożyczonych kopii plików. Używanie "-P" to naprawdę dobry pomysł ponieważ cvs ma skłonność do tworzenia dużej liczby pustych (użytych raz, a następnie porzuconych) gałęzi drzewa. -C modyfikowany_plik – cofnięcie zmian w pliku, nadpisuje lokalnie zmodyfikowaną kopię pliku najnowszą rewizją z repozytorium -r Więcej informacji: cvs –help up

  17. Komendy cvs 6. Zatwierdzanie zmian: cvscommit|ci|com [-Rlf] [-m msg | -F logfile] [-r rev] files... Przykład: cvs commit plik.cpp cvs commit directory cvs commit –m “naszkomentarz” cvs commit –r 3.0 "cvs commit" nie tylko zatwierdza nasze zmiany w repozytorium, ale zanim prześle je do zdalnego repozytorium, cvs uruchomi domyślny edytor i pozwoli na krótkie opisanie modyfikacji, które wprowadzamy. Po wprowadzeniu komentarzy, zapisaniu pliku i wyjściu z edytora, nasze zmiany zostaną wprowadzone w zdalnym repozytorium i będą dostępne dla wszystkich deweloperów w zespole. CVS ściągnął i poprawnie połączył zmiany. Niestety CVS to nie człowiek, więc nie potrafi myśleć i dlatego nie zawsze uda mu się automatycznie połączyć zmiany. W takiej sytuacji zasygnalizuje błąd ,,conflicts during merge”. Dokończenia łączenia będzie musiał dokonać człowiek.

  18. Komendy cvs Podczas aktualizacji danych serwer informuje nas o statusie plików, z którymi miał do czynienia podczas przeprowadzania aktualizacji. Możliwe są następujące litery statusu: - U serwer przesłał nam kompletny plik z repozytorium - P serwer przesłał nam jedynie różnicę (diff) pomiędzy plikiem w repozytorium a naszym lokalnym - A plik został dodany do lokalnej kopii ale informacja o tym nie została przesłana do repozytorium (nie wykonano komendy commit) - R plik został usunięty z lokalnej kopii ale informacja o tym nie została przesłana do repozytorium (nie wykonano komendy commit) - M kopia lokalna pliku został zmieniona - C podczas próby automatycznego łączenia został wykryty konflikt - ? plik istnieje tylko w lokalnej kopii i nie posiada odpowiednika w repozytorium Możemy nakazać CVS’owi ignorować określone pliki. Wystarczy wpisać nazwy plików do pliku ,,.cvsignore” i przesłać ów plik do repozytorium. Więcej informacji: cvs –help commit

  19. Komendy cvs 7. Przeglądanie dziennika: cvslog|lo|rlog [-lRhtNb] [-r[revisions]] [-ddates] [-s states][files…] Pozwala obejrzeć historię wpisów dokonywanych przy przesyłaniu poprawek (commit -m xyz). Więcej informacji: cvs –help log

  20. Komendy cvs 8. Dodawanie pliku/katalogu do repozytorium cvsadd|ad|new [-k rcs-kflag] [-m message] files... Przykład: cvs add plik.c mkdirkatalog cvs add katalog Dodanie pliku do repozytorium następnym razem gdy użyjemy komendy cvs commit - inni deweloperzy będą mogli zobaczyć ten plik.

  21. Komendy cvs Inaczej niż w przypadku dodawania pliku, katalog pojawia się w repozytorium od razu. Nie jest potrzebny cvs commit. Kiedy już dodamy lokalny katalog do cvs, wewnątrz niego zostanie utworzony kolejny katalog, tym razem o nazwie "CVS", służący do przechowywania danych o koncie użytkownika. W ten sposób wystarczy spojrzeć do określonego katalogu, a w nim znaleźć CVS by wiedzieć, że ten katalog został dodany do repozytorium. Więcej informacji: cvs –help add

  22. Komendy cvs 9. Usuwanie pliku: cvsremove|rm|delete [-flR] [files...] Plik zostanie zaplanowany do usunięcia z repozytorium następnym razem gdy zatwierdzimy zmiany. Kiedy zatwierdzimy plik, zostanie on oficjalnie usunięty z lokalnej wersji repozytorium. Chociaż cvs nie usunie tego pliku i będzie przechowywał całkowity stan jego zawartości i historii, jeśli pojawi się potrzeba jego przejrzenia później. Jest to jeden ze sposobów w których cvs chroni wartościowy kod źródłowy. cvs remove jest komendą rekursywną, co oznacza, że możemy usunąć kilka plików, a potem zastosować cvs remove (komendę) bez żadnych argumentów z macierzystego katalogu. Czyniąc to sprawimy, że wszystkie usunięte pliki będą oznaczone jako usunięte, co zostanie wykonane przy następnym zatwierdzeniu zmian.

  23. Komendy cvs Możemy nakazać CVSowi ignorować określone pliki. Wystarczy wpisać nazwy plików do pliku ,,.cvsignore” i przesłać ów plik do repozytorium. Przykład: cvs remove plik.cpp cvs remove mój_katalog cvs remove -f plik.cpp – usuwa plik fizycznie Więcej informacji: cvs –help remove

  24. Komendy cvs 10. Status cvsstatus|st|stat [-vlR] [files...] Otrzymamy informacje o numerze rewizji, lokalizacji pliku w repozytorium, oznakowaniu pliku (nazwami symbolicznymi) itp. Najistotniejsze dla nas jest pole ,,Status:”. Plik może mieć jeden z poniższych statusów: - Up-to-date - plik jest aktualny (identyczny z wersją w repozytorium) - Locally Modified - lokalna kopia pliku została zmieniona - Locally Added - plik został dodany do lokalnej kopii - Locally Removed - plik został usunięty z lokalnej kopii - Needs Checkout - ktoś dokonał zmian w pliku i przesłał

  25. Komendy cvs - Needs Patch zmiany do repozytorium. Należy wykonać update. - Needs Merge - wymagane jest połączenie naszych zmian w pliku ze zmianami innej osoby - File had conflicts on merge - podczas łączenia wystąpiły konflikty - Unknown - plik istnieje tylko w lokalnej kopii i nie posiada odpowiednika w repozytorium Przykład: cvs status -v plik.cpp Więcej informacji: cvs –help status

  26. Komendy cvs 11. Anulowanie komendy checkout: release [-d] directories... Służy do anulowania komendy checkout bez zapisywania zmian. Dodatkowo możemy usunąć katalog lokalny korzystając z opcji –d. Po zakończeniu lokalnych działań nad projektem nie jest wskazane kasowanie jego katalogu, należy zwolnić go poleceniem cvs release. Zakończenie sesji. Przykład: cvs release nazwa_katalogu Więcej informacji: cvs –help release

  27. Komendy cvs 12. Utworzenie etykiety symbolicznej (rozgałęzienie): cvs tag|ta|freeze [-bcdFflR] [-r rev|-D date] nazwa_symboliczna [files...] CVS nadaje numery wersji indywidualnie dla każdego pliku. Czasami jednak chcemy zaznaczyć, że kilka plików należy do tego samego wydania. Inną możliwą sytuacją jest potrzeba rozwijania projektu „wielowątkowo”, tzn. zmiany w projekcie mogą iść w dwóch różnych kierunkach, a my chcemy zachować nad nimi kontrole. Służą do tego właśnie znaczniki. Dzięki nim możemy oznaczyć kilka plików jako konkretne wydanie, lub tez stworzyć „odgałęzienia”(branches). Przykład: cvs tag –c version-3 cvs checkout –r version-3 test – pobranie plików z przypisaną etykietą Więcej informacji: cvs –help tag

  28. Komendy cvs 13. Usunięcie etykiety symbolicznej: cvsrtag|rt|rfreeze [-abdFflnR] [-r rev|-D date] tag modules... Przykład: cvsrtag –d version-3 Więcej informacji: cvs –help rtag

  29. Komendy cvs 14. Informacje dotyczące modyfikacji danego pliku: cvsannotate|ann [-lRfF] [-r rev] [-D date] [files...] Wyświetla informacje o ostatnich modyfikacjach w każdej linii pliku.

  30. Komendy cvs Przykład: [marek@tmp]$cvs annotate example1 Annotations for example1/header.h *************** 1.1 (marek 01-Oct-08):#define NAME "MAREK" Annotations for example1/test.c *************** 1.1(marek 01-Oct-08): #include <stdio.h> 1.4(marek 01-Oct-08): #include "header.h" 1.1(marek 01-Oct-08): 1.1(marek 01-Oct-08): int main(){ 1.5(anonymous 02-Oct-03): printf ("Witajswiecie\n"); 1.4(marek 01-Oct-03): printf ("%s\n", NAME); 1.1(marek 01-Oct-03): return 0; 1.1(marek 01-Oct-03): } [marek@tmp]$ Więcej informacji: cvs –help ann

  31. Komendy cvs 15. Różnica pomiędzy wersjami pliku: cvs diff [-lR] [-k kopt] [format_options] Opcja ,,-r” pozwala na porównywanie wg. numerów rewizji. Możliwe jest także porównywanie wg. daty (opcja ,,-D”) jak i mieszane. cvs diff -u plik - wyświetla różnicę pomiędzy najnowszą rewizją pliku z repozytorium, a plikiem znajdującym się katalogu roboczym cvs diff -u -r1.1 plik - wyświetla różnicę pomiędzy rewizją 1.1, a plikiem znajdującym się aktualnie w katalogu roboczym cvs diff -u -r1.1 -r1.3 plik - wyświetla różnicę pomiędzy rewizją 1.1, a 1.3

  32. Komendy cvs Przykład: cvs diff -u -r1.2 -r1.3 plik.c cvs diff -u -r1.2 -Dnowplik.c cvs diff -u -D’1 minute ago’ -Dnowplik.c vs diff -u -D’2000-04-17′ -Dnowplik.c Więcej informacji: cvs –help diff

  33. Komendy cvs 16. Różnica pomiędzy wersjami repozytorium: cvs rdiff|patch|pa [-flR] [-c|-u] [-s|-t] [-V %d] [-k kopt] Wyświetla różnice między dwoma wersjami modułu. Przykład: cvsrdiff -r rev1 -r rev2 target Więcej informacji: cvs –help rdiff

  34. Komendy cvs 17. Tworzenie nowego archiwum: cvsimport|im|imp [-d] [-k subst] [-I ign] [-m msg] [-b branch][-W spec] repository vendor-tag release-tags... Tworzy nowy moduł w repozytorium Przykład: svn import http://localhost/repos twój-projekt \ nazwa-projektu -m "początkowy import projektu" Tworzy katalog o nazwie nazwa-projektu w Twoim repozytorium. Katalog ten zawiera pliki Twojego projektu.

  35. Komendy cvs cvs import -m "Komentarz" module-name vendor-tag release-tag module-name – nazwa modułu – jest nazwą katalogu w którym będzie przechowywany nasz projekt, tą nazwą będziemy się posługiwali chcąc ściągnąć projekt do naszego lokalnego katalogu vendor-tag – nazwa opiekuna - nazwa osoby dodającej moduł do repozytorium release-tag – nazwa wydania - nazwa wydania, może być np. start Więcej informacji: cvs –help import

  36. Komendy cvs 18. Historia: cvshistory|hi|his [-report] [-flags] [-options args] [files...] Pokazuje historie dostępu do repozytorium Więcej informacji: cvs –help history.

  37. Komendy cvs 19. Usuwanie danych dotyczących logowania: cvs logout Usuwa .cvspass z lokalnego repozytorium. Więcej informacji: cvs –help logout

  38. Komendy cvs 20. Informacje dotyczące modułu: cvs rlog Więcej informacji: cvs –help rlog

  39. Komendy cvs 21. Informacje o aktualnej wersji repozytorium cvs version Więcejinformacji: cvs –help version

  40. Komendy cvs 22. Kto przegląda pliki: cvs watches Więcejinformacji: cvs –help watches

  41. Komendy cvs 23. Zarządzanierepozytorium: cvsadmin|adm|rcs [options] files... Więcejinformacji: cvs –help admin

  42. Komendy cvs 24. Tworzenierepozytorium: cvs -d "$HOME/cvsroot" init Utworzenie nowego repozytorium w katalogu domowym użytkownika, w podkatalogu cvsroot. Więcejinformacji: cvs –help init W repozytorium najczęściej składowane są pliki tekstowe. Pliki binarne z reguły są generowane automatyczne, a nie pisane przez człowieka, i nie stanowią części źródeł. Również porównywanie wersji plików binarnych i nakładanie poprawek rzadko ma inny sens niż stwierdzenie ,,takie same'' albo ,,różne'' oraz zastąpienie nową wersją. Mimo wszystko w CVSie można umieszczać też pliki binarne. Należy wtedy używać opcji -kb, która wyłącza tłumaczenie końców linii z lokalnego standardu na konwencję stosowaną w CVSie (w przypadku Unixa nie ma to akurat znaczenia) oraz zastępowanie słów kluczowych.

  43. Komendy SVN 1. Tworzenie repozytorium: svnadmincreate --fs-type fsfsREPOS_PATH Tworzy nowe, puste repozytorium typu FSFS w podanej lokalizacji. Lokalizacja musi być lokalną ścieżką, a nie adresem URL.

  44. Komendy SVN 2. Importowanie projektu: svn import [PATH] URL Importuje projekt o ścieżce `PATH` do repozytorium pod wskazanym `URL`. Jeśli parametr PATH nie jest określony, ścieżka aktualnego katalogu zostanie użyta. Ważne parametry: -m TEXT opismodyfikacji. Jeśli brakuje modyfikatora domyślny edytor($SVN_EDITOR ) zostanie uruchomiony w celu wpisania opisu modyfikacji.

  45. Komendy SVN 3. Checkout projektu: svn checkout URL [PATH] Kopiuje pliki z repozytorium do wskazanego katalogu bądź do bieżącego jeśli parametr ‘PATH’ nie został użyty. Polecenie oprócz skopiowania plików projektu tworzy specjalny folder .SVN, dzięki któremu nie będziemy musieli wpisywać ścieżki repozytorium następnym razem.

  46. Komendy SVN 4. Aktualizacja projektu: svn update [PATH...] Polecenie zawsze wykonujemy przed rozpoczęciem pracy z projektem. Pobiera ona wszystkie zmiany z repozytorium i modyfikuje nasz lokalny projekt. Po wykonaniu polecenia, wszystkie zmiany będą wyświetlone z odpowiednim znakiem: A - Plik dodany D – Plik usunięty U – Plik zaktualizowany C - Konflikt G – Plik scalony Ważne parametry: --revision (-r) – numer wersji. Jeśli parametr nie zostanie użyty, najnowsza wersja będzie brana pod uwagę.

  47. Komendy SVN 5. Status lokalny: svn status [PATH...] Wyświetla status katalogu roboczego(lokalnego). Komenda sprawdza status lokalny i dlatego nie musi łączyć się z repozytorium. Każda wyświetlona linia poprzedzona jest jednym z następujących znaków: 'A' - Plik dodany 'D' - Plik usuniętny 'M' –Plik zmodyfikowany 'C' – Występujekonflikt '?' – Plik występuje w katalogu roboczym ale nie jest pod kontrolą wersji. `!` - Brak pliku. Prawdopodobnie plik został usunięty za pomocą innych narzędzi niż SVN.

  48. Komendy SVN 6. Aktualizacja repozytorium (commit): svn commit [PATH...] Zatwierdza i wysyła wszystkie zmiany do repozytorium. Aby sprawdzić, które pliki zostaną zmienione należy skorzystać z polecenia SVN status. Ważne parametry: -m TEXT opis modyfikacji. Jeśli brakuje modyfikatora domyślny edytor($SVN_EDITOR ) zostanie uruchomiony w celu wpisania opisu modyfikacji.

  49. Komendy SVN 7. Dodawanie plików lub folderów do katalogu roboczego: svn add PATH... Dodaje pliki lub foldery do katalogu roboczego. Przydatna komenda gdy stworzymy jakiś plik w obcym narzędziu a następnie skopiujemy go do katalogu roboczego innym narzędziem niż SVN. Wtedy po wykonaniu polecenia ‘svn status ’ plik będzie opatrzony znakiem `?`. Znak ‘?’ informuje nas, że plik nie jest pod kontrolą wersji SVN. Abyśmy mogli potwierdzać zmiany(SVN commit) musimy go najpierw dodać do systemu kontroli wersji za pomocą komendy `svn add`. Zatem wszystkie nowe pliki\foldery, które stworzymy musimy dodawać za pomocą `svn add` a nie za pomocą zwykłego kopiowania plików.

  50. Komendy SVN 8. Usuwanie plików lub folderów z katalogu roboczego: svndelete PATH... svndelete URL... Komenda analogiczna do svn add. Gdy plik został usunięty innym narzędziem niż SVN to po wykonaniu komendy `svn status` taki plik będzie opatrzony znakiem `!` informującym, że plik fizycznie nie istnieje a jednak w systemie SVN jest zapisany jako plik pod kontrolą wersji. Musimy więc poinformować SVN, żeby usunął go ze swojej pamięci za pomocą komendy `SVN delete.` Druga wersja komendy usuwa plik bezpośrednio z repozytorium wykonując od razu `SVN commit`.

More Related