Kategorie:
36

GNOME przejdzie na git

GNOME to kolejny otwarty projekt, który zdecydował się na migrację na system zarządzania wersjami git, stworzony przez Linusa Torvaldsa. W kwietniu zastąpi on Subversion.

Git to rozproszony system zarządzania wersjami podobny do BitKeeper i Monotone, w przeciwieństwie do nich rozpowszechniany jednak jako wolne oprogramowanie. Git jest szybki, skalowalny i przystosowany do dużych projektów nad którymi pracują tysiące osób.

Nad migracją GNOME na git pracowało od stycznia tego roku czterech deweloperów: Owen Taylor, Kristian Høgsberg, Behdad Esfahbod i Federico Quintero. Aktualny stan prac opisany jest na stronie GitMigration. Infrastruktura jest już przetestowana i gotowa, a oficjalna migracja będzie miała miejsce po wydaniu wersji 2.26.1, co jest planowane na 16 kwietnia.

Wcześniej na sam ruch zdecydowały się takie projekty jak Perl, Ruby on Rails, Samba, X.org Server, Qt, One Laptop per Child (OLPC), VLC, Wine, SWI Prolog, GStreamer i Android oraz oczywiście sam Linux.

O sprawie dowiedziałem się z blipa od użytkownika rootuser.

Więcej informacji: http://mail.gnome.org/archives/devel-ann...00005.html

«
»

Znalazłeś literówkę? Zgłoś ją używając formularza!


Jeśli uważasz, że ten nius jest nieobiektywny, przedstawia nieprawdziwe wydarzenie, jest spamem lub nie spełnia standardów serwisu, napisz raport.

Niusy na podobny temat:

Komentarze (RSS)

Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

74 komentarzy

zwiń wątek mmalek  20 marca 2009 o godz. 15:08 #
Gravatar

Mówiąc krótko – no to git! Zaczyna robić się jednolicie, co mnie niezmiernie cieszy, bo kompilowanie ze świeżutkich źródeł to jedno z moich ulubionych zajęć :P

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek MichalK  20 marca 2009 o godz. 20:46 #
Gravatar

A jakie to ma znaczenie dla użytkownika-nieprogramisty?

zwiń wątek Vogel  21 marca 2009 o godz. 0:08 #
Gravatar

Totalnie żadne.

 
 
 
zwiń wątek roberttt  20 marca 2009 o godz. 15:23 #
Gravatar

GNOME ma jądro? (to facet?)

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek michuk  20 marca 2009 o godz. 19:15 #
Gravatar

Nie wiem skąd mi się to jądro wzięło :)

zwiń wątek nat  20 marca 2009 o godz. 21:29 #
Gravatar

sick… :)

 
 
zwiń wątek 3ED  20 marca 2009 o godz. 23:03 #
Gravatar

W informatyce to chyba bardziej jak jądro komórki.. :)

 
zwiń wątek kwant  21 marca 2009 o godz. 0:56 #
Gravatar

skoro jedno jajko to znaczy pół faceta

 
 
zwiń wątek http://kneczaj.openi  20 marca 2009 o godz. 15:30 #
Gravatar

Przypadkiem KDE też nie jedzie na gicie??

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek Zbigniew Braniecki  20 marca 2009 o godz. 15:33 #
Gravatar

KDE jedzie na SVN (niestety…), ale np. Mozilla jedzie na Mercurialu.

Btw. polecam sie przyjzec, podobny do GIT, ma pare unikalnych zalet i fajnie sie rozwija :)

zwiń wątek Bananikus  20 marca 2009 o godz. 16:03 #
Gravatar

KDE jedzie na svn, ale planuje przejście na GIT.

Swoją drogą to w czym jest lepszy ten GIT od svn? Pytam poważnie, bo niewiele o nim wiem, a póki co z gita(gitu?) niczego nie kompilowałem. Większość używa svn. :)

zwiń wątek Bananikus  20 marca 2009 o godz. 16:04 #
Gravatar

Źle się wyraziłem. Rozważa, a nie planuje.

 
zwiń wątek trasz  20 marca 2009 o godz. 18:29 #
Gravatar

@Bananikus: Roznic jest masa, od wydajnosci po backupy, ale w wielkim skrocie: git sprawdza sie duzo lepiej niz svn w przypadku, jesli masz duzo developerow dzialajacych w sposob niezorganizowany i tanich.

 
zwiń wątek Rsh  20 marca 2009 o godz. 19:21 #
 
zwiń wątek mby7930  20 marca 2009 o godz. 20:37 #
Gravatar

Bardzo interesujące wystąpienie Linusa.

A tutaj Google TechTalks na temat Mercurial Project
http://video.google.com/videoplay?docid=-77242960

 
zwiń wątek ufoludek  20 marca 2009 o godz. 21:49 #
Gravatar

@Bananikus: decentralizacja, praca offline, lokalne branchowanie, szybkość, łatwe i skuteczne merge’owanie.

