Metodologia korzystania z Git w Netbeans IDE

0

Witam,

Na wstępie zaznaczę, że nigdy nie korzystałem z jakiegokolwiek systemu wersjonowania i proszę o wyrozumiałość :)
Chciałbym poznać Wasze metody pracy nad nowym projektem z wykorzystaniem Gita i jakiegoś IDE.

Dotychczas robiłem nowy projekt w Netbeans od razu uruchamiając stronę na hostingu i pracując na lokalnej kopii, a każda zmiana była automatycznie zapisywana w plikach w zdalnej lokalizacji. Wiem, że jest to nieefektywne, nieprawidłowe i pozbawione sensu działanie, które zamierzam zmienić :)

Jak najlepiej skonfigurować Netbeans, by:

  • móc pracować na lokalnej kopii strony,
  • testować tą lokalną kopię strony na localhoście,
  • po wykonaniu wszystkich zmian lokalnie na stronie, wysłać zmiany na serwer zdalny
  • móc pracować nad jednym projektem z dwóch komputerów, nie jednocześnie, na każdym posiadając aktualną lokalną kopię strony

Czy taki tok postępowania będzie prawidłowy:

  • mam działającą w internecie witrynę
  • instaluję na każdym kompie serwer LAMP
  • kopiuję na każdy komp całą witrynę FTPem
  • kopiuję na każdy komp bazę
  • tworzę w Netbeans nowy projekt wskazując istniejące lokalnie pliki źródłowe (wcześniej pobrane ftpem)
  • stronę mogę podejrzeć z localhosta
  • standardowo robię zmiany na stronie, które są widoczne na localhost, nie są jeszcze widoczne zdalnie

