# repostack list

> 

列出 stack 中所有 repo 的当前 Git 状态。

```bash
repostack list
```

## 执行流程

<steps level="4">

#### **加载配置**- 读取 `repostack.yaml` 和 `.repostackrc`（如果启用了用户配置）。





#### **显示当前用户（如有）**- 如果 `.repostackrc` 指向了某个用户，在输出顶部打印一行 `[user: <name>]`。





#### **遍历所有 repo**- 对每个 repo 执行以下 Git 查询：

  - `git rev-parse --abbrev-ref HEAD` → 分支名
  - `git rev-parse HEAD` → 当前 revision（截取前 12 位）
  - `git status --short` → 判断是否有未提交改动





#### **输出表格**- 格式：`NAME\tBRANCH\tREVISION\tSTATUS`
- `STATUS` 为 `clean`（干净）或 `dirty`（有未提交修改）。





</steps>

## 涉及文件

| 文件               | 操作  |
| ---------------- | --- |
| `repostack.yaml` | 读取  |
| `.repostackrc`   | 读取  |
| 各 repo 的 Git 元数据 | 读取  |

## Git 操作

- `git rev-parse --abbrev-ref HEAD`
- `git rev-parse HEAD`
- `git status --short`

## 错误与边界情况

- 如果 repo 是**空仓库**（没有任何 commit），分支和 revision 都会显示为 `(no commits)`，而不是报错。
- 配置加载失败会导致命令直接中断。

## 输出示例

```text
NAME    BRANCH    REVISION    STATUS
foo     main      a79cd2d     clean
bar    main      1234567     dirty
```

## 示例

```bash
repostack list
```