Decentralizacja — każdy ma pełnoprawną kopię repozytorium, z/do której ludzie mogą ciągnąć/wrzucać, dzięki czemu grupa ludzi może sobie coś tam rzeźbić na boku synchronizując się między sobą, bez zaśmiecania centralnego repo branchami, a nawet nie mając prawa zapisu do niego.

Praca offline — można spokojnie developować np w samolocie commitując sobie lokalnie zmiany (dzięki czemu mamy historię, z której w razie czego można się wycofać), a potem hurtem wrzucić zmiany do centralnego repo albo wysłać je jako patche komuś innemu.

Lokalne branchowanie — każda kopia repo jest pełnoprawnym repozytorium, więc można sobie lokalnie porobić kilka branchy, na których się testuje swoją radosną twórczość, albo na których prowadzimy poszczególne tematy (tak korzystam z gita w pracy[*] — mam N tematów, które wolę trzymać osobno, żeby ograniczyć liczbę zmiennych w czasie testów, więc dla każdego sobie zrobiłem brancha i między nimi skaczę).

Szybkość — generalnie błysk ciupagi nawet na dużych repozytoriach (kernel = 10MLOC).

Merge’owanie — maszynka do merge’owania jest o wiele skuteczniejsza niż ta w svn (automatycznie wykrywa zmiany nazwy pliku, mniej konfliktów itp), a samo propagowanie zmian w dowolną stronę jest trywialne (z mainstreama na moje branche — git rebase; w drugą stronę – git merge).

[*] W pracy centralnie używamy CVS, ale ja sobie po checkoucie z CVS wciągam to do gita i robię branche, na których rzeźbię swoje rzeczy, tak więc na „master” mam zawsze czysty CVS a na branchach swoje zmiany, które jeszcze nie są gotowe, żeby trafić do CVS.

Sychronizacja z centralnym repo — git co master; cvs up; git add .; git ci -m „nr_buildu_z_cvs”; git co moj_lokalny_branch; git rebase master. Po takiej operacji na branchu mam moje zmiany przeniesione na źródła z cvs i mogę pracować na aktualnym kodzie.

Przenoszenie moich zmian — git co master; git merge moj_lokalny_branch; cvs ci -m „…”

Żyć nie umierać :)

 
zwiń wątek macias  20 marca 2009 o godz. 22:45 #
Gravatar

> Merge’owanie — maszynka do merge’owania jest o wiele skuteczniejsza niż ta w svn

Czyli trzymanie sie monolitow dalej? Linus jest niereformowalny. Przeciez system mergowania to zadanie samo w sobie i powinien byc czyms w rodzaju plugina do syst.kontroli wersji.

Sporo z pozostalych rzeczy to takze kawalki do wyodrebnienia. Np. co system na serwerze obchodzi, ze user sobie utworzyl nawet i milion galezy w swojej kopii? Serwer obchodzi co on dostaje do commita, a nie jak sobie tam rzezbil to user.

No ale coz… skoro nadal postep wyznacza rekompilowanie kernela, zeby dzwiek zadzialal… to git ;-/

 
zwiń wątek Rsh  20 marca 2009 o godz. 22:48 #
Gravatar

Ktoś rozumie zrzędzenie maciasa i przetłumaczy? :P

 
zwiń wątek przemo_li  21 marca 2009 o godz. 19:16 #
Gravatar

@Rsh macias narzeka, że Linus (twórca Gita) wybrał budowę monolotyczną (żadnych pluginów)

a kawałek o rekmpilowaniu kernela to hasełka populistyczne w stylu "podwyżki dla wszystkich"

 
zwiń wątek trasz  22 marca 2009 o godz. 10:53 #
Gravatar

@przemo_li: Raczej "populistyczne" haselka w stylu "dlaczego u nas nie moze byc tak jak u innych".

 
 
zwiń wątek mby7930  20 marca 2009 o godz. 18:03 #
Gravatar

Właśnie zastanawiam się, dlaczego nie wybrali Mercuriala, który wydaje się być trochę lepiej wspierany.

zwiń wątek wojtekm  23 marca 2009 o godz. 11:20 #
Gravatar

Bo GIT jest trendy. Osobiście śledzę rozwój tego systemu i mercuriala od początku, każdy z nich ma swoje wady i zalety, różnią się głównie w koncepcji przechowywania zmian, i to mocno rzutuje na to jak radzą sobie w różnych sytuacjach. GIT musi być odśmiecany co jakiś czas, mercurial nie wymaga żadnej dodatkowej administracji. GIT przede wszystkim zarządza zawartością w przeciwieństwie do mercuiriala, który bierze pod uwagę nie tylko pliki ale również moment commitu, dzięki czemu zapamiętuje więcej informacji potrzebnych do mergowania. Dzięki temu repozytorium GIT-a jest bardziej kompaktowe (bo bo jeśli jest kilka identycznych plików to używany jest tylko jeden obiekt do przechowywania zawartości), ale jest duży problem z takimi operacjami jak śledzenie zmian nazw plików czy znacznie mniej efektywna operacja annotate do czego Linus zdążył dorobić zresztą już całą folozofię (IMHO naciąganą). Te operacje w mercurialu są wspierane natywnie, ale ten z kolei ma (póki co) duży narzut związany z zapamiętywaniem informacji po zmianie nazwy pliku (jest praktycznie zdublowana).

