Running with Ruby

Tag: backup (page 3 of 4)

Could not open the requested SVN filesystem i Submin

Okazuje się że instalacja Submina na czystym systemie jest troszkę łatwiejsza niż na maszynie która już stoi z SVNem od dawna. Zauroczony możliwościami Submina, postanowiłem postawić go także na serwerze deweloperskim, który już od dłuższego czasu stanowi moją bazę SVNową. Po instalacji i konfiguracji, okazało się że o ile odwiedzanie repo przez WebSVN czy też Submina działa, o tyle dostęp przez HTTP już nie.

Wchodząc, dostajemy taką oto wiadomość:


Could not open the requested SVN filesystem

Rozwiązanie trywialne. Otwieramy plik /etc/apache2/conf.d/@submin.conf i zmieniamy linijkę:


SVNParentPath /var/lib/submin/svn

Na ścieżkę w której znajdują się repozytoria. U mnie jest to:


SVNParentPath /var/svn

Po wszystkim resetujemy Apache i cieszymy się działającym SVNem.

Debian (lub Ubuntu) i SVN (Submin, WebSVN) – mini słowniczek i podstawy użytkowania

Zanim zajmiemy się stricte tym jak używać SVNa i narzędzi do niego, zapoznajmy się z kilkoma pojęciami które są kluczowe w pracy z systemami kontroli wersji:

  • Repozytorium (repository) – foldery i pliki znajdujące się na serwerze SVN. Repozytorium zawiera w sobie oprócz plików i katalogów, także historię zmian w tych danych. Dzięki temu możemy prześledzić każdą zmianę dokonaną w obrębie repozytorium.
  • Head – najnowsza wersja plików dostępnych w repozytorium (wersja aktualna).
  • Rewizja (revision) – dana “wersja” plików. Przy zatwierdzaniu zmian na serwerze, numer rewizj jest podnoszony o 1. Dzięki temu możemy przywrócić system do stanu np z rewizji numer 46. System przechowywania danych, ze względu na oszczędność miejsca, jest systemem przyrostowym. Oznacza to że zapamiętywane są tylko zmiany, nie zaś stan całego kodu.
  • Kopia robocza – nasza lokalna wersja kodów źródłowych. Możemy na niej dokonywać zmian, eksperymentować, bez ryzyka zniszczenia czy też uszkodzenia kodu. Zmiany które uznamy za poprawne wprowadzamy (commitujemy) do repozytorium.
  • Checkout – pobranie z repozytorium kodów w celu utworzenia swojej kopii roboczej.
  • Gałąź główna (trunk) – główna linia projektu. Bardzo często ta gałąź ma zawierać w sobie kod źródłowy który się kompiluje i przechodzi wszystkie napisane do niego testy.
  • Gałąź rozwojowa (branch) – gałąź “poboczna”. W niej mogą być przechowywane nieskończone części kodu czy też kod zakończony częściowo. Kiedy w gałęzi tej kod zostanie już przetestowany i działa, można scalić ją z gałęzią główną.
  • Switch – przeskok między gałęziami w kopii roboczej.
  • Update – aktualizacja swojej kopii roboczej, plikami z repozytorium.
  • Commit – przesłanie naszych lokalnych zmian do repozytorium.
  • Merge (scalanie) – złączenie różnych gałęzi projektu w jedną.
  • Kolizja – sytuacja w której dany plik był modyfikowany przez różne osoby i w czasie scalania SVN nie mógł zdecydować która z wersji pliku jest poprawna. Musimy wtedy sami zdecydować którą wersję pliku uznać za właściwą.
  • Lock (blokada) – aby uniknąć sytuacji w której kilku programistów pracuje nad tym samym fragmentem kodu, można dane pliki zablokować. Po zablokowaniu inne osoby które chciałyby pracować nad danym plikiem, dostaną informację że nad tym plikiem ktoś już pracuje. Nakładanie locków pozwala uniknąć konfliktów przy mergowaniu.

Mając już podstawową wiedzę teoretyczną, zapoznajmy się z podstawowymi poleceniami jakie możemy wydawać z konsoli. Nie będę ich zbyt szczegółowo omawiał, ponieważ omówię narzędzia graficzne które bardzo ułatwiają pracę z systemami wersjonowania.

Tworzenie repozytorium

Tworzenie repozytorium z wiersza poleceń, jest relatywnie proste. Mając narzędzia Submin i WebSVN, musimy pamiętać tylko o tym, żeby tworzyć repozytoria w miejscach w których oba narzędzia je znajdą. Samo tworzenie repozytorium wygląda tak:

svnadmin create [nazwa repozytorium] 

Tworzenie kopii roboczej

Utworzenie kopii roboczej, jest równoznaczne z pobraniem odpowiednich plików z serwera. Wykonamy to wpisując w wierszu poleceń następującą komendę:

svn checkout svn://aders_naszego_serwera/[nazwa repozytorium]/ [nazwa projektu] 

Warto zauważyć że po utworzeniu kopii roboczej, w każdym katalogu będziemy mieli ukryty katalog .svn. Często jest w tych katalogach dużo plików, dlatego metoda “przeciągnij i upuść” w wypadku np. uploadowania projektu przez FTP może trwać bardzo długo.

Aktualizacja kopii roboczej

Aby zaktualizować naszą kopię roboczą, będąc w jej katalogu głównym wykonujemy następującą komendę:

svn update

Commit zmian na serwer

Przesłanie swoich zmian do głównego repozytorium także jest bardzo proste:

# Komentarz w którym opisujemy zmiany
svn commit -m "Komentarz"

I to by było na tyle jeśli chodzi o “konsolowe” podstawy. W następnej części zapoznamy się z Subminem.

Olderposts Newerposts

Copyright © 2021 Running with Ruby

Theme by Anders NorenUp ↑