W celu wysyłania zmian na serwer i pracy na dwóch stanowiskach:

  • instaluję na każdym kompie Gita
  • inicjalizuję Git`a na projekcie w Netbeans (menu: Team > Git > Initialize Repository) - zostawiam domyślną ścieżkę do repozytorium
  • pliki projektu zostają podświetlone na zielono
  • wykonuję z menu Team > Commit komendę "new commit"
  • rejestruję konto na Githubie
  • na koncie Github tworzę New Repository jako 'public'
  • kopiuję link do repozytorium https
  • w Netbeans w menu: Team > Remote > Push wklejam link z githuba i podaję dane logowania - zaznaczam lokalny branch master>master
  • od tego momentu mam dostępne menu Git na projekcie w Netbeans

Czy powyższe kroki oznaczają, że mam "kopię" strony na Githubie?
Czy muszę jeszcze tworzyć drugi lokalny folder z "kopią witryny"?
W jaki sposób wysyłać zmiany na serwer zdalny z działającą witryną?
W jaki sposób po wykonaniu zmian na jednym komputerze "widzieć" zmiany na drugim?

Z góry dzięki za pomoc :)

0

Repozytorium inicjalizuje się tylko raz. Po spushowaniu repozytorium do GitHuba na pierwszym kompie, klonujesz go na innym kompie i możesz wtedy na tym drugim kompie się pullować czy commitować. To podstawy gita.

1

Sądzę, że warto w przypadku strony w Symfony lub innego dużego frameworka dodać największe katalogi do ignorowanych, aby indeksowanie i ładowanie projektu nie trwało wieczność.

Do testowania strony lokalnie można

  • w przypadku Windowsa zainstalować np. XAMPP,
  • w linuxie LAMP,
    w netbeansie wskazujesz kod strony z katalogów www.

Etapy:

  • utworzenia zdalnego pustego repo (jak na github to raczej prywatne (płatne), no chyba że kod strony nie ma tajemnic dla nikogo),
  • sklonowania go na jakimś komputerze roboczym,
  • skopiowania plików strony do pustego lokalnego repo,
  • dodanie do wersjonowania plików (git add .), skomitowanie (git commit -m 'Startowa wersja'), i pushowanie do zdalnego repo (git push origin master).
    Potem tylko klonowania ze zdalnego repo (git clone git@[remote_branch].git [git_local_name]) na dowolne serwery zamiast kopiowania ftpem.

Odnośnie tworzenia kopii witryny - wszystko zależy od tego, jak chcesz pracować.
Najprościej byłoby, gdybyś katalog produkcyjny strony https://netbeans.org/kb/docs/php/remote-hosting-and-ftp-account.htmldy prostą komendą git pull
(kod stronki jest spięty z repo zdalnym po wykonaniu git clone)
Wymaga to serwera z dostępem do SSH, jeśli takiego dostępu nie ma, no to jakaś alternatywa w postaci kopiowania przez ftp wybranej gałęzi, czy może jakaś synchronizacja w netbeans
https://netbeans.org/kb/docs/php/remote-hosting-and-ftp-account.html

Praca ze zdalnym repozytorium
http://blog.atena.pl/wstep-do-rozproszonej-kontroli-wersji-na-przykladzie-gita
Przydatne komendy
http://blog.piotrnalepa.pl/2013/05/19/git-podreczny-zestaw-niezbednych-komend-dla-kazdego-webdevelopera-i-nie-tylko/

[Adam W.]

0

Dzięki wielkie za odpowiedzi. Muszę więc to ogarnąć w ten sposób.

Kod witryny powinien być prywatny, ale wykorzystam posiadany serwer Synology w zdalnej lokalizacji, na którym zainstaluję pakiet serwer Githuba.

0
kchteam napisał(a):

Etapy:

  • utworzenia zdalnego pustego repo (jak na github to raczej prywatne (płatne), no chyba że kod strony nie ma tajemnic dla nikogo),
  • sklonowania go na jakimś komputerze roboczym,
  • skopiowania plików strony do pustego lokalnego repo,
  • dodanie do wersjonowania plików (git add .), skomitowanie (git commit -m 'Startowa wersja'), i pushowanie do zdalnego repo (git push origin master).
    Potem tylko klonowania ze zdalnego repo (git clone git@[remote_branch].git [git_local_name]) na dowolne serwery zamiast kopiowania ftpem.

Dzięki Twojemu opisowi udało mi się wszystko skonfigurować. Zamiast githuba skorzystałem z bitbucket i możliwości darmowych, prywatnych repozytoriów.
Tworzę kod na jednym stanowisku w netbeans, pushuję do zdalnego repo i pobieram na drugie stanowisko. Na ten moment działa super, uczę się dalej.

Mam tylko zagwostkę jak podejść do tematu posiadania aktualnej wersji bazy danych strony na obu stanowiskach?
Czy bazę trzymać po prostu na hostingu w trakcie developmentu?
Czy na każdym stanowisku jednak mieć lokalną wersję bazy, a żeby była aktualna to w jakiś sposób ją również synchronizować?

0

Myślę, że dobrym pomysłem jest na pewno rozgraniczenie bazy produkcyjnej (wdrożonej na serwer dla klientów) od bazy testowej.

Przy tworzeniu aplikacji bazę często trzeba modyfikować – tu jakiś ALTER na tabeli, nowy indeks, kolumna do usunięcia itp. Łatwo tutaj przy pomyłce coś popsuć i nieodwracalnie stracić cenne dane, zatem takie operacje najlepiej robić na bazie testowej spisując je sobie w kolejności chronologicznej tak, by z tego powstał plik wdrożenia .sql, który można potem uruchomić na bazie produkcyjnej celem synchronizacji. Zwyczajowo podczas takich operacji wdrożenia stronę powinno się wyłączać, informując o tym klientów (jakaś plansza w stylu „trwają prace konserwacyjne”) - masz wtedy czas na to, aby wdrożenie na spokojnie zrobić, także by pliki zsynchronizować, aby całość zagrała i po włączeniu z powrotem strony nie było błędów.

Jeśli potrzebowałbyś sprawdzić, czy bazy masz zsynchronizowane, lub po prostu wyznaczyć różnice, to są do tego narzędzia, np. https://www.devart.com/dbforge/mysql/studio/database-synchronization.html lub konsolowy http://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcompare.html.

Pytałeś również o to, gdzie najlepiej trzymać bazę. Myślę, że jeśli to niewielka strona, to można całą bazę po prostu zrzucać przez mysqldump i importować lokalnie, bo nie będzie to operacja długotrwała, ważne aby wersje używanych serwerów były takie same (by uniknąć niespodzianek przy wdrażaniu nowych rzeczy na serwer [tyczy się to również wersji PHP i innych użytych bibliotek]). Taką kopię bazy warto posiadać – bo jeśli coś przy zmianach w bazie popsujesz, to po prostu importujesz kopię i znów możesz bez problemu pracować. Przy większych projektach warto pomyśleć o tym, żeby tą bazę np. jakoś odchudzić i pracować tylko na skrawku (np. zostawić dane tylko z ostatnich 3 miesięcy). Przy bazach rzędu 100GB wykonanie wdrożenia może trwać nawet kilka-kilkanaście godzin. Testowanie zmian z takim opóźnieniem staje się wtedy wyzwaniem.

[Marcin]

1 użytkowników online, w tym zalogowanych: 0, gości: 1