Portál AbcLinuxu, 25. dubna 2024 23:52


Dotaz: GIT a netradiční správa komponent?

7.12.2011 14:12 gorgo | skóre: 11 | blog: denicek
GIT a netradiční správa komponent?
Přečteno: 461×
Odpovědět | Admin
Plánuji přechod z SVN na GIT (nebo klidně i jiný DVCS) a rád bych při té příležitosti vyřešil problém se správou komponent v systému založeném na Zend frameworku. V jedné stromové struktuře se totiž nachází soubory různých komponent.

Příklad adresářové struktury:
├── application
│   ├── controllers
│   ├── forms
│   ├── models
│   └── views
│       ├── layouts
│       ├── scripts
│       └── vc
├── library
│   ├── Moje
│   └── Zend
└── public
    ├── images
    ├── scripts
    └── styles
Takže např. komponenta Moje_Tabulka se skládá z následujících souborů: Podobně jsou na tom i ostatní komponenty.

Co bych si přál úplně nejvíc? Aktuálně má každý projekt svůj repozitář a sdílený kód synchronizuji pomocí Krusadera a jeho synchronizace adresářů=)

Toho bych se rád zbavil a řešil to nějak systematicky. Dočetl jsem se o git submodules, ale to asi můj problém neřeší, protože v každém adresáři se nachází soubory různých komponent.

Je vůbec možné něčeho takového docílit?

Řešení dotazu:


Nástroje: Začni sledovat (4) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (gorgo (tazatel))
7.12.2011 15:26 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechci rikat, ze to v gitu nejde, ale nevim o zadnem zpusobu, jak tohoto docilit. Prijde mi to spis jako nestatne umisteni jednotlivych souboru. Co si jeste pamatuji z doby kdysi davno, kdyz jsem si trochu hral se Zendem, tak tam muzes mit jednotlive moduly, coz jsou adresare ve slozece application obsahujici presne to, co ted mas primo ve slozce application. Stejne tam tam muzes mit styly precificke pro dany modul a pod. Podobne, napr. library/Moje/Tabulka.php je bud specificka pro dany modul a mela by byt v nem nebo je to neco obecneho, pak library/Moje/Tabulka.php je OK, ale cele library/Moje by mel byt asi samostatny projekt. Takze misto reseni, jak takovou strukturu narvat do gitu, abych asi spis resil, jak to presunout, aby veci, co spolu souvisi, byly ve stejnem adresari.
7.12.2011 15:57 gorgo | skóre: 11 | blog: denicek
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Moduly v Zendu slouží k něčemu jinému - máš například public a admin moduly jedné webové aplikace. Nicméně komponenta Moje_Tabulka má být použitelná v jakémkoliv modulu či kontroleru - dokonce například Moje_Database může být využitelná i v cron skriptu. Právě problém je v tom, že celé library/Moje obsahuje několik takových komponent (které bych ideálně viděl v oddělených repozitářích). Stejný problém je pak u ostatních zmíněných adresářů - v takovém public/styles se nachází css-ka pro tabulku, login-form, wizard a já nevím co všechno. Proto bych si potřeboval nadefinovat "náležitost" jednotlivých souborů (nikoliv jen adresářů) k submodulům (tedy komponentám).
7.12.2011 20:47 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
jestli je Moje_Tabulka pouzitelna v jakemkoli modulu, pak by IMHO, ja pisu vyse, mela byt v samostatnem repozitari a ne v repozitari nejake konkretni aplikace. Pokud je v library/Moje nekolik zcela nesouvisejicich veci, ktere by bylo vhodne rozdelit na samostatne projekty/knihovny, pak bych to udelal a pro kazdou knihovnu udelal samostatny repozitar. Nevidim zadny duvod, proc mit cely projekt i se zavislostma v jednom repozitari.
8.12.2011 08:24 gorgo | skóre: 11 | blog: denicek
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
máš recht, Moje_Tabulka určitě (časem) půjde do svého repozitáře. Celá knihovna Moje na to ještě ale není úplně připravena. V ní jsou věci (ne)související podobně jako jednotlivé části knihovny Zend.

