
# 创建

## 从主机创建

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

Rudel 会根据名称生成一个 ID，并附加四个十六进制字符（例如 `alpha-3be7`），将主机的 WordPress 数据表克隆到生成的表前缀下，将所选主题复制到沙盒目录，并在主机的 WordPress 数据库中记录该沙盒。沙盒的 `siteurl` 和 `home` 会保留主机的 URL。

如果省略 `--theme`，Rudel 会使用主机站点当前启用的主题。该主题必须已安装在主机上。子主题会连同其父主题一起复制。

主机表前缀下的所有数据表都会被复制，包括 `users` 和 `usermeta`，但 Rudel 自身的数据表除外。在当前版本中，这也包括已有沙盒的数据表，因此每个新沙盒都会比上一个更大。参见 [问题 #3](https://github.com/inline0/rudel/issues/3)。

## 从另一个沙盒创建

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

新沙盒会复制源沙盒前缀下的每个数据表（包括源沙盒的快照表）以及其主题。快照目录不会复制，因此这些数据表在新沙盒中不会使用（[问题 #12](https://github.com/inline0/rudel/issues/12)）。如果源主题目录是一个 Git 仓库，Rudel 会在分支 `rudel/{new-id}` 上创建关联工作树，而不是普通副本。源 ID 会记录在新记录中。

## 生命周期元数据

沙盒可以携带用于清理和归属管理的元数据：

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

如果自动清理不得移除该沙盒，请使用 `--protected`。参见 [策略](https://rudel.inline0.dev/zh/docs/features/policy)。

## 限制

达到 `max_sandboxes` 或 `max_disk_mb` 设置时，创建会失败。两者默认均为 `0`，表示不设限制。参见 [配置](https://rudel.inline0.dev/zh/docs/configuration)。

## Git 检出

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

Rudel 会创建沙盒，将远程仓库克隆到沙盒目录中的 `themes/my-theme`，并将检出切换到分支 `rudel/{id}`。添加 `--type=plugin` 可改为克隆到 `plugins/my-theme`。克隆失败时，沙盒仍会保留，并会打印警告。有关沙盒从该检出提供的内容，请参见 [Git](https://rudel.inline0.dev/zh/docs/features/git)。

## 目录布局

```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
```
