eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingProgramy do kontroli wersji - zalety i wady.
Ilość wypowiedzi w tym wątku: 27

  • 21. Data: 2012-12-03 16:09:22
    Temat: Re: Programy do kontroli wersji - zalety i wady.
    Od: Roman W <r...@g...com>

    W dniu niedziela, 2 grudnia 2012 17:36:53 UTC użytkownik e...@g...com
    napisał:
    > A dlaczego niby "o k..."? I tak robie backup. Zmieniam katalog nadysk sieciowy
    > i robie przed wyjsciem z pracy "git clone" - robi to w minute kopie 1:1
    > wszystkiego co mam lokalnie przy milionach linii kodu i mnostwie wygenerowanych
    > plikow, dodatkowo w bezpieczny sposob. Wiec zostaje i laptop i kopia sieciowa,
    > nawet gdybym mial odejsc z pracy rzucajac wszystko momentalnie w p..u.

    W sytuacji "Edek zlamal noge i nie przyjdzie do pracy, Felek musi przejac prace nad
    pilna poprawka nad ktora Edek pracowal w zeszlym tygodniu", to wyglada tak (dla
    odpowiedniego duzego korpo):

    1. svn, branch jest w repo: Felek robi "svn checkout" i po paru minutach
    zaglebia sie w kod Edka, przeklinajac brak komentarzy i kryptyczne nazwy
    zmiennych (j/k)
    2. git, branch jest lokalny: szef grupy sle maila do helpdesku proszac o
    skopiowanie kodu Edka z jego komputera; czas reakcji: 2-3 godziny

    To jest oczywiscie troche wydumana sytuacja, ale moze sie zdarzyc.

    RW


  • 22. Data: 2012-12-03 16:13:34
    Temat: Re: Programy do kontroli wersji - zalety i wady.
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>

    On 2012-12-02, Sebastian Biały <h...@p...onet.pl> wrote:
    >> No ale widzisz, w svn robisz zmiany, potem kompilujesz i wypada puscic testy
    >> i dopiero commit. W git juz jak sie kompiluje sprawdzam cale zmiany
    >> i robie commit. Jak sie nie skompiluje lub nie dziala, poprawiam juz
    >> zrobiony commit ("--amend") - nikt nigdy nie zobaczy schrzanionego commita.
    >
    > Dlaczego ma nie zobaczyć? Albo rewertujesz albo commitujesz fixa. Nie
    > rozumie, dlaczego wśród gitowców jest tak powszechne oszukiwanie (tu nie
    ^^^^^^^-- kto nie rozumie? czy "ja nie rozumię"?
    > bylo żadnego commita!). Praca z repo z rewizjami wymaga pewnej higieny
    > która wychodzi na zdrowie.

    Praca z rewizjami wymaga pewnej higieny. Taką higieną jest nietrzymanie
    pomyłki po wsze czasy, tylko (o ile nie została jeszcze opublikowana)
    poprawienie jej w miejscu.

    Kwestia przyjętej strategii. W Subversion nie poprawiasz, tylko łatasz,
    bo nie masz wyboru. W gicie to kwestia polityki.

    > Dalej nie jestem przekonany, twoje argumenty nie pokazują żadnej
    > lepszosci gita nad svnem w przypadku o który chodziło (jak się okazuje)
    > autorowi wątku.

    Bo Edek nie przemyślał swoich argumentów. To, jak zauważyłem, normalne
    przy dyskusjach o systemach kontroli wersji. Nikt zachwalający swój
    ulubiony system kontroli wersji nie potrafi pokazać, dlaczego jest on
    (naj)bardziejszy.

    > Przyznaje, że jestem gotowy przejśc na gita pod
    > warunkiem natrafienia na jeden killer-feature vs svn, bo drobnostki w
    > svn są upierdliwe.

    W podstawowym zastosowaniu git nie ma specjalnej przewagi nad
    Subversion, wyjąwszy pracę odłączoną. Ja zaczynałem naukę gita od mostka
    git-svn, żeby móc pracować na nie-zawsze-połączonym-z-internetem-laptopie
    nad kodem znajdującym się oryginalnie w Subversion.

    W porównaniu z Subversion git ma znacznie lepsze mechanizmy śledzenia
    operacji merge. Ja na ten przykład do tej pory nie nauczyłem się, jaka
    jest realna różnica między `svn merge' i `svn merge --reintegrate' na
    długo żyjących branchach (z czasem następuje zamiana ról i merge
    z trunka do brancha musi dostać --reintegrate; nadal nie wiem dlaczego
    ani kiedy).

    Informacja o merge'ach nie jest czymś dosztukowanym za pomocą atrybutów,
    tylko jedną z podstawowych cech commita, przez co trudniej o głupią
    pomyłkę. Zdarzyło mi się parę razy zacommitować merge bez katalogu
    głównego, przez co svn:mergeinfo poszło w pizdu. Owszem, da się w SVN
    z tego wycofać, ale dlaczego to w ogóle było możliwe?

    Obliczanie różnic między commitami odbywa się na lokalnej maszynie,
    a nie na serwerze, który służy do współdzielenia kodu. Przy większych
    repozytoriach jest to istotna różnica.

    W sytuacji, gdy praca nad kodem odbywa się w sieci, która nie ma żadnego
    połączenia z siecią, gdzie ten kod pracuje produkcyjne, łatwiej jest
    przerzucać commity. Mam taki specjalny workflow, który mi pakuje różnice
    między tym, co powinno być w sieci produkcyjnej i bieżącym stanem,
    a potem te zmiany przenoszę "na pendrajwie"[*], gdzie je wciągam do
    produkcji.

    [*] W rzeczywistości w nieco inny sposób, ale zgodnie z tym samym
    schematem.

    Przepisywanie historii w gicie pozwala mi na następujący sposób pracy
    z gałęziami: wszystkie commity lokalne dla brancha są nałożone *na*
    brancha źródłowego, a nie z nim *wymieszane*. W historii widać to tak,
    że najpierw czyta się wyłącznie lokalne zmiany, a od pewnego momentu już
    są same commity z oryginalnego brancha.
    Jeśli mam tylko dwa-trzy commity w lokalnym branchu i ta liczba się nie
    zwiększy drastycznie (np. w webaplikacji z raportami dodany jest dla
    wygody jeden URL do dokumentacji), to łatwiej jest porównywać branch
    oryginalny z lokalnym i wciągać zmiany z oryginalnego (tzn. nie
    "konflikty są mniejsze", tylko "łatwiej znaleźć, które commity były tu,
    a które tam i co jeszcze nie zostało zmerge'owane").

    Git ma wbudowaną możliwość składania podpisów GPG pod commitami. Jeszcze
    z tego nie korzystałem, ale gdy będę potrzebować systemu dystrybucji
    informacji, w którym odbiorca ufa nie źródłu informacji (serwerowi),
    a samym informacjom, w gicie będzie mi to łatwiej zrobić niż w SVN.

    --
    Secunia non olet.
    Stanislaw Klekot


  • 23. Data: 2012-12-03 16:59:30
    Temat: Re: Programy do kontroli wersji - zalety i wady.
    Od: e...@g...com

    W dniu poniedziałek, 3 grudnia 2012 16:09:22 UTC+1 użytkownik Roman W napisał:
    > W dniu niedziela, 2 grudnia 2012 17:36:53 UTC użytkownik e...@g...com
    napisał:
    > > A dlaczego niby "o k..."? I tak robie backup. Zmieniam katalog nadysk sieciowy
    > > i robie przed wyjsciem z pracy "git clone" - robi to w minute kopie 1:
    > > wszystkiego co mam lokalnie przy milionach linii kodu i mnostwie wygenerowanych
    > > plikow, dodatkowo w bezpieczny sposob. Wiec zostaje i laptop i kopia sieciowa,
    > > nawet gdybym mial odejsc z pracy rzucajac wszystko momentalnie w p..u.

    > W sytuacji "Edek zlamal noge i nie przyjdzie do pracy, Felek musi przejac prace nad
    pilna poprawka nad ktora Edek pracowal w zeszlym tygodniu", to wyglada tak (dla
    odpowiedniego duzego korpo):

    > 1. svn, branch jest w repo: Felek robi "svn checkout" i po paru minutach
    > zaglebia sie w kod Edka, przeklinajac brak komentarzy i kryptyczne nazwy
    > zmiennych (j/k)
    >
    > 2. git, branch jest lokalny: szef grupy sle maila do helpdesku proszac o
    > skopiowanie kodu Edka z jego komputera; czas reakcji: 2-3 godziny

    > To jest oczywiscie troche wydumana sytuacja, ale moze sie zdarzyc.

    Nie, nie moze ;) Jak tak mi zyczycie to ja sobie ide w p..u. A z tym Felkiem
    to dobre.

    --
    Edek




  • 24. Data: 2012-12-03 17:13:38
    Temat: Re: Programy do kontroli wersji - zalety i wady.
    Od: e...@g...com

    W dniu poniedziałek, 3 grudnia 2012 16:13:34 UTC+1 użytkownik Stachu 'Dozzie' K.
    napisał:

    > Bo Edek nie przemyślał swoich argumentów. To, jak zauważyłem, normalne
    > przy dyskusjach o systemach kontroli wersji. Nikt zachwalający swój
    > ulubiony system kontroli wersji nie potrafi pokazać, dlaczego jest on
    > (naj)bardziejszy.

    Ja tylko dyskutowalem z argumentami, o innych przewagach gita to ja moglbym
    walnac kilka tak dlugich postow.

    PGP uzywam: jak administruje systemami to robie checkout odpowiedniej wersji
    i dzieki PGP wiem, ze to oryginal, choc trzymam to na malo pewnej stronie.
    Wolalbym nie miec rootkita w domyslnej konfiguracji. No i wszystko mam
    wersjonowane, czyli moge cherry-pickiem przerzucic jedna zmiane pomiedzy
    branchami czyli konfiguracjami.

    Wybrane:
    mam lokalna konfiguracje rozwijanego systemu, sciezki, rozmiary i takie tam.
    A w zasadzie dwie konfiguracje, klaster na laptopa i zwykla.

    Dodatkowo mam swoje lokalne instrumentalizacje kodu do debuggowania. To
    sporo plikow, mod systemu builda i pare innych.

    I teraz co daje git: powiedzmy, ze mam zgloszenie, ze w wersji 4.5.43 jest
    blad. Robie tak:
    git checkout -b test1 <odpowiedni commit>
    git merge moj_lokalny_konfig
    git merge instrumentalizacja

    ... i mam wszystko gotowe do zbudowania i testow, podczas gdy recznie
    - zajeloby mi to z pol godziny
    - moglbym cos nadpisac, np. zmiany w globalnym konfigu, a git sprawdzi,
    czy nie ma konfliktow
    - w svn gdyby kazdy trzymal takie rzeczy w publicznym bylby smietnik.
    A mamy master, kilka tagow, branche release, i chyba ze 3-4 inne branche
    - jak ktos chce moj lokalny konfig, moge mu wyslac branch mailem jedna
    komenda i to faktycznie dziala.

    Rowniez, w tym samym celu, mam drugie lokalne repo ze wszystkimi kombinacjami
    konfigow, instrumentalizacji i wersji release. Wiec jak mam przetestowac
    ostatnie zmiany robie "git pull" i mam wszystkie wersje skonfigurowane
    tak jak lubie w 5 sekund na odpowiednich branchach.

    Itd. itp.

    --
    Edek


  • 25. Data: 2012-12-03 22:46:29
    Temat: Re: Programy do kontroli wersji - zalety i wady.
    Od: Andrzej Jarzabek <a...@g...com>

    On 03/12/2012 15:13, Stachu 'Dozzie' K. wrote:
    > On 2012-12-02, Sebastian Biały <h...@p...onet.pl> wrote:
    >
    > W porównaniu z Subversion git ma znacznie lepsze mechanizmy śledzenia
    > operacji merge. Ja na ten przykład do tej pory nie nauczyłem się, jaka
    > jest realna różnica między `svn merge' i `svn merge --reintegrate' na
    > długo żyjących branchach (z czasem następuje zamiana ról i merge
    > z trunka do brancha musi dostać --reintegrate; nadal nie wiem dlaczego
    > ani kiedy).

    Reintegrate jest ci potrzebny wtedy, kiedy na branchu, który mergujesz
    bezpośrednio przedtem zmergowałeś zmiany z brancha docelowego.
    Reintegrate nie merguje ci wtedy wszystkich zmian wstecz, tylko aktualną
    różnicę między branchem mergowanym a docelowym, uwzględniając
    automatycznie przez samo to na przykład wszystkie rozwiązane po drodze
    konflikty.

    Powiedzmy wybranchowujesz sobie trunka, robisz na nim jakieś zmiany, po
    jakimś czasie wciągasz na brancha zmiany z trunka, rozwiązujesz
    konflikty, poprawiasz żeby działało, robisz jakieś dalsze zmiany i tak
    dalej. W końcu masz już całą funkcjonalność na branchu, więc dociągasz
    zmiany z trunka i w tym momencie branch jest taki saqm jak trunk, tylko
    że ma twoje zmiany. Robisz merge --reintegrate, i trunk staje się
    identyczny z twoim branchem. Tada!


  • 26. Data: 2012-12-14 20:14:40
    Temat: Re: Programy do kontroli wersji - zalety i wady.
    Od: Wojciech Muła <w...@g...com>

    W dniu poniedziałek, 3 grudnia 2012 16:09:22 UTC+1 użytkownik Roman W napisał:
    > W sytuacji "Edek zlamal noge i nie przyjdzie do pracy, Felek musi przejac prace nad
    pilna poprawka nad ktora Edek pracowal w zeszlym tygodniu", to wyglada tak (dla
    odpowiedniego duzego korpo):
    >
    > 1. svn, branch jest w repo: Felek robi "svn checkout" i po paru minutach
    > zaglebia sie w kod Edka, przeklinajac brak komentarzy i kryptyczne nazwy
    > zmiennych (j/k)
    >
    > 2. git, branch jest lokalny: szef grupy sle maila do helpdesku proszac o
    > skopiowanie kodu Edka z jego komputera; czas reakcji: 2-3 godziny
    >
    > To jest oczywiscie troche wydumana sytuacja, ale moze sie zdarzyc.

    Nie do końca. Kolega stracił kiedyś kilka dni pracy zapisanych w lokalnym
    branchu (git). Od tego czasu mamy *obowiązek* na koniec dnia pushować
    swoje feature branche na zdalne repo.

    BTW, czy SVN ma coś takiego jak interactive rebase?

    w.


  • 27. Data: 2012-12-14 20:16:14
    Temat: Re: Programy do kontroli wersji - zalety i wady.
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>

    On 2012-12-14, Wojciech Muła <w...@g...com> wrote:
    > W dniu poniedziałek, 3 grudnia 2012 16:09:22 UTC+1 użytkownik Roman W napisał:
    >> W sytuacji "Edek zlamal noge i nie przyjdzie do pracy, Felek musi przejac prace
    nad pilna poprawka nad ktora Edek pracowal w zeszlym tygodniu", to wyglada tak (dla
    odpowiedniego duzego korpo):
    >>
    >> 1. svn, branch jest w repo: Felek robi "svn checkout" i po paru minutach
    >> zaglebia sie w kod Edka, przeklinajac brak komentarzy i kryptyczne nazwy
    >> zmiennych (j/k)
    >>
    >> 2. git, branch jest lokalny: szef grupy sle maila do helpdesku proszac o
    >> skopiowanie kodu Edka z jego komputera; czas reakcji: 2-3 godziny
    >>
    >> To jest oczywiscie troche wydumana sytuacja, ale moze sie zdarzyc.
    >
    > Nie do końca. Kolega stracił kiedyś kilka dni pracy zapisanych w lokalnym
    > branchu (git). Od tego czasu mamy *obowiązek* na koniec dnia pushować
    > swoje feature branche na zdalne repo.
    >
    > BTW, czy SVN ma coś takiego jak interactive rebase?

    SVN w ogóle nie ma rebase. Dlaczego nagle miałby się dorobić trybu
    interaktywnego?

    --
    Secunia non olet.
    Stanislaw Klekot

strony : 1 . 2 . [ 3 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: