athabus
25.11.2009, 20:25:22
Witajcie.
Mam taki problem, że chciałbym zarządzać różnymi wersjami tego samego skryptu.
Dla uproszczenia powiedzmy, że mam skrypt sklepu pisany pod konkretne wymagania klienta. Chciałbym mieć "gotową" bazę i dopisywać funkcjonalności według potrzeb. Z drugiej strony wiadomo, że czasami pojawi się jakieś udoskonalenie, które chciałbym dodać do bazowej wersji skryptu.
I tu pojawia się problem jak czymś taki zarządzać? Jak się nie pogubić?
Myślę nad wykorzystaniem svn i rozwijaniem każdego "klienta" w osobnej gałęzi, ale może są jakieś lepsze pomysły na to? Czy w svn'nie nie pojawi się w końcu tyle rozbieżności, że każde łączenie będzie oznaczało godzinę ślęczenia nad rozwiązywaniem konfliktów?
Będę wdzięczny za dzielenie się swoimi doświadczeniami.
askone
25.11.2009, 20:33:05
Z własnego doświadczenia mogę powiedzieć, że prędzej czy później coś Ci się rozjedzie... Przy mniejszych projektach daje się wdrażać udoskonalenia w core systemu, ale później w miarę rozwoju pojawia się tyle zależności, że bezproblemowe ich dołączenie w różnych wersjach jest katorżniczą pracą...
Pozdro
mike
25.11.2009, 21:01:49
Zdecydowanie musisz użyć systemu kontroli wersji. W związku z tym, że nastawiasz się na sporo gałęzi i zarządzanie nimi unikaj SVN'a.
SVN ssie. Wybierz GIT'a.
nospor
25.11.2009, 21:08:21
Cytat
SVN ssie.
A jakaś bardziej konkretna argumentacja? Ja tam używam do tego celu SVN i jakoś mnie nie ssie... no chyba że z głodu
piotrooo89
25.11.2009, 21:16:15
ja też SVN'a używam i pięknie wszystko mi działa... zrobię jakiś mały postęp w pisaniu aplikacji cyk commit i już mam kolejna wersje później mogę cofnąć zobaczyć co się zmieniło etc. zdecydowanie system kontroli wersji nie ssie
scanner
25.11.2009, 21:17:48
ssie, to CVS.
SVN mi się osobiście bardzo podoba - a mamy tych repozytoriów nieco - w bardzo rożny sposób zagnieżdżonych.
Mike, może rozwiniesz swoją myśl?
darko
25.11.2009, 21:24:30
Systemy kontroli wersji są bardzo dobrym rozwiązaniem, przy większych projektach najlepiej: framework, modularna (modułowa) budowa aplikacji i system kontroli wersji i chyba to byłoby najbardziej optymalne rozwiązanie (sensowne dla średnich i dużych projektów). Wtedy zarządzałbyś wersjami i wprowadzał modyfikacje do wybranych przez Ciebie modułów.
athabus
25.11.2009, 21:33:38
Cytat(darko @ 25.11.2009, 21:24:30 )