Inne jest też podejście do tagowania. GIT traktuje tagi jako zewnętrze referencje do wersji a mercurial wersjonuje swój plik z tagami jak każdy inny. Jest to dość kontrowersyjna decyzja Matta Mackalla (twórca mercuriala), który nie wiedzieć czemu uparł się, że właśnie tak jest dobrze i trzyma się tego kurczowo mimo iż racjonalne argumenty wydają się przemawiać za rozwiązaniem konkurencji (po części jest to też związane z kompatybilnością wsteczną, która jest jednym z priorytetów tego projektu). Skończyło się na tym, że jest dostępne rozszerzenie 'bookmarks', które dodaje funkcjonalność zewnętrznych tagów, z jednym wszakże drobnym mankamentem – nie propagują się automatycznie przy klonowaniu…

Kolejną kwestią jest przenośność, mercurial nie ma obecnie większych problemów w działaniu WindowsUnix. Jeśli się pamięta, żeby uzywać rozszerzenia win32text pod Windows i nie używa tych samych nazw plików pod Uniksem (wielkość liter), to można z powodzeniem rozwijać przenośne projekty (Mozilla, Java, NetBeans, Xen, etc.). GIT formalnie ma swój post pod cygwinem i ostatnio także msysgit, ale mało kto chce pod windows używać cygwina, a msysgit wciąż jest bardziej betą niż pełnoprawnym portem git-a pod Windows.

Na koniec dwie kwestie. Jedna to łatwość obsługi, i tu niestety mimo deklarowanych chęci developerów GIT-a, mercurial wciąż pozostaje niedoścignionym wzorem dla nich, a druga to społeczność. Otóż o ile można śmiało powiedzieć, że GIT ma znacznie więcej użytkowników/developerów to trzeba też przyznać, że często zachowują się IMHO jak świadkowie Jehowy. Nie dość, że uważają swój system za jedynie słuszny to jeszcze próbują go wcisnąć wszędzie i każdemu, co potrafi być irytujące. W każdym razie myślę, że swój sukces GIT zawdzięcza w dużej mierze właśnie tej "ewangelizacji", bo żeby zacząć go używać w pełni efektywnie to trzeba najpierw trochę wyrzeczeń.

Obydwu tych rzeczy nie da się powiedzieć o jego konkurencie (nikt się nikomu nie narzuca, a narzędzia używa się naprawdę intuicyjnie i łatwo, co potwierdza wielu użytkowników).

 
 
 
 
zwiń wątek quest  20 marca 2009 o godz. 15:54 #
Gravatar

Suchar! ;)
http://osnews.pl/gnome-226/#comment-3959022

Tak swoją drogą, to wszyscy uciekają od SVN a OpenOffice.org zmigrował właśnie na Subversion (z CVS)
http://wiki.services.openoffice.org/wiki/SVNMigra

@Zbigniew

>KDE jedzie na SVN (niestety…),

Dlaczego niestety?

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek halish  20 marca 2009 o godz. 18:10 #
Gravatar

bo openoffice.org jest akurat projektem wieloplatformowym, a git ma niejakie problemy z działaniem na środowiskach nie linuksowo-uniksowych. z tego samego powodu z na hg leci mozilla.

zwiń wątek mby7930  20 marca 2009 o godz. 20:40 #
Gravatar

"z tego samego powodu z na hg leci mozilla."

Dokładnie o to mi chodziło, gdy pisałem o "lepszym wsparciu dla Mercuriala".

 
 
zwiń wątek trasz  20 marca 2009 o godz. 18:30 #
Gravatar

@quest: Git i ogolnie systemy rozproszone sa kiepskim wyborem w sytuacji typowej firmy – a OOo to wlasnie taki projekt afaik.

zwiń wątek pijaczek  21 marca 2009 o godz. 3:45 #
Gravatar

@trasz: kpisz? Systemy rozproszone sprawdzają się świetnie w firmach – np. masz kilka grup programistycznych, które pracują na różnych częściach kodu… w przypadku systemów nierozproszonych wszystko trzeba wrzucać do głównego repozytorium, i w wypadku wysłanego bug'a wszystkim się sypie i wszystkie grupy tracą czas na szukanie błędu.

W przypadku rozproszonych każda grupa tworzy/osoba tworzy swoje kopie i jak skończą pracę nad kodem przekazują do testerów, żeby przetestowali ich kod – po testach czysty sprawdzony kod idzie do serwera głównego (którym może być nawet svn jak chcesz ;p) i nikomu nie szkodzi.

zwiń wątek ufoludek  21 marca 2009 o godz. 15:46 #
Gravatar

@pijaczek: coś mi się widzi, że w życiu nie pracowałeś przy dużym projekcie korzystającym z kontroli wersji.

