Od dwóch dni przez środowisko programistów PHP (i nie tylko) przetacza się wiadomość o migracji kodu interpretera PHP z Subversion na gita. Kiedyś w jednym z komentarzy na blogu Wojtka Soczyńskiego obiecałem, że także spróbuję podjąć misję informowania o co ciekawszych wiadomościach pochodzących z wnętrza grupy php.internals, także zapraszam do lektury pierwszego wpisu z tej serii.
Fotografia: Alexandre Dulaunoy, CC-BY-SA.
php.internals: Migracja kodu PHP z SVN do Gita.
Jak wiadomo wszystkim zainteresowanym cały kod PHP jest trzymany w repozytorium SVN. Cały, tzn. interpreter + podstawowe rozszerzenia, ponieważ repozytorium PEAR, czy PECL to już zupełnie inna bajka. Kilka razy pojawiały się propozycje, żeby na fali popularności innych systemów kontroli wersji „coś z tym zrobić”, jednak do tej pory pomysły te upadały ze względu na nikłe zainteresowanie uczestników.
Od dłuższego czasu toczyła się zażarta dyskusja pomiędzy zwolennikami scentralizowanych systemów kontroli wersji, reprezentowanymi głównie przez SVN, a sympatykami tzw. DVCSów (rozproszonych VCSów), czyli gita, Mercuriala (Hg) i im podobnych. Ci pierwsi starali się przeforsować utrzymanie status quo argumentując, że przeniesienie kodu na rozproszone repozytoria spowoduje masę problemów i ogólną utratę panowania nad tym, które repozytorium jest „oficjalne”. „DVCSowcy” szybko skontrowali to stanowisko wyjaśniając, że to wcale tak nie wygląda i będzie jedno repo, ale możliwość sklonowania go w taki sposób, żeby łatwe było modyfikowanie poszczególnych elementów bez synchronizacji z „masterem”.
Wspomniany wątek dotyczący tej kwestii zawierał bardzo dużo argumentów zarówno za, jak i przeciw migracji na inny system SCM, dlatego zostało zarządzone głosowanie. Wczoraj na grupie php.internals pojawiła się następująca wiadomość:
[RESULT] Choosing a distributed version control system for PHP:
Hi Internals,
after 2 weeks of voting and discussion, I closed the votes today. The results are fairly straightforward. Most of the users want to move to a decentralized version control system.
52 want to switch to git
15 want to switch to Mercurial
1 for bazaar
13 want to stay with SVNI don’t want to make a difference of who voted for what. I think the results are overwhelming in favor of Git.
I’ll continue with writing the implementation RFC for php-src. I would like to do the move for php-src until December (as I will be on vacation for the whole Oct). Let’s see how this go. Any help is much appreciated.
For everyone else, go read http://progit.org, make yourself familar with Git.
- David
Skoro w głosowaniu zdecydowaną większością wygrał git, pojawił się wątek związany z wykorzystaniem Githuba. Tutaj głos zabrał BDFL PHP, czyli Rasmus Lerdorf, pisząc:
Note the vote was for git, not github. And yes, there has been a github repo for a long time: https://github.com/php/php-src
-Rasmus
Dalsza lektura wątku nie wyjaśnia jednak, w jaki sposób i czy w ogóle Github zostanie oficjalnie wykorzystany w utrzymywaniu kodu PHP.
Według mnie, pomimo sentymentu do SVNa, ta migracja to dobry ruch. Szczególnie integracja z Githubem powinna być swojego rodzaju priorytetem, ze względu na to, że udostępniłaby ona kod PHP środowisku wielu tysięcy programistów skupionych wokół tego serwisu. Biorąc pod uwagę relatywnie wolne tempo prac nad rozwojem interpretera myślę, że na pewno skorzystają z tego obie strony.
Github ponadto posiada bardzo fajne funkcje związane z śledzeniem błędów i złączaniem propozycji kodu (sławne „pull requesty”), które to operacje będzie mógł śledzić każdy zainteresowany, a więc każdy będzie mógł się wypowiedzieć na dany temat i ew. przysłać własną poprawkę. Poza tym, jest to kolejny bardzo duży projekt, który dał kredyt zaufania gitowi, co po raz kolejny dowodzi, że idea wysnuta i zaprogramowana przez Linusa Torvaldsa jest warta uwagi.
A co Wy o tym sądzicie?
Warto przeczytać.
Trwa ładowanie…
Osobiście bardzo mnie to cieszy ;)
Mnie się udało pogodzić oba światy – w pracy wykorzystujemy SVNa i pewnie jeszcze długo tak będzie.
Jednak ja lokalnie używam git-svn: http://www.kernel.org/pub/software/scm/git/docs/git-svn.html
Na codzień workflow wygląda w ten sposób:
1.) Pobieram najnowsze zmiany z SVNa (`git svn rebase`)
2.) W lokalnym repo dokonuję zmian i robię commity (`git commit`). Mogę korzystać ze wszystkich dobrodziejstw GITa jak łatwe i szybkie branche, commitowanie fragmentów plików, itp.
3.) Jak mam już zestaw commitów, które chcę wrzucić na wspólny serwer SVN, to lecę z komendą `git svn dcommit`.
Voila!
Opcja genialna, bo nie spamuję SVNa co 5 minut swoimi commitami (które często potem wymagają ręcznego deploy’a), tylko robię to raz na kilka godzin czy wręcz raz na dzień. Co więcej, działa się wielokrotnie szybciej niż bezpośrednio z SVN (mam lokalnie całą historię, mogę sobie diffować co chcę, przywracać zmiany, merge’ować itd bez ciągłego łączenia się przez neta z SVN, które to robi mega powooooli).
Polecam :)
Cóż można rzec… Nareszcie :) W ogóle zdziwiony byłem, czytając tę notkę po raz pierwszy, bo wydawało mi się, że projekt PHP już korzystał z DVCS, ale okazuje się, że znów coś pokręciłem w faktach historycznych ;]
Kwestia zamiany repozytorium rozproszone jest jak najlepszym krokiem, gdyż to przyszłość zarządzania kodem źródłowym.
I nawiązując do tego co napisałeś, sam też jestem mocno ciekawy tym jak rozwój projektu przyspieszy po przeniesieniu na społecznościowy portal rozwoju kodu źródłowego :)
Sublime Text 2
Popraw literówkę: „ta migracja do dobry ruch” z „do” na „to” :)
Mnie to chyba bez różnicy czy to będzie na gicie, czy na svn, chociaż do gita ostatnio się przyzwyczaiłem ;)
@Mikołaj Kopras: +1. ;]
php.internals: Migracja kodu PHP z SVN do Gita.
@MacData: Ciekawa sprawa, u mnie jest tak, że w firmie jest tylko SVN, a commituję tylko „całościowe rozwiązania”, dlatego dziennie wrzucam max. 10-15 commitów. Co do git-svn, to na pewno fajnie się z tym pracuje, ale mi TortoiseSVN działa bardzo ładnie i jakoś specjalnie nie tęsknię za funkcjami gita. ;]
php.internals: Migracja kodu PHP z SVN do Gita.
@Peter_lin: Nie było wcześniej takiej potrzeby, więc korzystali z SVNa. Kiedyś, w zamierzchłych czasach był to jeszcze CVS, także i tak nie jest źle. ;] W Internecie można też trafić na sporą i uzasadnioną krytykę DVCSów, także ja nie byłbym aż tak „pro-git”, aczkolwiek faktycznie, że trend idzie właśnie w ich stronę, także +1. ;]
php.internals: Migracja kodu PHP z SVN do Gita.
@filip: Dzięki za zgłoszenie, zaraz poprawię.
php.internals: Migracja kodu PHP z SVN do Gita.
Yay! Czas najwyższy :)
Zanim zainstalujesz Liona