Tag: versioning

Debian (lub Ubuntu) i SVN (Submin, WebSVN) – Submin i jego wykorzystanie

W tej części omówimy fajne narzędzie jakim jest Submin. Submin jest webową aplikacją, która pozwala na wygodne i szybkie zarządzanie SVNem. Interfejs tego programu jest bardzo prosty:

zr

Jak widać na załączonym screenie, mamy po lewej stronie menu a po prawej content. Minimalistycznie i funkcjonalnie.

Zarządzanie użytkownikami

Pierwszą rzeczą jaką można zrobić z pomocą Submina, jest tworzenie i zarządzanie użytkownikami SVNa. Klikając na "Users" rozwija się nam lista użytkowników. Po najechaniu na konkretnego usera, wyświetla się krzyżyk, za pomocą którego możemy użytkownika usunąć. Jeśli zaś klikniemy na jego nicka, dostaniemy takie oto okno z danymi:

zrzut_ekranu-2

W opcjach tych możemy przypisać użytkownikowi jego nazwę, adres e-mail oraz zmienić hasło dostępowe do systemu. Możemy także przypisać go do wybranych grup. Przypisywanie do grup przydaje się gdy prowadzimy wiele projektów, w których uczestniczą różni użytkownicy. W tym panelu edytujemy już istniejące konta, aby zaś dodać nowe, musimy kliknąć na pierwszą (licząc od lewej strony) ikonkę, znajdującą się w lewym dolnym rogu panelu. Po jej naciśnięciu pokażą się nam następujące opcje:

new

Trochę dziwnie jest zrealizowana opcja ustawiania hasła. Najpierw musimy założyć użytkownikowi konto, a dopiero potem, po utworzeniu konta, pojawi się nam okno edycji ustawień użytkownika, gdzie musimy ustawić hasło. Przy okazji, w razie potrzeby przypisujemy go także do grup. Tyle jeśli chodzi o tworzenie i edycję użytkowników. Warto pamiętać o tym żeby przez przypadek nie przypisać użytkownika do grupy submin-admins, ponieważ taki user uzyska wtedy pełny dostęp do panelu Submin.

Grupy

Zasadniczo zarządzanie grupami opisałem już powyżej. Nie ma tu wielu opcji. Dodawanie grup przebiega w sposób analogiczny do dodawania userów. Najpierw klikamy w środkową ikonkę, znajdującą się w lewym dolnym rogu Submina. Następnie podajemy nazwę grupy i klikamy na "Create":

zrzut_ekranu-4

Po utworzeniu grupy zostaniemy przeniesieni do obszaru gdzie możemy do grupy przypisać/usunąć danych użytkowników:

zrzut_ekranu-5

Interfejs dodawania/usuwania użytkowników jest AJAXowy więc strona nie jest przeładowywana. Aby edytować ustawienia danej istniejącej już grupy, wystarczy kliknąć na "Groups" i je rozwinąć, a następnie wybrać interesującą nas grupę.

Zarządzanie repozytoriami

Zarządzanie repozytoriami nie różni się niczym od zarządzania użytkownikami i grupami. Wybieramy ostatnią z prawej ikonkę, aby dodać repozytorium:

zrzut_ekranu-6

Podajemy jego nazwę i naciskamy "Create". Po utworzeniu repozytorium, zostaniemy przeniesieni do okna gdzie mamy informacje na jego temat:

zrzut_ekranu-7

Pierwsze co widzimy, to URL naszego repozytorium. Ten URL podajemy użytkownikowi aby mógł podłączyć się do repozytorium i utworzyć swoją kopię roboczą. Oczywiście nie kopiujemy  tego małego fragmentu, tylko dajemy prawy przycisk myszki, a następnie "Kopiuj adres odnośnika".

Bardzo ważną rzeczą, jaką musimy zrobić, aby nasi użytkownicy mogli korzystać z naszego systemu, jest dodanie uprawnień. Robimy to klikając na "Permissions":

perms

Będąc w menu uprawnień, wybieramy z listy grupę lub użytkownika, któremu chcemy przydzielić uprawnienia. Po przypisaniu do projektu, pamiętajmy o nadaniu uprawnień. RW jeśli użytkownik/grupa ma mieć prawo wglądu i modyfikacji repozytorium, lub tylko R jeśli ma mieć prawo do odczytu.

Cały Submin jest bardzo prostym narzędziem, jednak dzięki swojej prostocie jest wygodny i praktyczny. A że przy okazji spełnia wszystkie wymagania, jakie stoją przed narzędziem do zarządzania uprawnieniami dostępu do SVNa, to czegóż chcieć więcej :)

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.

Copyright © 2024 Closer to Code

Theme by Anders NorenUp ↑