Git a checkout podadresáře

Re:Git a checkout podadresáře
« Odpověď #15 kdy: 19. 08. 2015, 09:07:03 »
Pokusím se nastudovat submoduly.


Re:Git a checkout podadresáře
« Odpověď #16 kdy: 19. 08. 2015, 09:29:27 »
... Takže by mi stačilo něco jako má SVN svn export (pokud si dobře vzpomínám), kdy dojde k vytvoření kopie požadovaného adresáře bez .svn dat...
Jen kdyby to šlo přímo na serveru kde chci data nahrávat.

Když pominu to že deployment aplikace by se skutečně měl dělat jinak (jak to radí ostatní), tak
to co hledáš je git archive

Kód: [Vybrat]
git archive --format tar --remote ssh://server.org/path/to/git HEAD docs/usage | tar zxf -

Ano, toto sice je něco jako svn export, ale potřeboval bych aby se to dělalo tam, kde chci data nahrát. Tedy logicky spíše něco jako svn import.

Omlouvám se za nepozornost - toto skutečně funguje jako svn import (kdyby existoval) a asi je to skutečně nejblíže tomu, co jsem hledal.
Koukal jsem na submoduly a to také není nic co by mi na řešení tohoto problému přišlo ideální.

nou

Re:Git a checkout podadresáře
« Odpověď #17 kdy: 19. 08. 2015, 10:06:42 »
Ak je to PHP tak tam by naozaj  malo stacit len to git archive. Ono sa ten prikaz da pridat do git hooks. Ukazky su napriklad tu https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks

Franta <xkucf03/>

Re:Git a checkout podadresáře
« Odpověď #18 kdy: 19. 08. 2015, 23:28:12 »
+1 Výstupem sestavení produktu by měl být balíček (.deb, .rpm, .war, .ear, .tar.gz atd.), který se pak nasazuje (na testy, do produkce). Zdrojáky tam nejsou potřeba resp. nepatří tam.

Z toho co píšete mi přijde, že GIT je určen pouze pro kompilované jazyky :D
Co třeba PHP? V takovém případě zdrojáky na server patří a export do .tar.gz mi moc užitečný nepřijde.

Jestli mám špatný už koncept používání verzovacího systému, rád se poučím, ale v tomto případě zatím nechápu co mi chcete říct.

Programuji ve více jazycích a už dlouho používám verzovací systém. Používal jsem SVN a teď se snažím přecházet na GIT. Vždy mám v projektu jak zdrojáky, tak podklady. Každý kdo na projektu pracuje potřebuje i podklady. Navíc ty se leckdy také verzují (návrhy DB, soubory s poznámkami atp.)

Vše funguje jak bych chtěl a jak jsem zvyklý. Jen mám teď problém s tím částečným checkoutem, v případě webserveru, kde potřebuji na server nahrávat pouze adresář se zdrojákem.

Zdrojáky jsem myslel celý obsah úložiště 1:1 přenesený na server. U skriptovacích jazyků se samozřejmě zdrojáky na server dostanou, ale podle mého není vhodné, aby byly v tom samém tvaru, jako v úložišti.

I u nekompilovaných jazyků se často nějaké zpracování dělá – generování kódu, skládání více souborů do jednoho (CSS, JavaScript, obrázky atd.), konverze (např. ze SVG nebo XCF do PNG). Já např. generuji i některé shellovské skripty, protože mi to ušetří práci a udržuje to samo program konzistentní (jedna informace je uložená jen na jednom místě – i když se pak použije třeba ve dvou programovacích jazycích).

Ivoszz

Re:Git a checkout podadresáře
« Odpověď #19 kdy: 20. 08. 2015, 10:08:17 »
+1 Výstupem sestavení produktu by měl být balíček (.deb, .rpm, .war, .ear, .tar.gz atd.), který se pak nasazuje (na testy, do produkce). Zdrojáky tam nejsou potřeba resp. nepatří tam.

Z toho co píšete mi přijde, že GIT je určen pouze pro kompilované jazyky :D
Co třeba PHP? V takovém případě zdrojáky na server patří a export do .tar.gz mi moc užitečný nepřijde.

Jestli mám špatný už koncept používání verzovacího systému, rád se poučím, ale v tomto případě zatím nechápu co mi chcete říct.

Programuji ve více jazycích a už dlouho používám verzovací systém. Používal jsem SVN a teď se snažím přecházet na GIT. Vždy mám v projektu jak zdrojáky, tak podklady. Každý kdo na projektu pracuje potřebuje i podklady. Navíc ty se leckdy také verzují (návrhy DB, soubory s poznámkami atp.)

Vše funguje jak bych chtěl a jak jsem zvyklý. Jen mám teď problém s tím částečným checkoutem, v případě webserveru, kde potřebuji na server nahrávat pouze adresář se zdrojákem.

Zdrojáky jsem myslel celý obsah úložiště 1:1 přenesený na server. U skriptovacích jazyků se samozřejmě zdrojáky na server dostanou, ale podle mého není vhodné, aby byly v tom samém tvaru, jako v úložišti.

I u nekompilovaných jazyků se často nějaké zpracování dělá – generování kódu, skládání více souborů do jednoho (CSS, JavaScript, obrázky atd.), konverze (např. ze SVG nebo XCF do PNG). Já např. generuji i některé shellovské skripty, protože mi to ušetří práci a udržuje to samo program konzistentní (jedna informace je uložená jen na jednom místě – i když se pak použije třeba ve dvou programovacích jazycích).

