Přispívání do kódu

Nette Framework používá Git a GitHub jako úložiště pro kód. Nejlepší způsob, jak přispět, je provést změny ve vaší větvi a poté poslat pull request (PR) na GitHub. Tento dokument shrnuje hlavní kroky jak na to.

Příprava prostředí

Nejprve si forkněte Nette z GitHubu. Pečlivě nastavte prostředí Gitu, nakonfigurovat své uživatelské jméno a e-mail, tyto údaje vás budou identifikovat v historii změn kódu.

Editace kódu

Než začnete programovat, vytvořte si novou větev.

git checkout -b new_branch_name

A můžete začít upravovat kód.

Testování změn

Nainstalujte si Nette Tester. Nejjednodušší je zavolat composer install v kořenovém adresáři repositáře. Nyní byste měli být schopni spustit testy pomocí ./vendor/bin/tester v Unixovém terminálu nebo vendor\bin\tester v terminálu pod Windows.

Některé testy mohou selhat kvůli chybějícímu php.ini. Proto byste měli volat Tester s parametrem -c a zadat cestu k php.ini, například ./vendor/bin/tester -c ./tests/php.ini.

Poté, co funguje spouštění testů, můžete implementovat vlastní změny v kódu. Další informace o testování pomocí nástroje Nette Tester najdete v jeho dokumentaci.

Coding Standards

Váš kód musí splňovat coding standard používaný v Nette Framework. Je to snadné, protože existuje automatický nástroj pro kontrolu a opravu kódu. Vyžaduje PHP 7.1 a lze jej nainstalovat přes Composer do vámi zvolené globální složky:

composer create-project nette/coding-standard /path/to/nette-coding-standard

Nyní byste měli mít možnost spustit nástroj v terminálu. Tímto příkazem například zkontrolujete a opravíte kód ve složkách src a tests v aktuálním adresáři:

/path/to/nette-coding-standard/ecs fix src tests --config /path/to/nette-coding-standard/coding-standard-php71.neon

Pokud vytváříte kód pro PHP 5.6 (tj. pro Nette 2.4), použijte coding-standard-php56.neon namísto code-standard-php71.neon.

Komitování změn

Po úpravě kódu jej tzv. komitujete. Komitů klidně vytvořte několik, pro každý logický krok jeden. Každý commit by měl být smysluplný sám o sobě. Měl by zahrnovat i testy.

Zkontrolujte prosím, zda váš kód odpovídá pravidlům:

  • Kód nevytváří žádné chyby
  • Neporušuje žádné testy.
  • Změny v kódu jsou testované.
  • Neděláte zbytečné změny v bílém prostoru.

Popis komitu by měl odpovídat formátu Latte: fixed multi-template rendering [Closes #69], tj.

  • oblast následovaná dvojtečkou
  • účel commitu v minulém čase, je-li to možné, začněte slovem: added, fixed, refactored, changed, removed
  • případná vazba na issue tracker
  • pokud commit přeruší zpětnou kompatibilitu, doplňte „BC break“
  • za subjektem může být jeden volný řádek a podrobnější popis včetně odkazů na fórum.

Posílání Pull requestu

Pokud jste se změnami spokojeni, odešlete je na GitHub.

git push původu new_branch_name

Kód už je veřejně dostupný, ale musíte je odeslat do hlavní větve (masteru) v repozitáři Nette. Udělejte tzv. pull request Každá žádost má název a popis. Uveďte prosím výstižný název. Například „Zabezpečení signálů proti útoku CSRF“.

Popis pull requestu by měl obsahovat další specifické informace:

- bug fix? yes/no   <!-- #issue numbers, if any -->
- new feature? yes/no
- BC break? yes/no
- doc PR: nette/docs#???  <!-- highly welcome, see https://nette.org/en/writing -->

Upravte prosím tabulku informací tak, aby odpovídala vašemu pull requestu.

  • uveďte, jestli jde o novou funkci, nebo o bugfix
  • odkažte na případnou související issue, která bude uzavřena po schválení pull requestu.
  • uveďte, zda požadavek potřebuje dokumentační změny, pokud ano, uveďte odkazy na příslušné issue. Změnu dokumentace nemusíte dělat okamžitě, ale pull request nebude přijat, pokud je zapotřebí změnit dokumentaci. Změna dokumentace musí být připravena pro anglickou dokumentaci, jiné jazykové mutace jsou nepovinné.
  • uveďte, zda změna v kódu způsobí BC break. Vezměte prosím v úvahu všechno, co jej může způsobit.

Konečná tabulka by mohla vypadat takto:

- bug fix? no
- new feature? yes   issue #123
- BC break? no

Přepracování změn

Je běžné, že budete dostávat komentáře s připomínkami. Sledujte navrhované změny a zapracujte je. Navrhované změny můžete přidávat jako nové commity a sloučit je s předchozími. Viz kapitola Interactive rebase na stránce GitHubu. Poté opět odešlete commity na GitHub a vše se automaticky objeví v pull requestu.