Wątek przeniesiony 2020-05-04 22:01 z Off-Topic przez cerrato.

Git - jak pracujecie?

0

Witam serdecznie,
Chciałem się poradzić, w jaki sposób pracujecie na gicie?
Zakładam że Master = wersja produkcyjna
Dev = wersja robocza.

Załóżmy że mamy do wykonania funkcjonalność:

  • formularz logowania,
  • mapa strony,
  • formularz rejestracji,
  • podgląd użytkownika.

Jak byście commitowali swoją pracę? 1 commit = 1 wykonany moduł?

Czy jakoś inaczej? :)

5

master - wersja robocza i tagi jako wersje produkcyjne. Branch to jakaś działająca część funkcjonalności. Może być nawet nieaktywna jeszcze w produkcie, ważne że da się przetestować (automatyczne albo manualnie zależnie od funkcjonalności). Czasami chowanie za flagą, którą można włączyć w ustawieniach do debugowania. Zazwyczaj branch jest squashowany do 1 commita przy mergu.

1

W moich side projektach:

  • master to obecna wersja stagingowa
  • tagi to wersje produkcyjnne
  • branche - nowe funkcjonalności/fixy

Co do podanego przykładu przez Ciebie, to zależy, ale często część z tego wyląduje w Initial commit.

1

Gdybym prowadził projekt to nie miałbym mastera tylko tagi + develop

Ile osób pracuje nad aplikacja?
1 -> wrzucasz wszystko na developa. Jeśli zadania są małe to może być 1 commit 1 moduł.
2-6 -> pewnie najprościej byłoby podzielić zadania na te związane z inżynierią i te stricte biznesowe. Każdy dostaje swój moduł i realizuje je w postaci feature_branchy. Przez taski developerskie rozumiem np skonfigurowanie bazy danych, pobierania danych z internetu, ustalenie jakiegoś flow do tłumaczeń czy dostarczenia grafik od designera.
7 - 20+ -> tak samo jak w drugim punkcie tylko każdy moduł to osobny team z tymi samymi problemami. Potem trzeba zrobić committee żeby ludzie się dogadali czy tabulatory czy spacje.

1

Ja polecam GitFlow:

gitflow
https://datasift.github.io/gitflow/IntroducingGitFlow.html

Są oczywiście różne zdania na jego temat, ale ja zazwyczaj spotykam się z pozytywnymi no i z doświadczenia mogę powiedzieć, że znacznie ułatwia pracę w robocie. Wiadomo, że ciężko jest czasami w firmie wprowadzić go dokładnie, jak w opisach, ale u nas w jakichś 90% się udało i bardzo spoko się z nim pracuje.

0

Możesz napisać z jakimi problemami nie spotykacie się dzięki git flow?

1
lukmopy napisał(a):

Jak byście commitowali swoją pracę? 1 commit = 1 wykonany moduł?

Twój roboczy branch więc commit według twojego uznania, że "coś konkretnego, określonego" zrobiłeś. Samo pojęcie "coś" trudno jednoznacznie zdefiniować.
Commit to twój backup, dupochron, historia "myślenia" nad zmianami, punkt do wycofania się ze ślepej uliczki.
O właśnie, chyba opis commit to coś nad czym warto poświęcić chwilę zastanowienia. Jest sensowny message, to znaczy że nowy commit sam się prosi o zrobienie. Nie wiesz jak sensownie opisać commit, to chyba nie pora na "prywatny" commit.

Co już upubliczniasz, to inna sprawa. Jaki "flow" macie ustalony tak robisz. Szkoda pisać jaki, bo zaraz będzie dyskusja o wyższości świąt i "naszego" rozwiązania, a po drugie albo "maszeruj (i się dostosuj do ustawień firmy) albo giń". ;) .

0
Michał Sikora napisał(a):

Możesz napisać z jakimi problemami nie spotykacie się dzięki git flow?

Jasne, tu masz kilka na szybko:

  • oporności przy tworzeniu ficzerów, ogarnianiu releasów czy wypuszczaniu hotfixów,
  • nie ma branchowego chaosu - nawet jak jest sporo branchy, to jest je łatwo ogarnąć z GitFlowem i łatwo między nimi przechodzić,
  • nie ma bałaganu w repo i procesach - bo są ogarnięte i uporządkowane (ideałów nie ma, ale jest serio okej),
  • nieogar kilku wersji - z Gitflowem możesz wspierać stare wersje i kodzić nowe (więc ogarnianie kilka wersji apki nie jest bolesne).

No i dla mnie jeden z ważniejszych punktów, to master = produkcja. Boleśnie dowiedziałem się kiedyś, jak bardzo jest to potrzebne. :D

0

Jak byście commitowali swoją pracę?

Jeśli pracujesz w zespole, to najlepiej uzgodnić z zespołem (jeśli chodzi o te "wypychane" commity, bo roboczo to możesz sobie robić jak chcesz).

Natomiast jak robisz projekt samodzielnie, to uzgadniasz sam ze sobą, czyli robisz tak, jak ci wygodnie.

Załóżmy że mamy do wykonania funkcjonalność:

formularz logowania,
mapa strony,
formularz rejestracji,
podgląd użytkownika.
Jak byście commitowali swoją pracę? 1 commit = 1 wykonany moduł?

To zależy. Niektóre moduły będą o siebie zahaczać.

Przykładowo:
formularz logowania i rejestracji będzie pewnie korzystał z tych samych styli czy komponentów, więc równie dobrze można by zrobić commit "shared code for forms" albo jakkolwiek to nazwiesz, potem zrobić commit dla formularza logowania, potem dla rejestracji, potem zrobić commit dla podglądu użytkownika, potem ci się coś przypomni i zrobić dodatkowy commit, który zmienia coś w którymś z formularzu, potem mapę strony, potem jakiś commit refaktorujący jedną rzecz, potem commit, który poprawia literówkę itp.

Taki przykładowy flow, ale różnie to bywa. Generalnie wolę małe commity. Czasem jak robię kilka rzeczy naraz i zmieniam kilka modułów naraz, to bywa, że to commituję osobno, czasem nawet git add -p (konkretne linijki w pliku). Ale czasem nie i commituję kilka plików naraz. Kieruję się tym, żeby jeden commit to była jakaś mała konkretna rzecz (tylko tą rzeczą może być zarówno "poprawienie literówki" jak i zrobienie dużej funkcjonalności).

Nie ma reguły (chyba, że ty sam albo zespół ci narzuci konkretną metodę pracy z Git. Wtedy najlepiej się dostosować do zespołu, co najwyżej lokalnie robić sobie po swojemu).

1
lukmopy napisał(a):

/ciach/

Jak byście commitowali swoją pracę? 1 commit = 1 wykonany moduł?
Czy jakoś inaczej? :)

Inaczej.
Po pierwsze GitFlow... Ja używam SourceTree, a więc klikam w guziczki i prowadzi mnie za rączkę.
Po drugie - nie 1 commit - 1 moduł, tylko 1 moduł = 1 feature (dokumentacja do GitFlow się kłania).
A w każdym feature pewnie dziesiątki/setki commitów, ale na pewno nie jeden.
A jak już zakończę pracę nad modułem, to robię merge z gałęzią develop.
I tyle.

To jest bardzo proste, ale o tym się dowiesz kiedy zaczniesz tego używać.

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