Autor Téma: Vývoj aplikace v delphi a GIT  (Přečteno 4396 krát)

PetrHH

  • Host
Vývoj aplikace v delphi a GIT
« kdy: 11-12-2012, 10:37:08 »
Dobrý den,

máme tu jednu app v Delphi  (asi 800k řádků zdrojáku), zatím používáme vlastní verzovací systém, který umožňuje dočasně uzamknout nějaké soubory. To se hodí právě v případě editace formulářů a pod.
Přemýšlím nad přechodem na GIT a zajímalo by mne jak toto řešíte. Jeden vývojář upravuje form, druhý si jej jen otevře, posune pozici na obrazovce, taky něco upraví. Jak se s tím třeba GIT vypořádá? U zdrojáků bych se nebál, ale jak je to s formuláři? dfm jsou sice textové soubory, ale ... .

Díky za vaše postřehy.

Petr

Offline psholty2

  • Příspěvků: 38
  • Karma: 1
Re:Vývoj aplikace v delphi a GIT
« Odpověď #1 kdy: 11-12-2012, 13:33:26 »
To je imho nespravny workflow. V gite ma kazdy kompletnu lokalnu kopiu a robi si co chce v svojej lokalnej kopii, v ziadnom pripade by som to neriesil spolocnym working copy, to by si potom v podstate vobec nemohol pouzivat vetvy. V podstate si neviem predstavit akykolvek vyvoj.

Pouzivam v delphi git uz asi 9 mesiacov na dost velkom projekte (3500 formularov), nemozem si to vynachvalit. Centralne stale pouzivame CVS, lokalne pouzivam git, je to velmi rychle. Ale learning curve je dost strma.

V podstate mam vzdycky zakaznicku vetvu a vyvojovu vetvu, ked daco zlozitejsie robim tak si spravim feature vetvu a ked je to hotove tak to mergnem spat. Plus ked robim balicky pre zakaznika tak vytvorim tag takze sa mozem pohodlne vratit ku ktorejkovek verzii programu a ked user posle bugreport so stacktraceom tak riadky v zdrojakoch sedia (za tych 9 mesiacov som spravil 210 tagov, robi to automaticky ten skript co vytvara balicky). Ziadnu gui nadstavbu nepouzivam, len git z prikazovej riadky.

Je pomerne bezne ze od zakaznika prijde nejaka poziadavka ktora musi ist hned von aj do master vetvy. Na merge medzi vyvojovou a zakaznickou vetvou  vacsinou teraz pouzivam uz len cherry-pick konkretneho komitu. Na co si treba davat pozor je nekomitovat pas a dfm spolu s .dof, .cfg, .res, .rc, .iss, ale rozdelit to na 2 komity (dof a spol obsahuje cisla verzii atd a to by som potom zbytocne musel resolvovat konflikty ked mi to aj tak netreba).

Repozitar zalohujem cez git bundle, je to rychle a velmi usporne.
Pokial nie je uvedené inak moje otázky vo fóre sa týkajú Delphi 7, Windows 7 64bit

Offline psholty2

  • Příspěvků: 38
  • Karma: 1
Re:Vývoj aplikace v delphi a GIT
« Odpověď #2 kdy: 11-12-2012, 13:46:11 »
Tvoj priklad (2 pouzivatelia nezavysle na sebe posunuli formular) by pri mergi vyzeral takto (priloha)
V podstate si vyberes ci chces lavu verziu alebo pravu, kliknes na prislusnu ciernu sipku, ulozis, komitnes a je to.
Pokial nie je uvedené inak moje otázky vo fóre sa týkajú Delphi 7, Windows 7 64bit

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2923
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Vývoj aplikace v delphi a GIT
« Odpověď #3 kdy: 11-12-2012, 17:03:18 »
Tvoj priklad (2 pouzivatelia nezavysle na sebe posunuli formular) by pri mergi vyzeral takto (priloha)
V podstate si vyberes ci chces lavu verziu alebo pravu, kliknes na prislusnu ciernu sipku, ulozis, komitnes a je to.
To je sice hezky, ale IMHO na .dfm prakticky nepouzitelny: predstav si, ze jeden vyvojar dela na desktopu s monitorem 96 dpi a jiny to vezme na notebook se 120 dpi - delphi ti kazdou souradnici prepocte podle DPI, takze se ti v tom .DFM bude lisit skoro vsechno. A pak v tom hledej, co je zmena udelana kolegou a co zmena Delphi pri scalovani..., pokud vubec k nejake logicke zmene doslo...

Neznam GIT, ale u SVC se da zamykat, i kdyz to taky neni bezne, takze dvojice pas+dfm zamykame, zbytek se merguje jak popisujes. Jestli GIT umi zamykat nevim.
« Poslední změna: 11-12-2012, 18:30:11 od pf1957 »

PetrHH

  • Host
Re:Vývoj aplikace v delphi a GIT
« Odpověď #4 kdy: 12-12-2012, 06:34:35 »
To s  tim DPI a souradnicemi jsou presne ty veci, kterych jsem se bal. S prechodem na GIT to vypada zatim dost blede. Samozrejme, ja jej mohu lokalne pouzivat jak se mi zachce, ale pro tymovou praci je to pouzitelne jen velmi tezce. Skoda.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2923
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Vývoj aplikace v delphi a GIT
« Odpověď #5 kdy: 12-12-2012, 07:47:57 »
To s  tim DPI a souradnicemi jsou presne ty veci, kterych jsem se bal. S prechodem na GIT to vypada zatim dost blede. Samozrejme, ja jej mohu lokalne pouzivat jak se mi zachce, ale pro tymovou praci je to pouzitelne jen velmi tezce. Skoda.
Podivej se, jestli se neda GITu predepsat zamykani. U SVN je jediny problem, ze kdyz zalozis novy form/datamodul, tak nesmis zapomenout jit do properties a nastavit tam, ze to chce zamek. Pokud chces zmenit SCM, tak je otazka, jestli to musi byt GIT... Co jsem vypozoroval na ruznych forech, tak to byla jeden cas spis moda nez nejaka potreba.

