it-swarm-eu.dev

Jak mohu řídit rozvoj spolupráce na Drupal webu)?

Pracuji s jiným vývojářem na Drupal webu). Snažili jsme se najít dobrý způsob, jak pracovat na různých částech webu ve stejnou dobu, aniž bychom se navzájem dostali. pracujeme na stejné vývojové instanci webu, ale často přistupujeme k sobě navzájem, nebo sundáme web s nějakým špatným kódem, který znemožňuje druhým pokračovat v práci, dokud nebude vyřešen. Takže jsme se přesunuli do samostatných vývojových instancí „Nyní je však velká bolest sloučit naši práci do jediné instance webu. V podstatě skončíme opakováním všeho na sdílené kopii.

Největším problémem, který nyní máme, je to, jak sloučíme změny databáze a jak začleníme databázi do našeho systému řízení zdrojů? Soubory jsou jednoduché, stačí je sledovat všechny (používáme git) a sloučit naši práci, v případě potřeby řešit konflikty. Ale to s databází opravdu nefunguje. Můžeme vzít výpis SQL a zahrnout jej do našeho úložiště git, ale nemůžeme opravdu sloučit databáze. Modul Funkce trochu pomáhá, což nám umožňuje exportovat část naší databáze do kódu, který lze poté verzovat a sloučit. Funkce však nepodporuje ani vše. Tak...

  • Jaké kroky můžeme podniknout pro snadné sloučení změn naší databáze?

  • Jak bychom měli verzi databáze (je to dobrý způsob, jak to udělat)?

  • Jsou k dispozici nějaké moduly, které pomáhají s některými z těchto problémů?

  • Nebo jsme se zasekli s prací na stejné kopii webu? (prosím, ne)


Upravit: V komentářích jsme diskutovali o tom, co nelze exportovat pomocí Prvků, a jednou z nich byla Taxonomie. Je tu další otázka, která se s tím zabývá .

12
Chaulky

Je to změna pracovního postupu, ale měli byste si zvyknout na práci na novém výpisu živé databáze. Existují tři způsoby, jak získat změny do DB.

  1. Funkce. To nebude fungovat pro všechno, ale pro spoustu věcí, které potřebujete.
  2. aktualizace háčků. Když funkce nebudou fungovat, můžete věci pevně zakódovat do aktualizačního modulu modulu, který vlastníte.
  3. Ruční změny. Používejte střídmě. Některé věci nepřicházejí přirozeně k funkcím nebo aktualizačním háčkům a je mnohem jednodušší je provádět ručně. Toto je poslední možnost, ale někdy je to jen pirátský způsob.

Jestli můžeš. Několikrát denně získejte nový výpis a vyzkoušejte si sestavení, měli byste mít méně problémů s integrací.

5
Jeremy French

Odpověděl jsem na podobnou otázku a trochu ji upravím, abych zde odpověděl na vaši otázku. Můj kořenový návrh je, že máte vývojový/pracovní server, kde jsou změny kódu kontrolovány pomocí systému kontinuální integrace často (např. Každých 5 minut). Ve vašem místním počítači tedy pracujete pouze na jednom požadavku na funkci/hlášení o chybě najednou. Nezapomeňte jasně definovat tento úkol od ostatních, na kterém by lidé mohli pracovat, a sdělit svým spoluhráčům, že na něm pracujete (redmine nebo další sledování chyb je pro to skvělé). Poté pravidelně provádíte změny a dostanou se dolů na server dev/staging, stejně jako vaši spoluhráči. V ideálním případě máte v systému kontinuální integrace vestavěné testy jednotek (mimochodem pro to doporučujeme luntbuild nebo QuickBuild, ale Hudson také funguje). Systém CI nebo testy mohou automaticky reagovat na všechny konflikty, které jste mohli zavést, jakmile zkontrolujete svůj kód. Pokud potřebujete provést změny obsahu (nekódového), uděláte to na serveru dev/staging.

Pokud jde o část databáze, přijal jsem zde v podstatě dvě myšlenkové školy (3. myšlenková škola, databáze se liší, nebudu diskutovat, protože složitost je poměrně vysoká).

1) Nasadí se zrušením produkční databáze a importem mysqldump vývojové databáze. Případně spusťte hledání a nahrazování regulárních výrazů předem na všech pevně kódovaných absolutních odkazech, které odkazují na adresu URL dev v SQL výpisu. Po importu dev db do prod, poté automaticky spusťte příkazy SQL (obvykle skriptem), abyste změnili nastavení, která se liší pro prod než dev (např. Možná máte v tabulce proměnných některá nastavení připojení pro připojení k externím systémům, které potřebujete změňte tak, aby ukazoval na externí systémy prod, místo na verzi dev).

2) Použijte modul Features, jak zmínil Budda, pro nastavení administrátora a použijte Node Export modul pro export/import obsahu v kombinaci s modulem Smazat vše). Pracovní postup tedy je:

