Subversion

import - dodawanie plików i katalogów do repozytorium

svn import plik http://adres.repozytorium/svn/projekt/trunk/plik -m "Import pliku"

checkout - tworzenie kopii roboczej o nazwie projekt

svn checkout http://adres.repozytorium/projekt/ project

add - dodawanie plików i katalogów do kopii roboczej (w celu zatwierdzenia ich w repozytorium)

svn add program.c
svn add katalog/

commit — wysłanie zmian do repozytorium

svn commit -m "Opis zmian"
svn commit plik.txt -m "Bardzo ważna zmiana w pliku plik.txt."

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)

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

svn help — Help!

svn help
svn help commit

Numer rewizji dotyczy całego drzewa projektu.

  • 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"}

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 

Przydatne polecenia:

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

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: 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."
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))

resolved - konflikt rozwiązany (pliki tymczasowe są usuwane)

svn resolved bar.c
  1. aktualizacja (update)
  2. nanoszenie zmian, usuwanie, dodawanie plików, itd. (add, rm, mv, … )
  3. sprawdzanie zmian (diff, status)
  4. cofanie zmian (revert)
  5. rozwiązywanie konfliktów (update, resolved)
  6. zatwierdzanie zmian (commit)