W systemach scentralizowanych również można sobie tworzyć branche developerskie (w przypadku badziewnego CVS można go sobie zrobić tylko na swoim module albo wręcz na pojedynczym pliku) i na nich pracować nie afektując całej reszty świata. Przewaga systemów rozproszonych to to, że nie trzeba tymi swoimi branchami zaśmiecać centralnego repo, i to, że prawo zapisu do centralnego repozytorium może mieć mniejsza liczba osób (np tylko szefowie grup wrzucają zmiany do głównego, a cała reszta ekipy pracuje na repozytach swoich szefów).

 
zwiń wątek pijaczek  22 marca 2009 o godz. 8:27 #
Gravatar

Można zrobić branch, ale koszt zrobienia takiego jest nieporównywalnie większy niż np. w git, a do zrobienia ich trzeba mieć dostęp do serwera, a w wypadku git gałęzie są trzymane nie w branch na serwerze głównym, a na na komputerach grupy dlatego systemy rozproszone (i dodatkowo grupa może sobie zrobić kilka branchów, łatwo i bez robienia śmietnika z głównego serwera). Systemy rozproszone mają przewagę zarówno w firmach, jak i w wolnym oprogramowaniu.

 
zwiń wątek ufoludek  22 marca 2009 o godz. 9:22 #
Gravatar

@pijaczek: przecież dokładnie to napisałem :)

 
zwiń wątek trasz  22 marca 2009 o godz. 10:55 #
Gravatar

@pijaczek: I twoim zdaniem latwiej zorganizowac backup dla wszystkich tych serwerow, niz ustawic prawa dostepu dla kilku osob na centralnym?

 
zwiń wątek pijaczek  22 marca 2009 o godz. 21:46 #
Gravatar

@trasz: jaka to różnica czy serwer pobierze kopie z serwera głównego, czy z listy serwerów? Tyle samo danych do pobrania, a korzyści w przy pracy duże.

 
zwiń wątek ufoludek  22 marca 2009 o godz. 22:18 #
Gravatar

@pijaczek: zasadnicza. Zwłaszcza, jeśli ludziom zdarza się być w rozjazdach i tylko od czasu do czasu łączyć się przez VPN.

 
zwiń wątek pijaczek  23 marca 2009 o godz. 8:44 #
Gravatar

@ufoludek: to wtedy też nie wysyłają na svn i też nie zrobisz backup'a tych danych, czyli gdzie jest ta zasadnicza różnica?

 
 
zwiń wątek ufoludek  21 marca 2009 o godz. 5:54 #
Gravatar

@trasz: w zasadzie w firmie mogłoby to też działać — jedno repozytorium oznaczyć jako centralne, z którego idą buildy. Ludzie, jak już coś wyrzeźbią, pushują swoje zmiany do tego centralnego repozytorium tak jak w systemach scentralizowanych, a na czas rozwijania kodu mogą się w obrębie grup synchronizować tylko między sobą.

Z gitem można pracować w sposób scentralizowany (patrz: github).

zwiń wątek trasz  22 marca 2009 o godz. 10:58 #
Gravatar

@ufoludek: Wszystko to mozna zrobic tez z SVN – na czas rozwijania kodu robi sie po prostu oddzielnego brancha. Trwa to moment dluzej niz z SVN, ale to roznica rzedu, przy duzych repo, paru minut – i robi sie to raz.

Zaleta SVN jest natomiast to, ze wiesz, gdzie jest twoj firmowy kod. Nie ma sytuacji, ze komus padl dysk w laptopie i okazalo sie, ze nie masz Bardzo Istotnego Kawalka.

 
zwiń wątek ufoludek  22 marca 2009 o godz. 15:57 #
Gravatar

@trasz:

Wszystko to mozna zrobic tez z SVN – na czas rozwijania kodu robi sie po prostu oddzielnego brancha.

Wiem :) kilka komentarzy wyżej napisałem to samo niejakiemu pijaczkowi.

Sęk w tym, że radosne tworzenie branchy w systemie scentralizowanym jest jednak mniej elastyczne. Przykładowo A, B i C pracują nad jakąś funkcjonalnością na swoim wspólnym developerskim branchu X. Kawałek A jest względnie niezależny, ale kawałki ludzi B i C są ściśle powiązane i muszą oni się często ze sobą synchronizować, najlepiej tak, żeby nie utrudniać pracy A.

W środowisku scentralizowanym najbezpieczniej by było, gdyby A pracował na branchu X, a B i C zrobili sobie "podbranch" X_1.

W środowisku rozproszonym B i C mogą sobie pushować/pullować od siebie nawzajem do woli nie przeszkadzając A, a jak już się ich kod ustabilizuje to A od nich ciągnie.

Do tego w przypadku CVS (w SVN raczej nie ma tego problemu) trzeba zapewnić jakiś rozsądny schemat nazywania branchy, zwłaszcza jeśli się branchuje nie cały repozyt a tylko poszczególne moduły, bo inaczej ktoś sobie zrobi brancha X na module A, ktoś brancha X na module B (CVS nie zgłosi problemu, bo mu się nic nie konfliktuje), potem ktoś w całym repozycie zrobi cvs up -r X i dostanie więcej, niż by chciał.

