
# Creazione

## Crea dall'host

```bash
wp rudel create --name=alpha --theme=twentytwentyfour
```

Rudel genera un ID dal nome seguito da quattro caratteri esadecimali (ad esempio `alpha-3be7`), clona le tabelle WordPress dell'host usando un prefisso di tabella generato, copia il tema selezionato nella directory della sandbox e registra la sandbox nel database WordPress dell'host. `siteurl` e `home` della sandbox mantengono URL dell'host.

Se si omette `--theme`, Rudel usa il tema attivo del sito host. Il tema deve essere installato sull'host. Un tema child porta con sé anche il tema padre.

Viene copiata ogni tabella con il prefisso delle tabelle dell'host, incluse `users` e `usermeta`, a eccezione delle tabelle proprie di Rudel. Nella versione corrente questo include anche le tabelle delle sandbox già esistenti, quindi ogni nuova sandbox è più grande della precedente. Vedi [issue #3](https://github.com/inline0/rudel/issues/3).

## Crea da un'altra sandbox

```bash
wp rudel create --name=feature-b --clone-from=alpha-3be7
```

La nuova sandbox riceve una copia di ogni tabella con il prefisso della sandbox sorgente, incluse le tabelle degli snapshot della sorgente, e del relativo tema. Le directory degli snapshot non vengono copiate, quindi quelle tabelle restano inutilizzate nella nuova sandbox ([issue #12](https://github.com/inline0/rudel/issues/12)). Se la directory del tema sorgente è un repository Git, Rudel crea un worktree collegato sul ramo `rudel/{new-id}` invece di una semplice copia. L'ID sorgente viene registrato nel nuovo record.

## Metadati del ciclo di vita

Le sandbox possono contenere metadati per la pulizia e la proprietà:

```bash
wp rudel create \
  --name=feature-a \
  --owner=dennis \
  --labels=agent,qa \
  --purpose="Test checkout changes" \
  --ttl-days=7
```

Usate `--protected` quando la pulizia automatica non deve rimuovere la sandbox. Vedi [Regole](https://rudel.inline0.dev/it/docs/features/policy).

## Limiti

La creazione non riesce se viene raggiunto il valore di `max_sandboxes` o `max_disk_mb`. Per impostazione predefinita, entrambi sono `0`, che significa nessun limite. Vedi [Configurazione](https://rudel.inline0.dev/it/docs/configuration).

## Checkout di Git

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

Rudel crea la sandbox, clona il repository remoto in `themes/my-theme` all'interno della directory della sandbox e sposta il checkout sul branch `rudel/{id}`. Aggiungete `--type=plugin` per clonare invece in `plugins/my-theme`. Se la clonazione non riesce, la sandbox rimane al suo posto e viene mostrato un avviso. Per sapere cosa la sandbox serve da quel checkout, consultate [Git](https://rudel.inline0.dev/it/docs/features/git).

## Struttura delle directory

```text
wp-content/rudel-environments/{id}/
  themes/       copied theme, plus any Git checkout
  snapshots/    snapshot metadata and theme copies
  logs/ metadata/ tmp/
  wp-cli.yml
  debug.log     when debug logging is active
```