použijte node_export a funkce k exportu uzlů/funkcí do souborů Volitelně (a doufejme) kontrola verzí Načtení souborů na systému prod Pro načítání funkcí použijte rozhraní drush nebo admin Rozhraní smazat vše nebo admin odstranit všechny uzly typů, které chcete importovat K importu uzlů ze souboru uzlů, který jste exportovali, použijte drush ne-import nebo rozhraní admin. Jedna poznámka, velmi doporučuji přijmout standardní pracovní postup, kdy obsah jde pouze jedním směrem. Buď Dev -> Prod nebo Prod -> Dev (dávám přednost tomuto).

Udělal jsem to, a dělám to na některých velkých systémech, s docela dobrými výsledky, ale vždy bude existovat mnoho způsobů, jak tento Apple nakrájet, vybrat si, který způsob vám nejlépe vyhovuje.

4
coderintherye

I když je to stará otázka s přijatelnou odpovědí, domnívám se, že stále existuje prostor pro jinou.

Nejprve mi dovolte dopředu říci, že si nemyslím Funkce jsou tím pravým nástrojem pro tento úkol a navrhuji alternativní sadu nástrojů.

Předpokladem pro týmovou spolupráci je funkční server pro testování vývojových verzí projektu, který je oddělený od produkčního serveru. Celý vývojový kód je testován na pracovním serveru a na produkční server je tlačen pouze tehdy, je-li stabilní a připravený k nasazení. Vývojáři však nepracují přímo na pracovní server. Každý vývojář pracuje na své pracovní stanici pomocí koordinace kontroly revizí a správy zdrojového kódu (SCM) ke koordinaci své práce se zbytkem týmu.

Systém SCM umožňuje členům týmu pracovat paralelně na různých pobočkách kódu, aniž by navzájem zasahovaly. Pro účely testování je na pracovní stanici nasazena pouze větev master.

Pro zrcadlení databáze mezi produkcí, pracovními stanicemi a pracovními stanicemi je k dispozici modul s názvem Backup and migrate , který lze použít, pokud jste na sdíleném hostingu a nespravujete svou vlastní databázi. Pokud spravujete svůj vlastní databázový server, jedná se o jediný projekt na tomto serveru a použijete mysql, jsou užitečné následující příkazy:

Na skládku:

mysqldump --all-databases --opt -u root -p > DUMP.sql

Obnovit:

mysql -u root -p < DUMP.sql

Pokud vaše není jedinou databází na tomto serveru, skriptujte nějakou verzi mysqldump (nebo ekvivalentní, pokud nepoužíváte mysql), která vypíše pouze vaše databáze.

Vytvořte zásadu, že hlavním serverem je databáze na produkčním serveru. Pracovní server a pracovní stanice by měly být kopií produkční databáze, nikoli naopak.

Všimněte si, že Drupal 7 zachovává veškerá nastavení administrátora v databázi. To znamená, že zrcadlení databáze mezi produkčním webem, pracovním serverem a pracovními stanicemi přenese nastavení admim bez funkcí .

Nyní pro sdílení kódu:

Standardním způsobem sdílení kódu mezi členy vývojového týmu je použití systému SCM. Drupal je ve výchozím nastavení spravován s takovým systémem s názvem git.

Git ​​umožňuje použití lokálních nebo vzdálených úložišť. Pokud jsou členové týmu umístěni ve stejném fyzickém prostoru, můžete na pracovním serveru nastavit místní úložiště. Pokud jsou šířeny geograficky, můžete nastavit vzdálené úložiště. Pokud vám nevadí ostatní, kteří mají přístup ke čtení ve vašem vyvíjeném kódu, můžete použít sandbox na Drupal.org jako vzdálené úložiště. Můžete také použít oblast projektu na GitHub. GitHub není jen úložiště, ale přichází s některými nástroji pro spolupráci a umožňuje veřejné i soukromé úložiště.

Systém SCM v zásadě umožňuje členům týmu vytáhnout zdrojový kód a dokumentaci z úložiště sdílených členy týmu a po provedení práce na něm jej zasunout zpět. SCM sleduje změny a pokud dojde ke konfliktu (tj. Někdo se pokusí odeslat kód, který neobsahuje změny, které se jiný člen týmu dopustil), sdělí vám to a také navrhne způsob, jak tento konflikt vyřešit.

Obvykle, s nějakou srdečnou komunikací o tom, jak jsou úkoly rozděleny mezi členy týmu, nedojde ke konfliktům. Ale se systémem SCM, který sleduje věci, se konflikty stávají zvládnutelné, i když dojde k chybám nebo selhání komunikace.

Existuje mnoho návodů, jak začít s používáním git ​​(GIYF). Doporučuji dvě: git-scm web a Pro Git od Scott Chacon.

0
Free Radical