Zaleta SVN jest natomiast to, ze wiesz, gdzie jest twoj firmowy kod. Nie ma sytuacji, ze komus padl dysk w laptopie i okazalo sie, ze nie masz Bardzo Istotnego Kawalka.

Z tym się po namyśle muszę zgodzić. Wprawdzie to wyróżnione centralne repozytorium będzie backupowane, ale zmiany, które sobie ludzie na boku pracowicie rzeźbią na swoich lokalnych branchach mogą zniknąć.

Jeśli nad danym kodem pracuje N osób synchronizujących się ze sobą to pół biedy, bo jak jednemu padnie, to N-1 osób ma w miarę aktualną kopię. Gorzej, jak nad czymś pracuje tylko jedna osoba commitująca tylko do swojego lokalnego repo. Wtedy pad dysku == duże ups.

 
zwiń wątek oi  22 marca 2009 o godz. 17:39 #
Gravatar

Sęk w tym, że radosne tworzenie branchy w systemie scentralizowanym jest jednak mniej elastyczne.

Jak dla mnie jest to wystarczajaco elastyczne. W kodzie firmowym i tak nie robi sie zbyt wielu galezi bo kto bedzie tym pozniej zarzadzal/testowal/pisal specyfikacje/dokumentacje itp. Systemy scentralizowane sa proste i wymuszaja odrobine dyscypliny w projekcie (jak np. wstepne przetestowanie zmian przed wrzuceniem ich do repozytorium).

Co do zarzadzania wersjami w kopiach roboczych – nie wiem jak innym ale mnie to bardziej przeszkadza niz pomaga. Zmiany tam sa zbyt rozdrobnione i nieliniowe by vcs dawal cos wiecej niz zwykle "undo" w edytorze.

 
zwiń wątek ufoludek  22 marca 2009 o godz. 18:27 #
Gravatar

@oi:

bo kto bedzie tym pozniej zarzadzal/testowal/pisal specyfikacje/dokumentacje itp.

Ależ tu nie ma czym zarządzać/dokumentować — branch powstaje po to, żeby w czasie aktywnego developmentu nie destabilizować głównej ścieżki, a potem się go merge'uje do głownej i o nim zapomina.

wymuszaja odrobine dyscypliny w projekcie (jak np. wstepne przetestowanie zmian przed wrzuceniem ich do repozytorium)

Strzelam: nigdy nie robiłeś większych zmian. Większych, czyli takich, gdzie nad kodem pracuje kilka(naście) osób muszących się między sobą (niekoniecznie wszyscy — czasem jakieś mniejsze podzbiory) synchronizować.

Da się to rozwiązać wysyłając sobie patche, "podbranchami" albo mailami "uwaga, nie ciągnąć, bo przez kilka godzin będzie rozwalone, bo ja i Kazik się integrujemy", ale prościej zrobić pull od Kazika.

nie wiem jak innym ale mnie to bardziej przeszkadza niz pomaga. Zmiany tam sa zbyt rozdrobnione i nieliniowe by vcs dawal cos wiecej niz zwykle “undo” w edytorze.

Po prostu miałeś szczęście i robiłeś niezbyt duże zmiany.

Mnie akurat pomaga — ciągnę w tej chwili cztery częściowo kolidujące tematy, z których każdy się wiąże z grzebaniem w kilku-kilkudziesięciu plikach. "undo" to trochę za mało.

Oczywiście można mieć kilka kopii repozyta, ale przy rozmiarze projektu porównywalnym z kernelem Linuksa nie jest to już takie przyjemne.

 
zwiń wątek oi  22 marca 2009 o godz. 23:51 #
Gravatar

Strzelam: nigdy nie robiłeś większych zmian. Większych, czyli takich, gdzie nad kodem pracuje kilka(naście) osób muszących się między sobą (niekoniecznie wszyscy — czasem jakieś mniejsze podzbiory) synchronizować.

Po pierwsze, zle strzelasz. Po drugie, narzedzia nie zastapia dobrego projektu i komunikacji. Jesli nad jednym kawalkiem kodu jednoczesnie pracuje kilkanascie osob to skonczy sie to katastrofa niezaleznie od uzytych narzedzi. Nawet najwiekszy projekt da sie podzielic na male dobrze zdefiniowane czesci. Ale nie robi sie tego ad hoc w trakcie kodowania, a wczesniej, na etapie projektu. Nie potrzeba nawet do tego wyszukanych narzedzi, wystarczy zwykly arkusz Excela.

 
zwiń wątek ufoludek  23 marca 2009 o godz. 6:52 #
Gravatar

@oi:

Po drugie, narzedzia nie zastapia dobrego projektu i komunikacji. Jesli nad jednym kawalkiem kodu jednoczesnie pracuje kilkanascie osob to skonczy sie to katastrofa niezaleznie od uzytych narzedzi.

