Přizpůsobení aplikace
Tento článek popisuje postup, když potřebujete upravit existující katalogovou aplikaci v CHESTER SDK. Vývojář to může udělat několika způsoby, ale cílem tohoto článku je ukázat proces, který představuje co nejmenší tření, když vývojář potřebuje držet krok s aktualizacemi CHESTER SDK.
Vytvoření forku aplikace
Tato kapitola vás provede procesem, jak vytvořit fork katalogové aplikace. Jako příklad použijeme katalogovou aplikaci CHESTER Current, ale postup lze aplikovat na cokoliv v CHESTER SDK – klidně vylepšete i ovladače přímo ve stromu zdrojových kódů.
Pokud je vaše změna dostatečně obecná a věříte, že by z ní mohl mít prospěch kdokoliv, promluvte si s námi o jejím začlenění do upstreamu. Vystavení vašeho kódu širšímu publiku přináší výhodu potenciálně vyšší míry testování a velmi pravděpodobně budete mít ruce volné od jeho další údržby.
Tento postup je založen na naklonování repozitáře Git a vytvoření vlastní větve Git z větve main (lokální větev main bude synchronizována s větví main ze vzdáleného serveru CHESTER SDK).
Níže je minimalizovaná sada příkazů převzatá z instalačního postupu CHESTER SDK na Ubuntu. Jediný rozdíl je v tom, že jako výchozí bod NEPOUŽÍVÁME repozitář Git skeleton, ale jako kořenový repozitář používáme samotné CHESTER SDK.
-
Nastavte pracovní prostor West s CHESTER SDK:
mkdir chester-app && cd chester-apppython3 -m venv venvsource venv/bin/activatepip install --upgrade pippip install westwest init -m git@github.com:hardwario/chester-sdk.git --manifest-rev mainwest config build.board chesterwest updatewest packages pip --installwest zephyr-exportwest sdk install -t arm-zephyr-eabi -
Přepněte se do adresáře repozitáře CHESTER SDK:
cd chester -
V tomto repozitáři Git změňte Git remote s názvem
origin, který ukazuje na HARDWARIO, naupstream:git remote rename origin upstreamtipDěláme to proto, že v následujících krocích nastavíme jako
originváš vlastní Git remote. -
Na firemním Git serveru vytvořte prázdný repozitář (např.
chester-sdk). -
Přidejte SSH cestu k firemnímu Git serveru jako nový remote
origin:git remote add origin git@gitlab.awesome-company.com:chester-sdk.gitcautionPříkaz výše jen tak nekopírujte – adresu nahraďte tou skutečnou, kterou poskytuje váš Git server.
-
Odešlete větev
mainnedávno inicializovaného repozitáře CHESTER SDK na svůj remote:git push origin main -
Vytvořte novou větev Git pro vylepšenou aplikaci CHESTER Current:
git switch -c awesome-company/current -
Implementujte požadované změny (např. v adresáři
chester/application/current).tipVýsledkem bude jeden až mnoho nových commitů nad větví
awesome-company/current. -
Odešlete změny ve své větvi Git na svůj Git remote:
git push origin awesome-company/current
V tuto chvíli budete mít ve svém lokálním repozitáři (na disku) i na svém Git serveru větev main, která kopíruje větev main z CHESTER SDK hostovaného na GitLab od HARDWARIO. Kromě toho budete mít na svém Git remote, označovaném jako origin, novou větev Git s požadovanými změnami.
Aktualizace vaší aplikace
Doporučujeme pravidelně synchronizovat změny vlastní aplikace s nejnovější verzí CHESTER SDK. Následující kroky vás provedou postupem aktualizace.
-
Za předpokladu, že jste ve větvi Git
awesome-company/current, získejte nejnovější změny v CHESTER SDK:git fetch upstream main:maintipV tuto chvíli může větev
mainobdržet několik nových commitů Git. -
Nyní můžete svou větev přerovnat (rebase) na nejnovější změny ve větvi
main:git rebase maintipVaše commity Git budou přehrány nad commity z větve
main.cautionObčas mohou být nedávné aktualizace v CHESTER SDK v konfliktu s vašimi změnami. Pokud Git nedokáže konflikty vyřešit automaticky, provede vás jejich řešením. Pokud jste vytvořili více commitů Git, můžete je řešit jeden po druhém. Z tohoto důvodu je někdy jednodušší udržovat své změny jako jediný commit, pokud má změna rozumnou velikost.
-
V dalším kroku odešlete svou větev s nedávnými aktualizacemi na svůj Git remote:
git push origin awesome-company/current -ftipVšimněte si parametru
-f(force) na konci příkazu. Je to proto, že historie Git byla přepsána příkazemgit rebasea vaše lokální větev se rozešla s vaší vzdálenou větví. Tento parametr říká vzdálenému serveru Git, aby vynutil přepsání větve.
Výše uvedený postup by vám měl pomoci udržet vaši práci synchronizovanou s CHESTER SDK. Na svou práci můžete pohlížet jako na sadu patchů, které se přehrávají nad větví main CHESTER SDK.