Dlaczego warto tworzyć niewielkie commity?

Kilka powodów, dlaczego warto tworzyć niewielkie commity:

  1. Tworzy się je szybciej.
  2. Czyta się je szybciej.
  3. Poprawia się je szybciej.
  4. Łatwiej przechodzą rewizję kodu.
  5. Szybciej lądują w trunku/masterze.
  6. Jeśli duży commit utknął w rewizji kodu, zmergowanie go potem do mastera to koszmar.
  7. Łatwiej napisać do nich jasny komentarz.
  8. Łatwiej skończyć małego commita, oderwać się od pracy i pójść na kawę albo zakupy przedświąteczne.
  9. Nie trzeba nikomu mówić „poczekaj do poniedziałku, skończę commit i wyślę”.
  10. Jeżeli duży commit wprowadza coś bez sensu, zostaje zatrzymany. Jeśli zamiast niego są 3 małe commity, zostaje zatrzymany (w najlepszym wypadku) tylko jeden.

Uwaga: Łatwo się nabrać, że punkty 1-3 dla dwóch commitów i jednego dwa razy większego commita zajmą tyle samo czasu. Nie jest to prawda.

W przypadku dwóch commitów czas wyniesie mniej więcej sumę czasów wynikających z skomplikowania commitów. Jeśli te dwa commity zostaną połączone w jeden, czas wyniesie w przybliżeniu maximum ze skomplikowania razy dwa. Czyli dla commitów „o skomplikowaniu” 2 i 3, odpowiednio 5 i 6.

PS. Wszystkie powyżej opisane problemy wystąpiły w moim zespole programistycznym w ciągu ostatniego miesiąca (-:

4 thoughts on “Dlaczego warto tworzyć niewielkie commity?

  1. Mógłbyś to rozszerzyć o „Dlaczego warto nauczyć się pracować progresywnie” tak aby każdy commit/etap pracy stanowił coś co da się pokazać klientowi/współpracownikom z zarysem kierunku w którym idziesz. Na początku pracy w zawodzie wiele osób ma z tym problem.

  2. Chyba 4 i 6, skoro x2. ;] Popieram tworzenie małych commitów, chociaż bardziej przemawia do mnie wrzucanie całościowych rozwiązań, np. „dodawanie rekordu”, albo „widok edycji treści”. Wszystko zależy od projektu i poziomu skomplikowania takiego skrawka – jeśli da się wydzielić z czegoś stanowiącego całość mniejsze części dalej będące oddzielnymi bytami, to powinniśmy je właśnie po kolei wrzucać do repozytorium.

    Kiedyś próbowałem „na siłę” wdrożyć się w reguły, które opisywałeś – problem polegał na tym, że małe commity == częste commity, a mnie to bardzo istotnie rozpraszało. Bardzo często mam taką „wenę twórczą”, gdzie masa naprawdę dobrego kodu powstaje z palca, a o samym repozytorium przypominam sobie dopiero, jak się nad czymś zatrzymam na dłużej.

  3. Chyba 4 i 6, skoro x2. ;] Popieram tworzenie małych commitów, chociaż bardziej przemawia do mnie wrzucanie całościowych rozwiązań, np. „dodawanie rekordu”, albo „widok edycji treści”. Wszystko zależy od projektu i poziomu skomplikowania takiego skrawka – jeśli da się wydzielić z czegoś stanowiącego całość mniejsze części dalej będące oddzielnymi bytami, to powinniśmy je właśnie po kolei wrzucać do repozytorium.
    +1

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">