Správa addonů (podrepozitářů) v Gitu
- David Zadražil
- Člen | 62
Zdravím všechny,
s Gitem mám nějaké zkušenosti, tedy hlavně ty základní. Začal jsem si dělat trochu pořádek v addonech co jsem si kdy napsal a řeším jednu záludnost se kterou si moc nevím rady. Mám nějaký Nette Sandbox (který je sám repozitářem) a v něm hromadu addonů (ve složce vendor/others) a chtěl bych aby každý měl svůj repozitář. Lze to tedy nějak chytře udělat, aby v repozitáři byli „podrepozitáře“? Četl jsem něco o submodulech, ale nejsem si jist, zda je to vhodná funkce.
Předem díky!
- Jan Tvrdík
- Nette guru | 2595
Lze to tedy nějak chytře udělat, aby v repozitáři byli „podrepozitáře“?
Lze to udělat, ale ne chytře, takže to nedělej. Submoduly přináší více problémů, než kolik jich řeší. Addony hoď normálně do samostatných repositářů mimo repositář projektu a nainstaluj je přes Composer.
- David Zadražil
- Člen | 62
Jasně, ale to pak tedy musím každou neotestovanou změnu commitnout, pak přes composer stáhnout do sandboxu a otestovat jestli to dělá to co jsem chtěl, pokud to tedy dobře chápu. Není to pak příliš zdlouhavé? Nebo tedy mít sandbox, v něm testovat, potom to otestované hodit do repozitáže s addonem a až pak commitnout. Díky, nějak se s tím poperu.
- Vojtěch Dobeš
- Gold Partner | 1316
Pokud se bavíme o normálních projektech, zas tak často člověk snad všechny addony neupravuje :). Co se týče vývoje a testování addonů samotných, já mám třeba jeden stažený sandbox, kde si ručně requiruju ten který addon prostě z té složky, kde mám jeho repozitář uložený.
- Jan Tvrdík
- Nette guru | 2595
ale to pak tedy musím každou neotestovanou změnu commitnout
Na otestování doplňku bys měl mít unit testy v rámci jeho repositáře, ale chápu, že ne každý píše k doplňkům testy.
Není to pak příliš zdlouhavé?
To záleží, jak moc umíš psát kód bez chyb =)
Alternativně můžeš ty doplňky nainstalovat s přepínačem
--prefer-source
, čímž se ti do vendor
složky
naklonují jejich repositáře, takže budeš moc commitovat přímo z těch
podrepositářů (což je v podstatě to, cos chtěl na začátku). Ale osobně
tento postup nedoporučuji, protože pak nemůžeš dost dobře commitnout celou
vendor
složku do repositáře aplikace a navíc ti nebude sedět
composer.lock
atp.
- David Zadražil
- Člen | 62
Composer používám rád, tedy upřednostním repozitáře addonů úplně někde mimo :)
- Michal Vyšinský
- Člen | 608
Já mám na vývoj svého cms také sandbox. Veškeré extension vyvíjím přímo ve vendor složce, odkud mi načítá composer. Používám PSR-4 takže s autoloadingem při přidání jakékoliv třídy nemám problém.
Když chci vytvořit nové extension tak si základ vytvořím také ve vendor složce, po dokončení základu si initnu git repozitář, přidám composer.json a šup s tím na github a composer.
Editoval CherryBoss (28. 2. 2014 16:05)
- Pavel Macháň
- Člen | 282
Řeším to tak, že mám klasicky co addon to repo a tahám to composerem. Pokud u addonu nemám testy tak si updatnu v sandboxu addon na poslední rev. a změny addonu píšu v sandboxu (pokud přidám nějaký file tak composerem nechám vytvořit novej autoload [composer dump-autoload]). Když mám hotovo tak upravím repo addonu dle sandboxu a pushnu to do repa (v sandboxu dám pak update addonu kdybych se náhodou v repu někde upsal ať si toho všimnu).
Editoval EIFEL (28. 2. 2014 16:21)
- castamir
- Člen | 629
Jde to i jinak.
Sandox (nějaký hotový projekt) máš na git.
Addony dej taky na git.
Po úpravě addonu v projektu se přepni do nové větve, vyfiltruj si
commity upravující soubory pouze ve složce addonu, přidej si cestu do gitu
do repozitáře addonu (git remote add addonname xx@yy
) a pushni
to tam…