Systemy kontroli wersji są bardzo dobrym rozwiązaniem, przy większych projektach najlepiej: framework, modularna (modułowa) budowa aplikacji i system kontroli wersji i chyba to byłoby najbardziej optymalne rozwiązanie (sensowne dla średnich i dużych projektów). Wtedy zarządzałbyś wersjami i wprowadzał modyfikacje do wybranych przez Ciebie modułów.
W zasadzie tak to u mnie teraz wygląda. Tj. framework, MVC i SVN. Z tym, że do tej pory rozwijałem raczej projekt liniowo a teraz będę musiał rozwijać kilka wersji tego samego projektu równocześnie. Myślę nad tym jak to zrobić aby za dużo się nie narobić - boję się rozwijać przez dłuższy czas kilku gałęzi równocześnie bo po dłuższym czasie mogą pojawić się kłopoty z integracją "jądra". Niestety nic innego od gałęzi nie przychodzi mi do głowy.
darko
25.11.2009, 21:45:02
Nie mam dużego stażu w php, ale sądzę, że przy dobrze zaprojektowanych modułach aplikacji i samej aplikacji (budowa modularna, duża elastyczność, dalece idąca "konfigurowalność" etc. etc.) wspólna logika powinna być jak najbardziej odseparowana od reszty kodu (modułów). Natomiast modyfikacje/ulepszenia/udziwnienia/dodatki (o których rozmawiamy) są wprowadzane w konkretnych i w miarę samodzielnych modułach, tylko tam, gdzie rzeczywiście zachodzi taka potrzeba. Zmiany te nie mogą mieć wpływu na tzw. logikę biznesową. Wiem, że lecę ogólnikami, ale jest to jak najbardziej wykonalne, a nawet wskazane (tym bardziej we wzorcu MVC).
mike
25.11.2009, 22:47:36
Też mi się wydawało kiedyś, że SVN daje wszystko to czego potrzeba.
Okazuje się, że nie:
http://whygitisbetterthanx.comPrzede wszystkim praca z wieloma gałęziami, repozytoriami, mergowaniem w GITcie jest dużo przyjemniejsza i prostsza niż w SVN.
athabus
26.11.2009, 20:15:57
Mike nawet zaciekawiłeś mnie tym git'em - jakoś wcześniej nie miałem okazji się przyjrzeć.
Powiem Ci, że masz dużo racji jeśli chodzi o pracę z gałęziami - jest o niebo lepsze niż w SVN. Praca w CLI na SVN przy gałęziach to jest masakra w porównaniu z GIT ;-) Ale w sumie jednak zostanę przy SVN - jakoś nie przemawia do mnie lokalne repozytorium - coś scentralizowanego bardziej mi odpowiada.
Druga rzecz, która rzuciła mi się w oczy to zbyt obszerne komentarze GIT'a w konsoli - za dużo czytania jak dla mnie - W SVN konsola wypluwa to co potrzeba i tylko to co potrzeba.
Muszę jednak przyznać, że kilka rozwiązań z GIT'a chętnie bym zobaczył w SVN'ie
---
*Swoją opinię piszę po ~1,5 godzin zabawy z GIT więc mogę pisać bzdury ;-)
nospor
26.11.2009, 20:18:05
Ja tam nie wiem co macie do SVN i wielu gałęzi i mergowania. Ja mam dużo tego, wszystko działa i jest GIT
piotrooo89
26.11.2009, 21:21:25
ja w svn obsługuje ok 150 plików, pisane strukturalnie i obiektowo i jeszcze nie miałem żadnego problemu po poruszaniu się po wcześniejszych wersjach
athabus
26.11.2009, 21:44:48
poruszanie się po wcześniejszych wersjach nie jest problemem, ale nie to jest istotą problemu.
Weźmy taką sytuację. Masz sklep i jego dajesz w gałęzi "trunk" - jest to czysty sklep, który rozwijasz czyli twój produkt. Do tego tworzysz wersje "na życzenie" dla klientów, które bazują na twoim sklepie, ale są jego udziwnionymi wersjami.
Rozwijasz dwie takie wersje w dwóch różnych gałęziach - dajmy s1 i s2. Czasami trafi ci się coś co chcesz z s1 przenieść do trunk, ale części rzeczy nie będziesz chciał przenosić. Poprawki z głównej gałęzi będziesz chciał również przenosić do swoich gałęzi s1 i s2 - nie będziesz przecież usuwał tego samego błędu w każdej gałęzi - git w pracy z gałęziami wydaje się być znacznie bardziej przyjazny niż svn.
Po pewnym czasie z takich projektów wychodzi mały koszmarek jeśli chodzi o zarządzanie nad którym trudno zapanować i tak się zastanawiam czy da się to na dłuższą metę ciągnąć.
nospor
26.11.2009, 21:49:09
Cytat
Rozwijasz dwie takie wersje w dwóch różnych gałęziach - dajmy s1 i s2. Czasami trafi ci się coś co chcesz z s1 przenieść do trunk, ale części rzeczy nie będziesz chciał przenosić. Poprawki z głównej gałęzi będziesz chciał również przenosić do swoich gałęzi s1 i s2 - nie będziesz przecież usuwał tego samego błędu w każdej gałęzi
Ja dokładnie mam tak jak opisałeś. Mergowanie SVN sprawdza się tu bardzo dobrze.
Cytat
git w pracy z gałęziami wydaje się być znacznie bardziej przyjazny niż svn
No i tu mnie masz, nie używałem GITa i nie mogę porównać. Nie mniej jednak jak pisałem wcześniej - SVN mi na tym polu sprawdza się dobrze.
scanner
26.11.2009, 22:11:45
Cytat(piotrooo89 @ 26.11.2009, 21:21:25 )

ja w svn obsługuje ok 150 plików

Nasze repozytoria SVN zajmują mi na dysku gdzieś z 8 GB - kilkanaście repo, w jednym kilkadziesiąt gałęzi, core systemu wiązany zarówno do branchy w repo głównym jak i do repo osobnych, biblioteki trzecie typu Zend, fpdf, i wiele innych, niedawno doszła jeszcze integracja systemów z frontendami opartymi na symfony - i tak od pięciu lat