Podział na moduły nie ma tu nic do rzeczy. Moduły zależą od siebie nawzajem. Mogą być dowolnie rozdrobnione, ale nigdy nie będą doskonale niezależne.

Interfejsy nigdy nie będą doskonale elastyczne i dopasowane do dokładnie wszystkich możliwych wymagań.

Kilkanaście osób pracuje nad całością, nie nad jednym plikiem/modułem.

Ale nie robi sie tego ad hoc w trakcie kodowania, a wczesniej, na etapie projektu.

To jest możliwe tylko w przypadku projektów "fire&forget", które się robi raz, praktycznie od zera, wypuszcza i potem już tylko ewentualnie poprawia w nich bugi.

W przypadku projektów, które żyją długo, pomiędzy wersjami dochodzą nowe funkcjonalności, zmieniają się wymagania (definiowane przez ustawodawców i organizacje tworzące standardy, nie przez klientów) często niezbędne są głębokie zmiany. Architektura w mniejszym lub większym stopniu się zmienia. Mimo, że projekt ma wyróżnioną fazę projektowania/przeprojektowywania to i tak potem trzeba te zmiany projektu wprowadzić w sposób, który zminimalizuje ryzyko rozwałki, a ponieważ moduły od siebie zależą, często poszczególni developerzy muszą się synchronizować między sobą na wzajem nie afektując reszty świata przynajmniej do czasu, kiedy ich zmiany są w miarę stabilne.

Przykład z mojego podwórka (projekt rozwijany od 8 lat, który przeszedł w międzyczasie kilka dużych refactoringów w miarę nabywania wiedzy z pola, zmian wymagań i dodawania nowych rzeczy pod kątem nowych rynków) — mamy zestaw wewnętrznych dobrze zdefiniowanych (wg wiedzy i założeń, jakie były dostępne na początku projektu kilka lat temu) interfejsów, przez które moduły ze sobą gadają. Jeden interfejs potrafi być implementowany przez 8-10 modułów, które w różnych kombinacjach są wykorzystywane przez różne podprojekty. Każdy z tych modułów ma od kilkuset do kilkunastu kilo linii kodu. Niektóre z tych modułów są absolutnie niezbędne, żeby cokolwiek móc testować.

I teraz przychodzi konieczność dodania nowego ficzera, który wymaga dość sporego przeorania tego API.

Uwierz mi, że praca nad tym przy pomocy scentralizowanego vcsa to spory ból w tyłku. Kończy się na wysyłaniu sobie wzajemnie patchy i ręcznego nimi zarządzania, żeby móc się zgrać z ludźmi, których moduły zależą od mojego, żebyśmy mogli wrzucić nasze zmiany wrzucić hurtem i nie rozwalić innym repozytorium.

Da się? Da. Czy jest to wygodne? Ani trochę.

 
 
zwiń wątek ak  21 marca 2009 o godz. 11:34 #
Gravatar

Dlaczego?

 
 
zwiń wątek michuk  20 marca 2009 o godz. 19:16 #
Gravatar

No, jeśli się jechało na CVS to SVN jest naturalnym "upgrade"-em. Przejście na git to trochę zmiana filozofii.

 
zwiń wątek Zbigniew Braniecki  20 marca 2009 o godz. 22:28 #
Gravatar

svn jest bardzo ciekawym tworem, ale strasznie rozczarowalo mnie jesli chodzi o rozwoj. Od wersji 1.1 (czyli ile lat?) wlasciwie nic nie dodali, tylko czasem wydadza patche.

Mercurial/Git to zupelnie co innego. Moje doswiadczenia z przejscia na Mercurial sa fantastyczne. Nie chodzi o same funkcje czy wygode pracy, ale o zmiane filozofii i podejscia do programowania. Tworzenie lokalnych repozytoriow strasznie stymuluje eksperymenty ktore sa lepiej zarzadzane niz "zrobie to na dysku a potem sie wymysli co dalej". Tutaj jest to tanie, wrecz darmowe, tworze klony, branche, lokalne repozytoria za darmo i pracuje w nich nad czym chce.

Mozilla na przyklad pozwala kazdemu stworzyc dowolna liczbe repozytoriow na swoje eksperymenty: http://hg.mozilla.org/users/ :)

zwiń wątek ptecza  23 marca 2009 o godz. 14:29 #
Gravatar

svn jest bardzo ciekawym tworem, ale strasznie rozczarowalo mnie jesli chodzi o rozwoj. Od wersji 1.1 (czyli ile lat?) wlasciwie nic nie dodali, tylko czasem wydadza patche.

Subversion wciąż się rozwija. W zeszłym roku została wydana wersja 1.5. Zmian od wersji 1.1 uzbierało się przez te lata naprawdę całkiem sporo i nie były to tylko poprawki błędów…

Na pewno rozwój Subversion nie jak tak szybki jak zdecentralizowanych systemów kontroli wersji, o których tyle się ostatnio mówi. Widocznie jest już tak dobre, że trudno jeszcze je ulepszyć ;)

 
 
 
zwiń wątek bla  20 marca 2009 o godz. 19:53 #
Gravatar

