Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SVN/CVS z ktorej storny to ugryzc ?
thornag
post
Post #1





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Witam

Efektem mojego googlowania byla przewaznei Dokumentacja albo jakaies niejasne artykuly ewentualnie porownanie SVN do CVS. Z tego co czytalem doszedlem do pewnych wnioskow. Mianowicie:

1.Stawia sie taki serwer (podobno zazwyczaj sa w nowych distro linuxa). Ustawia uzytkownikow nadaje im prawa itp.
2. Taki uzytkownik moze uploadowac/downloadowac pliki w zaleznosci od uprawnien.
3. Istnieja galezie, ale co to sa te galezie ?
4. Mam sobie klienta i przez niego to wszystko wgrywam sciagam.
5. Sa dostepne jakies autoupgready stron.

Niestety dalej tajemnica zostaja dla mnie zalozenia takiego oprogramowania.

Calosc tego weszystkiego jest troche ciezka do ogarniecia. Jak wyglada praca w zespole z takim oprogramowaniem. Jak wlasciwie kontroluje sie wersje. Czy to wyglada tak ze mamy wielkie repozytorium i kazdy wgrywa ten sam kod ale do swojej galezi, na koncu jak wszystko dziala to to sie jakos miksuje ? Czy to sie dzieje automatycznie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Najogolniej prosil bym o jakis taki prosty wyklad na temat idei i uzytkowania systemu kontroli wersji.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Stawiasz serwer SVN/CVS

wrzucasz do niego aplikacje ktora piszecie (tylko zrodla) i dzieki temu
- wielu userow moze naraz edytowac rozne fragmenty kodu i uploadowac (commit) go -- pomysl jak bys to robil z uzyciem np. wspolnego ftpa -- masakra, ktos jakis plik usunie, pomyli sie -- przepadlo; mozna robic backupy ale narobisz sie a efekt marny
- wprowadziles zmiany w wielu plikach, uploadujesz, po czasie widzisz ze to bylo zle -- jednym poleceniem powracasz do sytuacji sprzed zmian (zrob to recznie -- dostaniesz nobla za wytrwalosc i glupote (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) )
- kilku userow edytuje ten sam plik -- jak bys wyslal swoja wersje to moglbys nadpisac wersje drugiego usera,ktory uaktualnil ja przed toba, a taki SVN albo zlaczy wasze wersje (gdy sie da) lub zglosi blad
Go to the top of the page
+Quote Post
thornag
post
Post #3





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Powiedzmy ze mamy wymieszany front z back endem. Chcesz powiedziec ze jesli ja wezme plik index.php i grafik tez. Razem go pozmieniamy i razem wgramy na serwer, to SVN sam wymiksuje to odpowiednio w jeden lub zglosi blad ?
Go to the top of the page
+Quote Post
mariuszn3
post
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

Ostrzeżenie: (0%)
-----


