
# Git

A Rudel a PHP-natív Git műveleteket a Pitmaster segítségével végzi. Nincs szükség a gazdagép `git` binárisára. A távoli tárolók HTTP(S) vagy SSH útján érhetők el.

Minden sandboxhoz egyetlen ág tartozik: `rudel/{sandbox-id}`. Ezt használja az alábbi összes Git munkafolyamat.

## Távoli tároló klónozása új sandboxba

```bash
wp rudel create --name=feature-x --git=https://example.test/my-theme.git
```

A Rudel létrehozza a sandboxot, a távoli tárolót a sandbox könyvtárán belüli `themes/my-theme` helyre klónozza (a könyvtár neve a tároló neve lesz), létrehozza a `rudel/{id}` ágat az alapértelmezett ágból, majd átvált arra. A `--type=plugin` használatával a checkout helye `plugins/my-theme` lesz. A rendszer elmenti a távoli tárolót, a könyvtárat és az alapágat a sandboxhoz, hogy később lehessen rá feltölteni. Sikertelen klónozás esetén a sandbox megmarad, és a parancs figyelmeztetést jelenít meg.

A checkout az `wp rudel push` számára készült munkapéldány. A jelenlegi kiadás nem szolgálja ki ([11. számú probléma](https://github.com/inline0/rudel/issues/11)):

- A sandbox a `--theme` paranccsal kiválasztott témát, vagy a gazdagép aktív témáját szolgálja ki; a témát a létrehozáskor a gazdagépről másolja. A `--theme` értékének a gazdagépen telepített téma nevét kell megadnia, így a checkout csak akkor szolgálható ki, ha a tároló neve megegyezik ezzel a sluggal, és a klónozás a másolt témakönyvtárba ír.
- A bővítmények mindig a gazdagép bővítménykönyvtárából töltődnek be, ezért a `--type=plugin` checkout nem fut.

## Kapcsolt munkafák

Ha olyan sandboxot klónoz, amelynek témakönyvtára Git tároló, a Rudel fájlmásolás helyett kapcsolt munkafát hoz létre az új sandboxhoz:

```bash
wp rudel create --name=feature-y --clone-from=feature-x-3be7
```

A munkafa a `rudel/{new-id}` ágon található. A Rudel az új sandbox metaadataiban rögzíti, kifejezetten a sandboxazonosító, a tartalomtípus és a téma slugja alapján képzett munkafanév alatt, így az azonos téma slugot használó sandboxok nem ütköznek. A sandbox megsemmisítése eltávolítja a munkafát és törli annak ágát.

A `wp rudel cleanup --merged` csak ezeket a kapcsolt munkafákat veszi figyelembe. Lásd: [Takarítás](https://rudel.inline0.dev/hu/docs/features/cleanup).

## Változások feltöltése

```bash
wp rudel push feature-x-3be7 --message="Update checkout template"
```

A `push` minden módosítást véglegesít a checkoutban, majd feltölti a `rudel/{id}` ágat ide: `origin`. Ha nincs változás, a `No changes to push.` értékkel tér vissza.

- A `--git=<remote>` beállítja a távoli tárolót, ha még nincs eltárolva; az első sikeres feltöltés után megjegyzi.
- A `--dir=<dir>` választja ki a sandbox könyvtárához képesti könyvtárat, például: `themes/my-theme`. Alapértelmezés szerint a `--git` által eltárolt könyvtárat használja, ennek hiányában a teljes sandbox könyvtárat.
- A `--message` alapértelmezett értéke `Update from Rudel sandbox`.

A PHP környezetben a `Rudel::push( $id, $remote_url, $message, $subdir )` ugyanezt végzi, és meghívja a `rudel_*_environment_push` hookokat.

## Véglegesítési azonosító

Ha a checkout Git konfigurációjában nincs `user.name` vagy `user.email`, a Rudel beírja a `Rudel` és `rudel@localhost` értéket. Más értékek használatához definiálja a `RUDEL_GIT_AUTHOR_NAME` és `RUDEL_GIT_AUTHOR_EMAIL` változót a `wp-config.php` fájlban.