"(…)podobny do BitKeeper i Monotone, w przeciwieństwie do nich rozpowszechniany jednak jako wolne oprogramowanie."

Monotone to zamknięte oprogramowanie? o_O. No pewny nie jestem, bo nie używam ale na stronie domowej piszą inaczej; chyba, że mowa o czym innym.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek medrek  21 marca 2009 o godz. 9:22 #
Gravatar

monotone jest na gpl!

 
zwiń wątek bies  21 marca 2009 o godz. 9:52 #
Gravatar

Nie. Monotone jest na GPL. Git z resztą sporo z Monotone zapożycza. Choć ten ostatni jest kierowany do innej grupy odbiorców (kod HI).

zwiń wątek wojtekm  23 marca 2009 o godz. 11:47 #
Gravatar

Monotone jest pierwowzorem wszystkich 3 obecnie prężnie rozwijających się DVCS (git, hg, bzr). To Graydon Hoare jako pierwszy wpadł na pomysł wersjonowania zmian za pomocą hash-y SHA-1 z ich zawarośćią, manifestów, etc. Monotone pierwotnie posługiwał się certyfikatami kryptograficznymi dla zapewnienia spójności rozproszonego archiwum, ale później zarzucono tą koncepcję na rzecz umieszczania pełnej informacji o poprzednikach w bieżącym commicie. Linus podchwycił pomysł i przedstawił go na LKML i od tego momentu zaczęły się równocześnie rozwijać dwa niezależnie projekty git i mercurial. Podstawową wadą Monotone'a, która sprawiła, że nie został wykorzystany do zarządzania jądrem Linux była jego powolność, ale jest i pewnie pozostanie ważnym projektem jeśli chodzi o rozwój nowych koncepcji DVCS. Ot choćby stworzony specjalnie z myślą o systemach rozproszonych algorytm *-merge (czyt. star-merge), który radzi sobie znacznie lepiej w tej sytuacji od standardowego 3-way merge.

Innym ciekawym projektem pod tym względem jest codeville, którego współtwórcą jest twórca BitTorrenta Bram Cohen.

Jest nawet specjalna strona poświęcona tym zagadnieniom, współtworzona przez developerów różnych systemów: http://revctrl.org/ warto tam zajrzeć jeśli chce się mieć pojęcie o tym jak wiele teorii może stać za wydawało by się trywialnym zagadnieniem kontroli wersji.

 
 
 
zwiń wątek !  21 marca 2009 o godz. 0:27 #
Gravatar

Trochę szkoda że oprogramowanie klientów tych systemów kontroli wersji nie jest niezależne (na tyle na ile możliwe) od konkretnego rozwiązania. Narzędzia do svn ładnie się rozwijają, eclipsowe i linuksowe powoli zbliżają do poziomu TortoiseSVN i znowu przesiadka się szykuje…

Jak ta "filozofia" gita różni się od svn-owej z perspektywy zwykłego programisty (czyli niewielka firma, współpraca z kilkoma osobami)?

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek !  21 marca 2009 o godz. 0:31 #
Gravatar

OK, na pytanie jest już dobra odpowiedź w tym wątku, więc zamiast tego zapytam się o dobre implementacje klientów, graficzne najchętniej.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek Maciej Mrozowski  21 marca 2009 o godz. 3:00 #
Gravatar

Odpowiedź brzmi – nie ma.

Są dobre narzędzia do przeglądania historii – jaki qgit np. Oczywiście obsługuje on proste operacje jak create patch, show difference, commit, cherry pick i merge ale jakoś nieintuicyjnie moim zdaniem – przez drag & drop – w każdym razie nie przywukłem i zwyczajnie qgit nie używam – nie ufam mu :)

Jest wtyczka do eclipse, nie dorównuje na razie subversive funkcjonalnością, ale jest używalna.

Poza tym wiersz poleceń git-a jest naprawdę wygodny, a w połączeniu z bash completion i jakiś narzędziem z GUI do rozwiązywania konnfliktów przy merge'owaniu (kdiff3 się sprawdza idealnie) – delikatnie mówiąc – nie przeszkadza.

zwiń wątek katoptron  21 marca 2009 o godz. 11:29 #
Gravatar

No i są jeszcze wbudowane git-gui i gitk, jak dla mnie wystarczające do większości zwykłych zastosowań.

zwiń wątek bies  22 marca 2009 o godz. 0:43 #
Gravatar

Git-gui, IMO, jest do bani. Ale gitk to najlepszy przegląd historii jaki widziałem w gui dla VCS-ów.

 
 
 
zwiń wątek wiktorw  22 marca 2009 o godz. 10:48 #
 
 
zwiń wątek tremor  21 marca 2009 o godz. 8:31 #
Gravatar

Mercurial jest od jakiegoś czasu standardem obowiązującym w Sunie. Nad gitem miał przewagę lepszej obsługi różnych platform, nad bazaarem stabilności i wydajności.