Myslim, ze tady http://stackoverflow.com/questions/871/why-is-git-better-than-subversion podstatu vystihuji docela dobre.

Offline Petr

  • Příspěvků: 14
  • Karma: 0
Re:Vývoj aplikace v delphi a GIT
« Odpověď #6 kdy: 12-12-2012, 14:31:45 »
Ahoj,

co jsem pochopil, tak dneska se jiz pouziva git skoro vsude a podle me nema cenu prechazet na neco jineho. Git pouzivam asi 5 let, predtim svn a cvs. Git ma oproti nim spoustu vyhod (je distribuovanej - nezdrzuje sit, jednoduche vytvareni vetvi, jednoduche mergovani a prace s patchi, rebase, moznost pracovat offline, spousty nastroju,...).

Podle me git neumi zamky - bylo by to proti jeho filosofii.
Hezka kniha o gitu v cestine je tu http://www.root.cz/knihy/pro-git/ .

V delphi ho pouzivam akorat u par projektu s dvema vyvojari a v podstate nedelame na stejnych castech kodu ve stejny cas, tak moc neporadim, ale podle me by commiter pri commitu mel rozhodnout, ktere zmeny jsou jen balast a ty nenacommitovat.

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Vývoj aplikace v delphi a GIT
« Odpověď #7 kdy: 13-12-2012, 19:06:24 »
ad DPI: a co se v týmu "dohodnout" (= ze shora nařídit :) ) na společném DPI?
Embarcadero Technology Partner

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2923
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Vývoj aplikace v delphi a GIT
« Odpověď #8 kdy: 13-12-2012, 20:02:15 »
ad DPI: a co se v týmu "dohodnout" (= ze shora nařídit :) ) na společném DPI?
Hm, tak to abys vsem nakoupil stejne notebooky nebo stejne desktopy a vsem je menil naraz a nez prijde perioda obnovy, tak nenabirat nove lidi  ;D
A jeste kvuli takove blbosti, jako je GIT, kdyz muzes bez problemu pouzit jiny SCM

Kdyz se podivas nekam do archivu, jake problemy se lidem kolem ruznych notebooku vyskytuji, tak zjistis, ze ruzni vyrobci ruzna DPI resi ruzne: nektera rozliseni prepocitava notebook vnitrne a reportuje je jako buhvi co, jina naopak reportuje nativne...

To mi prijde realnejsi vyfuckovat Delphi s jeho priblble ukladanymi DFM soubory a prejit na neco normalniho  ;)  Jedine prejit na opici - jestli se alespon trochu nechali inspirovat WPF, tak by problemy se souradnicemi a velikostmi mohli upadnout resp. byt na ruznem rozliseni porad stejne. Ale to by musel potvrdit nekdo, kdo s opici dela.

Offline Petr

  • Příspěvků: 14
  • Karma: 0
Re:Vývoj aplikace v delphi a GIT
« Odpověď #9 kdy: 13-12-2012, 21:09:51 »
Me se zda, ze to neni zas tak problem gitu, ale spise blbeho formatu dfm.

Kdyz chce vice vyvojaru menit jeden soubor, tak to ruzna rcs delaji ruzne.
* svn pouziva zamky - jeden si to zamkne a ostatni s tim souborem nemuzou pracovat
* git dovoli kazdemu se souborem pracovat a delat zmeny a pak se pokusi o automaticke slouceni

U zdrojovych kodu se mi skoro nestava, ze bych musel mergovat neco rucne. U binarnich souboru nebo blbych textovych reprezentaci se musi rucne mergovat, jde jen o to kdy. Svn razi princip nedelat nic a pracovat az na stazene nove verzi, s gitem pracuju kdy chci a merguji az po zmenach.

U dobre navrzenych projektu by se podle me nemelo moc stavat, aby mnoho lidi provadelo velke zmeny v jednom souboru.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2923
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Vývoj aplikace v delphi a GIT
« Odpověď #10 kdy: 13-12-2012, 21:24:23 »
Svn razi princip nedelat nic a pracovat az na stazene nove verzi, s gitem pracuju kdy chci a merguji az po zmenach.
SVN nic nerazi a nejbeznejsi zpusoby prace jsou:

1. vsichni maji jen read only pristup, v teamu jsou vyhrazeni commiteri a ti dostavaji patche a testy od vyvojaru, ty aplikuji a bud je hazeji na hlavu zpatky vyvojarum nebo je merguji a commituji. To se pouziva zejmena u velkych projektu s kontinualni intergraci a regresnimi testy.

2. vsichni maji pristup ke vsemu, delaji si zmeny jak je napadne (az na tu decenralizicaci stejne jako s GITem) a pri commitu se to samo merguje, kolizi musi commiter vyresit rucne. Podobne jako sem dole nekdo posilal nahled na comparer. Pokud jsou v teamu priblba, tak vznikaji pekne zapeklite situace a stejne tam byva nejaky post commiter, ktery prohlizi kazdou zmenu, aby mel prehled, co tam kdo commituje.

3. vedle toho lze predepsat pro jednotlive soubory zamykani a pracovat s nimi v exkluzivnim rezimu. A to umoznuje mj. praci s tim debilnim .DFM formatem, ktery je DPI sensitive. Taky se pouziva post commiter.