thornag sam sobie chyba za bardzo to nagmatwałeś.. Tak naprawdę kontrola wersji nie jest tak trudna do ogarnięcia.. SVN jest świeższym systemem niż CVS i został napisany między innymi jako odpowiedź na niedoskonałości systemu CVS. Tak bez wnikania w szczegóły opiszę Ci kroki pozwalające na rozpoczęcie pracy z SVN:
  1. Tworzysz na serwerze repozytorium (jest to tak jakby baza danych kontroli wersji, w tym miejscu znajduje się cała historia edycji projektów zawartych w tym repozytorium.. też do tej bazy wysyłasz zapytania o najnowszą wersję, do niej wysyłasz swoje zmiany itd. Repozytorium tworzysz za pomocą jednej prostej komendy 'svnadmin create ścieżka_repozytorium' i to wszystko nic więcej nie potrzeba.. masz utworzone repozytorium.
    Sama struktura repozytorium na której bazujesz to zwykłe drzewo katalogów i plików nic więcej. Po utworzeniu repozytorium masz po prostu jeden pusty katalog.
  2. Do repozytorium dodajesz projekt, który chcesz objąć kontrolą wersji. Możesz to dodać zwyczajnie poprzez wimportowanie jakiegoś katalogu z dysku poprzez svn import.. jednak dobrą praktyką jest utworzenie struktury właściwej dla kontroli wersji czyli katalog, który jest nazwą projektu a w nim katalog 'trunk' w którym będzie się znajdować główna (sztandarowa) wersja projektu, i do tego katalogu importujesz swój projekt z dysku.
    Dzięki takiemu podejściu, będziesz mógł później jeśli zajdzie taka potrzeba utworzyć oddzielną gałąź tego samego projektu i wszystko mieć nadal w katalogu tego samego projektu.
  3. Mając już dany projekt w repozytorium użytkownicy mogą teraz utworzyć swoje kopie robocze tego projektu. Czyli poprostu poprzez komendę 'svn checkout' wyciągają ostatnią wersję projektu z repozytorium do katalogu, w którym będą pracować. Od tego momentu każdy z nich ma swoją osobną kopię roboczą.
  4. Praca z kontrolą wersji:
    Użytkownik A po wprowadzeniu zmian w swojej kopii roboczej, wysyła zmiany do repozytorium (poprzez 'svn commit').
    Użytkownik B aby zaktualizować swoją kopię roboczą o zmiany wprowadzone przez użytkownika B, musi po prostu aktualizować swoją kopię roboczą ('svn update') wobec repozytorium (które już zaweria nowszą wersję projektu niż ta na której użytkownik B bazował).
    Jeśli zmiany użytkownika A nie występują w tych samych miejscach, co zmiany użytkownika B.. wtedy uaktualnienie odbywa się transparentnie bez potrzeby jakiejkolwiek dodatkowej ingerencji.
    Jeśli jest inaczej (SVN ma problem z nałożeniem na siebie zmian obu użytkowników) plik otrzymuje status konfliktu.
    Rozwiązać konflikt musisz już Ty sam manualnie porównując pliki ze zmianami wprowadzonymi przez siebie, te ze zmianami użytkownika A i te z poprzedniej wersji.
    Po manulnej naprawie pliku odpalasz komendę 'svn resolved' na pliku i status konfliktu jest zdjęty.
    Ogólnie przy dobrze rozłożonym programie pracy bardzo rzadko się zdarzają konflikty, bo też rzadko kiedy dwóch użytkowników pracuje nad tym samym fragmentem kodu.
To takie minimum, które jest potrzebne do pracy z SVN.
Świetna jest instrukcja svnbook Masz tam wszystkie szczegóły jak i konkretne problemy bardzo przystępnie opisane i najlepiej z niej w razie potrzeby korzystać.

Ten post edytował mariuszn3 25.08.2006, 15:27:05
Go to the top of the page
+Quote Post
thornag
post
Post #5





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Aha



To po tym przydlugawym wstepie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Chcialbym serdecznie podziekowac za tak wyczerpujace informacje, nareszcie mam jakies pojecie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jeszcze raz dzieki, pozdrawiam.
Go to the top of the page
+Quote Post
mtod
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Cytat
Razem go pozmieniamy i razem wgramy na serwer, to SVN sam wymiksuje to odpowiednio w jeden lub zglosi blad ?


tak. scali lub zglosi konflikt, ktory nalezy rozwiazac "recznie".
pod windows polecam tortoise svn.
Go to the top of the page
+Quote Post
thornag
post
Post #7





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Jeszcze jedno pytanie bo nie mialem poki co zajrzec do tego booka, rozumiem ze svn chodzi jako jakis proces na serverze gdzies tam, a ja do tego mam klienta ? Co dziala mniej wiecej jak relacja serwer ftp client ftp ?
Go to the top of the page
+Quote Post
mariuszn3
post
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

Ostrzeżenie: (0%)
-----


Jest parę sposobów na łączenie się z SVN z zewnątrz. Możesz poprzez webdav (do tego potrzebny jest apache 2.0 na serwerze na którym masz svn), możesz też poprzez serwer svn (svnserve), który jest dostarczany z programem. Odpalasz go i siedzi on jako daemon w systemie, komunikujesz się z nim poprzez wybrany port.
Ja korzystałem tylko z tego ostatniego rozwiązania więc wiele więcej nie napiszę.. w manualu masz dużo na ten temat.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 01:36