====== Subversion ====== ===== Architektura repozytorium ===== {{http://svnbook.red-bean.com/en/1.1/images/ch01dia1.png?300}} ===== Podstawowe operacje ===== [[http://svnbook.red-bean.com/en/1.0/re12.html|import]] - dodawanie plików i katalogów do repozytorium svn import plik http://adres.repozytorium/svn/projekt/trunk/plik -m "Import pliku" [[http://svnbook.red-bean.com/en/1.0/re04.html|checkout]] - tworzenie kopii roboczej o nazwie ''projekt'' svn checkout http://adres.repozytorium/projekt/ project [[http://svnbook.red-bean.com/en/1.0/re01.html|add]] - dodawanie plików i katalogów do kopii roboczej (w celu zatwierdzenia ich w repozytorium) svn add program.c svn add katalog/ [[http://svnbook.red-bean.com/en/1.0/re06.html|commit]] — wysłanie zmian do repozytorium svn commit -m "Opis zmian" svn commit plik.txt -m "Bardzo ważna zmiana w pliku plik.txt." [[http://svnbook.red-bean.com/en/1.0/re28.html|update]] — aktualizacja kopii roboczej svn update svn update plik1 plik2 svn update pewien_katalog | A | Nowy plik (Added) | | D | Usunięty plik (Deleted) | | U | Zmodyfikowany (Updated) | | C | Konflikt (Conflict) | | G | Połączenie zmian w pliku (Merged) | [[http://svnbook.red-bean.com/en/1.0/re26.html|status]] - informacje dotyczące plików w kopii roboczej svn status svn status katalog | Pierwsza kolumna (najwazniejsze oznaczenia) | | | No modifications | | A | Item is scheduled for Addition | | D | Item is scheduled for Deletion | | M | Item has been modified | | C | Item is in conflict with updates received from the repository | | ? | Item is not under version control | | Ósma kolumna || | * | A newer revision of the item exists on the server | [[http://svnbook.red-bean.com/en/1.0/re11.html|svn help]] — Help! svn help svn help commit ===== Rewizje ===== Numer rewizji dotyczy całego drzewa projektu. {{http://svnbook.red-bean.com/en/1.1/images/ch02dia7.png?300}} * kolejne numery (np. r102) * słowa kluczowe : ''HEAD''- ostatnia w repozytorium, ''BASE'' - aktualna kopia robocza, ''COMMITTED'' - ostatnia zawierająca zmiany, ''PREV'' - poprzednia (''COMMITTED'' - 1) * data : np.: {2002-02-17} , {"2002-02-17 15:30"} Przykłady: svn list --revision 1 http://svn.repo/projekt/ svn diff --revision BASE:HEAD svn log --revision {"2002-02-17 15:30"}:123 svn export --revision {"2002-02-17 15:30"} ===== Rozgałęzienia (branches) ===== Wyizolowane ''kopie'' (gałęzie) projektu, niezależne od głównej lini ''trunc''. Tworzenie nowych gałęzi: svn copy trunk branches/moje-rozgalezienie-projektu svn commit -m "Utworzenie mojej galezi projektu." svn copy http://svn.example.com/projekt/trunk http://svn.example.com/projekt/branches/moja-kopia {{http://svnbook.red-bean.com/en/1.1/images/ch04dia3.png?200}}{{http://svnbook.red-bean.com/en/1.1/images/ch04dia4.png?400}} Przydatne polecenia: [[http://svnbook.red-bean.com/en/1.1/re09.html|diff]] - różnice między wersjami svn diff [-r N[:M]] [TARGET[@REV]...] svn diff -r '{2011-01-01:12.03}' plik.txt --cmd-diff=vimdiff [[http://svnbook.red-bean.com/en/1.1/re16.html|merge]] - scalanie różnic (patchowanie): left side + right side -> target svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH] svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH] svn merge -r N:M SOURCE[@REV] [WCPATH] Przykład svn merge -r 250:HEAD http://svn.repozutorium/projekt/branches/moja-kopia W razie kłopotów: [[http://svnbook.red-bean.com/en/1.1/re25.html|revert]] — cofa wszystkie lokalne zmiany svn revert [ --recursive ] plik **Tags** - wersje ''zamrożone'' (kopie repozytorium) svn copy http://svn.repozytorium/projekt/trunk http://svn.repozytorium/projekt/tags/release-1.0 \ -m "Tagging the 1.0 release of the project." ===== Konflikty ===== svn update U INSTALL G README C bar.c Updated to revision 46. * filename.mine, filename.rOLDREV, filename.rNEWREV * ''commit'' - NIE ZADZIAŁA * rozwiązywanie konfliktu (ręczna edycja, zastąpienie starej wersji nową, cofnięcie zmian (''revert'')) [[http://svnbook.red-bean.com/en/1.1/re24.html|resolved]] - konflikt rozwiązany (pliki tymczasowe są usuwane) svn resolved bar.c ===== Schemat działania ===== - aktualizacja (''update'') - nanoszenie zmian, usuwanie, dodawanie plików, itd. (''add'', ''rm'', ''mv'', ... ) - sprawdzanie zmian (''diff'', ''status'') - cofanie zmian (''revert'') - rozwiązywanie konfliktów (''update'', ''resolved'') - zatwierdzanie zmian (''commit'') ===== Klienci SVN ===== * [[https://tortoisesvn.net/|TortoiseSVN]] (Windows) * [[https://ankhsvn.open.collab.net/|AnkhSVN]] - Subversion Support for Visual Studio * [[http://www.smartsvn.com|SmartSVN]] - Windows/Linux/MacOS, portable, free evaluation mode * [[wp>Comparison_of_Subversion_clients]]