Zpět ale k původnímu dotazu: je tedy možné v Gitu nastavit, že soubor library/Moje/Tabulka.php patří do jednoho repozitáže, zatímco jiný soubor ve stejném adresáři library/Moje/Database.php patří do jiného repozitáře?
Řešení 1× (gorgo (tazatel))
8.12.2011 10:41 Jidnra
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Podle me chces od GITu vic nez poskytuje a (z principu) resi. Pokud potrebujes vyresit situaci kdy mas N komponent v N repositarich a potrebujes je dostat do jednoho stromu souboru, pouzij nejaky sestavovaci program/skript. Make, ant, rake.... dle libosti. Jak to bude delat je jen na tobe, muze treba vy-checkout-ovat aktualni verze, poskladat je podle pravidel do vysledku, ten zabalit (a pokud chces tak treba deploynout)...

Jak v takovym pripade budes resit "opravy ve vyslednem stromu" a jejich promitnuti do repozitare je jina otazka - zalezi jak rychly bude "sestavovaci" proces, pokud to udelat dostatecne rozumne tak muzes editovat rovnou v repozitari a po kazde zmene pustit "sestaveni" a kouknout na vysledek (nezda se to, ale dneska uz to bude dostatecne rychly)
8.12.2011 10:57 gorgo | skóre: 11 | blog: denicek
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
OK, díky za odpověď. Takže ve výsledku si to budu muset tak jako tak napsat sám. To jsem chtěl vědět.
8.12.2011 11:03 Jidnra
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Hlavne to nevymejslej cely sam :-). Kterejkoli z existujicich sestavovacu ti poresi to "nakopiruj to tam, ale jenom pokud se tam neco zmenilo"

co treba http://thechangelog.com/post/493856233/phake-m-rake-for-php ?
8.12.2011 11:27 gorgo | skóre: 11 | blog: denicek
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Jasně=) Určitě se poohlédnu po něčem existujícím. Šlo mi předně o to, jestli to nezvládne sám Git. Odkaz poznamenán, díky!
8.12.2011 15:10 klingac | skóre: 10 | Praha
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
pre jednotlive subory to nastavit nejde, ale pre podadresare ano. heslo znie git submodule
8.12.2011 22:53 Jan Marek | skóre: 16
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Odpovědět | | Sbalit | Link | Blokovat | Admin
A byl by problém si udělat verzovací adresář a soubory z něj do příslušných adresářů rozhodit linkama?
9.12.2011 08:08 gorgo | skóre: 11 | blog: denicek
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Přímo problém by to nebyl, ale ručně mi to přijde těžkopádné. Možná jako součást nějakého sestavovače o kterých mluvil Jindra.
Řešení 1× (gorgo (tazatel))
Josef Kufner avatar 12.12.2011 13:50 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Koukni na git submodule. Na první pohled jsou trošku podivné, ale fungují pěkně.

Každý modul pak nacpeš do jednoho submodulu, což je samostatný repositář, který můžeš přilinkovat do libovolného dalšího projektu. V podstatě si submodul můžeš představit jako symlink na repositář a konkrétní verzi (commit) v něm.

Co se týče uspořádání projektu, máš v podstatě dvě možnosti:
  1. Přeskládat adresářovou strukturu tak, aby vše z jedné komponenty bylo v jednom adresáři. Autoloader pak bude muset s tímto počítat a umět hledat na různých místech. V okamžiku, kdy dáš dohromady rozumná pravidla, tak je to v pohodě (rozumné prefixy nabo jmenné prostory odpovídající adresářům komponent). Výsledek bude celkem přehledný a bude zřejmé, co do které komponenty patří.
  2. V submodulech mít instalační balíčky a pak nějaký automatický nástroj, který provede instalaci/deploy do struktury, kterou máš teď, přičemž aplikaci bych držel stejně jako komponenty nějak bokem a do dané adresářové struktury ji umisťoval stejným způsobem. Výhodou je minimum změn v aplikaci (pokud vůbec), nevýhodou složitý deploy.
Hello world ! Segmentation fault (core dumped)
13.12.2011 08:18 gorgo | skóre: 11 | blog: denicek
Rozbalit Rozbalit vše Re: GIT a netradiční správa komponent?
O submodules jsem už četl. Jinak díky za shrnutí.

Přeskládání adresářové struktury má nevýhodu v tom, že např. grafická komponenta si s sebou potáhne nějaké obrázky, styly a javascript. V Zendu se mi hodně líbí myšlenka, že tyhle věci jdou do adresáře public, zatímco php zdrojáky jsou úplně mimo.

Takže to zatím vypadá na možnost 2=)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.