Wyjątkiem jest MySQL, który przeszedł niedawno na bazaar i bardzo sobie go chwalą. Twórcy bazaara w ostatnim czasie znacząco poprawili wydajność i nie planują kolejnych zmian w strukturze repozytoriów, co było największymi bolączkami tego narzędzia. Jednocześnie np. plugin do Eclipse'a jest już całkiem przyzwoity. Bazaar potrafi "gadać" z repozytorium svn, więc podczas migracji można nadal mieć repozytorium svn aż do czasu, gdy stanie się zbędne.

Zainteresowanym polecam lekturę Bzr vs Hg (u dołu strony jest odnośnik do opowiedzi mercuriala) oraz Bzr vs Git.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Strattera 150mg  25 lutego 2011 o godz. 12:56 #
Gravatar

I added your blog to bookmarks. And i’ll read your articles more often! Before this, it would be possible for the government to arrest you just based on whatever you were saying, if they didn’t like it.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Paxil buy online  25 lutego 2011 o godz. 19:24 #
Gravatar

If you’re still on the fence: grab your favorite earphones, head down to a Best Buy and ask to plug them into a Zune then an iPod and see which one sounds better to you, and which interface makes you smile more. Then you’ll know which is right for you.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Diflucan  2 marca 2011 o godz. 17:23 #
Gravatar

Sorry for the huge review, but I’m really loving the new Zune, and hope this, as well as the excellent reviews some other people have written, will help you decide if it’s the right choice for you.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek hcg  3 marca 2011 o godz. 0:12 #
Gravatar

I wanted to say thanks to you for this great read!! I’ve got you bookmarked to see new stuff you post.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek hcg diet  3 marca 2011 o godz. 0:27 #
Gravatar

I wanted to say thanks to you for this great read!! I’ve got you bookmarked to see new stuff you post.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek hcg weight loss program  3 marca 2011 o godz. 2:02 #
Gravatar

I wanted to say thanks to you for this great read!! I’ve got you bookmarked to see new stuff you post.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Maryanna Cremers  10 marca 2011 o godz. 21:48 #
Gravatar

I’d come to comply with you on this. Which is not something I typically do! I enjoy reading a post that will make people think. Also, thanks for allowing me to speak my mind!

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek fullmovies review  13 marca 2011 o godz. 8:28 #
Gravatar

Howdy, I just hopped over for your website online via StumbleUpon. No longer one thing I’d usually learn, but I liked your thoughts none the less. Thanks for making something price reading.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek dubturbo  17 marca 2011 o godz. 8:03 #
Gravatar

I simply want to mention I’m new to blogging and site-building and seriously enjoyed this web blog. More than likely I’m going to bookmark your blog post . You really come with fantastic well written articles. Thanks a lot for sharing with us your website.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Reuben Florine  17 marca 2011 o godz. 16:33 #
Gravatar

This site appears to recieve a great deal of visitors. How do you advertise it? It gives a nice unique twist on things. I guess having something useful or substantial to talk about is the most important thing.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek h miracle review  17 marca 2011 o godz. 18:14 #
Gravatar

This is like my fourth time stopping over your Blog. Regularly I do not make comments on website, but I have to mention that this post really pushed me to do so. Really great post .

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek dubturbo review  18 marca 2011 o godz. 4:59 #
 
zwiń wątek Alveo  25 marca 2011 o godz. 17:11 #
Gravatar

I find myself coming to your blog more and more often to the point where my visits are almost daily now!

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek tani hosting www  31 marca 2011 o godz. 14:58 #
Gravatar

An interesting discussion is worth comment. I think that you should write more on this topic, it might not be a taboo subject but generally people are not enough to speak on such topics. To the next. Cheers

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Konta Osobiste  6 kwietnia 2011 o godz. 15:28 #
Gravatar

I find myself coming to your blog more and more often to the point where my visits are almost daily now!

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek fullmovies.com review  8 kwietnia 2011 o godz. 21:46 #
Gravatar

I simply want to mention I’m new to blogging and site-building and seriously enjoyed this web blog. More than likely I’m going to bookmark your blog post . You really come with fantastic well written articles. Thanks a lot for sharing with us your website.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek fullmmovies.com  9 kwietnia 2011 o godz. 3:16 #
Gravatar

I simply want to tell you that I’m beginner to blogging and site-building and certainly savored you’re web site. Very likely I’m want to bookmark your blog . You really have great stories. Thanks a bunch for revealing your website page.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 
zwiń wątek Akuna  12 kwietnia 2011 o godz. 23:02 #
Gravatar

I’ve been visiting your blog for a while now and I always find a gem in your new posts. Thanks for sharing.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
 

Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="http://osnews.pl">OSnews: niusy IT</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <strike>tekst przekreślony</strike>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.

Wszystkie autorskie niusy w serwisie publikowane są na licencji Creative Commons Uznanie autorstwa 2.5 Polska.

Twoja sugestia