A ještě je potřeba dodat, že součástí úložiště jsou často další nástroje pro podporu vývoje a ty na produkčním systému rovněž nemají co dělat. Pokud je pro tebe CI/CD server overkill (což může být, zvláště pokud jsi sám), nic nebrání tomu vytvořit si vlastní deployment skripty  u sebe (ať už v shellu nebo nějakém nástroji pro to určeném, výběr je veliký). Osobně si už neumím představit neautomatizovaný deployment. Ale posílat na produkční server raw git repozitář není dobrá myšlenka.


Re:Git a checkout podadresáře
« Odpověď #20 kdy: 20. 08. 2015, 10:17:56 »
Z toho co píšete mi přijde, že GIT je určen pouze pro kompilované jazyky :D
Co třeba PHP? V takovém případě zdrojáky na server patří a export do .tar.gz mi moc užitečný nepřijde.

A na to jsi prisel jak? Git je na spravu verzi, CI na integraci.. I v tom pitomem PHP preci nebudes kopirovat na server zdrojaky vcetne testu a budes to chtit udelat az pote, co ti prosly jednotkove i integracni testy, ne? Nemluve o tom, ze i to nasazeni PHP neni jenom nakopirovani souboru, ale muze obsahovat trebas databazove migrace, minifikace css..

Ovrscout

Re:Git a checkout podadresáře
« Odpověď #21 kdy: 20. 08. 2015, 10:40:38 »
Git submoduly jsou víceméně vnořená repository s trochou té omáčky navíc, tj. dá se pak použít git submodule pro spuštění akcí nad všemi i vnořenými repository. Pokud toto nepotřebujete či nechcete můžete prostě spustit ve vnořeném adresáři git init . a vytvořit v něm repository a v něm pak verzovat samostatně.  Jako bonus můžete ale nemusíte toto vnořené repository sledovat v tom vnějším.

Git má

Někdy může být problém, pokud už máte soubory podadresáře ve vnějším gitu zaverzované ale dál je chcete mít v samostatném repository(tj v předchozích commitech zůstanou ale v dalších už se k nim budete tvářit jako k jinému repository).To lze řešit třeba dočasným přesunutím podadresáře pryč a vytvoření commitu ve kterém tyto soubory odeberete z gitu. A pak vložíte podardresář zpět tentokrát už s vytvořeným repository. Ale myslím že toto nebyl váš původní požadavek.

Zkuste si s tím pohrát a uvidíte.
Jinak, omlouvám se pokud už to znáte, dobrá kniha o základech gitu je Pro-Git v  https://git-scm.com/book/en/v2 nebo v docela slušném překladu na [url]http://knihy.nic.cz[url] . Je to už trochu postarší kniha a git zas ušel kousek kupředu, ale prvních pár kapitol určitě stojí za přečtení pro pochopení základů jak to funguje a co od toho můžete očekávat.

Re:Git a checkout podadresáře
« Odpověď #22 kdy: 21. 08. 2015, 12:14:58 »
Jinak, omlouvám se pokud už to znáte, dobrá kniha o základech gitu je Pro-Git v  https://git-scm.com/book/en/v2 nebo v docela slušném překladu na [url]http://knihy.nic.cz[url] . Je to už trochu postarší kniha a git zas ušel kousek kupředu, ale prvních pár kapitol určitě stojí za přečtení pro pochopení základů jak to funguje a co od toho můžete očekávat.
Ano, tuto knihu znám a hodně informací o GITu mám právě z ní. Přesto děkuji :)

Re:Git a checkout podadresáře
« Odpověď #23 kdy: 21. 08. 2015, 12:35:26 »
Z toho co píšete mi přijde, že GIT je určen pouze pro kompilované jazyky :D
Co třeba PHP? V takovém případě zdrojáky na server patří a export do .tar.gz mi moc užitečný nepřijde.

A na to jsi prisel jak? Git je na spravu verzi, CI na integraci.. I v tom pitomem PHP preci nebudes kopirovat na server zdrojaky vcetne testu a budes to chtit udelat az pote, co ti prosly jednotkove i integracni testy, ne? Nemluve o tom, ze i to nasazeni PHP neni jenom nakopirovani souboru, ale muze obsahovat trebas databazove migrace, minifikace css..

Pokud je na nasazování PHP nějaký jediný správný způsob, tak ten asi bohužel neznám.
Já v případě PHP většinou opravdu jen kopíruji zdrojáky na server. Pokud jsou potřeba úpravy databáze, tak je dělám ručně a pak jen nakopíruji soubory. V repozitáři mám právě adresářovou strukturu takovou, že jen jeden adresář patří na server a to kompletně a naopak žádný jiný tam nepatří (záznamy o změnách v DB, podklady atp.). Na všech vývojových strojích mám kompletní repozitář a vyvíjím na lokále a až je všechno otestované a připravené, tak soubory nakopíruji na server.

Nicméně rád bych se vyhnul diskuzi na téma "hloupé PHP", "špatný deployment" atp. Zajímalo mě pouze to, co je popsáno v úvodním postu a přestože to není ideální, tak git archive --remote je pro mě asi nejvhodnější.