Do tego Eclipse + Subclipse + Mylyn z łączem do trac'a i nie wiem, co może być lepszego.
athabus
26.11.2009, 22:48:12
W takim razie chyba spróbuję takiego podejścia... najwyżej się nie uda ;-)
Tym razem jednak będę bawił się konsolą, bo przy poważniejszych operacja (właśnie na gałęziach zresztą) zdarzyło mi się, że repozytorium zostało uszkodzone przez zawieszenie się subclips'a... Nie dało się commitować mimo czyszczenia etc. Pewnie jakiś magik by to naprawił, ale mi specjalnie już wtedy na tym repo nie zależało i dałem sobie spokój.
scanner
26.11.2009, 23:07:49
piotrooo89
27.11.2009, 08:56:53
a ja na linuxa polecam Nautilusa który zmienił się na RabbitVCS
http://code.google.com/p/nautilussvn/, używa go nasz handlowiec i działa bez zarzutu, ja osobiście wszystko w konsoli klepie więc nie mam problemu z jakimś GUI
athabus
27.11.2009, 09:56:40
Tortoise odpada bo pracuję głównie pod linuxem.
Obecnie korzystam z rapidsvn i (od kilku dni) z nautilusa - używam ich głownie do przeglądania zmian etc.
Inne operacje wykonuję głównie z konsoli.
piotrooo89
27.11.2009, 10:09:57
Cytat(athabus @ 27.11.2009, 09:56:40 )

Obecnie korzystam z rapidsvn i (od kilku dni) z nautilusa - używam ich głownie do przeglądania zmian etc.
jak dla mnie rapid ssie. nautilus jest wpożo.
Cytat(athabus @ 27.11.2009, 09:56:40 )

Inne operacje wykonuję głównie z konsoli.
no i to jest najlepsze rozwiązanie, no tylko trochę trzeba się na to opatrzeń żeby wiedzieć jak co działa, ja osobiście pierwsze spotkanie z SVN w konsoli = fail. teraz myślę że już troszkę ogarniam.
nospor
27.11.2009, 10:11:55
Cytat
no i to jest najlepsze rozwiązanie
why?
Ja wszelkie operacje robię z poziomu eclipsa i sobie nie wyobrażam bym musiał po konsoli latać by na svn działać.
piotrooo89
27.11.2009, 10:17:31
ja cały czas w konsoli się poruszam (vim) no i nie używam żadnych innych programów, pisząc że jest to najlepsze rozwiązanie miałem na myśli swoje przyzwyczajenia/doświadczenia.
athabus
27.11.2009, 11:15:31
@nospor - też do niedawna korzystałem z eclipsa - miałem zresztą bardzo podobny zestaw pluginów co Ty ;-)
Mam jednak złe doświadczenia z obsługą svn pod eclipse - zresztą z tego co przeglądam blogi to wiele osób doświadcza takich problemów. Stąd przypominam sobie teraz pracę na konsoli ;-)
Wstyd się przyznać ale zapomniałem już prawie wszystko i potrafiłem tylko checkout i commit zrobić z konsoli ;-) Ale trochę się pobawiłem wolnej chwili i dochodzę do wniosku, że jednak z konsoli praca jest "bardziej świadoma" niż za pomocą gui. Co nie zmienia faktu, że gdybym był zadowolony z jakiegoś gui to pewnie bym z niego korzystał, bo svn w porównaniu z gitem wymaga spooooro pisania np. przy mergowaniu i branchowaniu.
nospor
27.11.2009, 11:24:17
Cytat
miałem zresztą bardzo podobny zestaw pluginów co Ty
A skad wiesz jakie ja mam pluginy? Nie kojarze bym się tym chwalił.
Cytat
zresztą z tego co przeglądam blogi to wiele osób doświadcza takich problemów
Używam eclipse od kilku lat, używają go tez moi kumple z pracy i nikt nie miał problemów z SVN pod eclipse.
Raz "po pijaku" ci się zdarzyło i już skreślasz
athabus
27.11.2009, 11:32:30
Cytat(nospor @ 27.11.2009, 11:24:17 )

A skad wiesz jakie ja mam pluginy? Nie kojarze bym się tym chwalił.
Subclipse i mylyn - pisałeś wyżej w tym temacie ;-)
//edit: a jednak to nie Ty tylko scanner pisał :-)
Cytat(nospor @ 27.11.2009, 11:24:17 )

Raz "po pijaku" ci się zdarzyło i już skreślasz

I tu mnie masz ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.