# swarmops land-group

> Release: 0.11.0 · Last changed: 2026-11-09 · Source: https://github.com/KeiaiLab/SwarmOps/blob/stable/docs/reference/commands/land-group.md

Land changes in order onto a ref as one operation: one changeset each, one move.

Each HEAD, with its first-parent chain since its merge base with the ref's head, is merged onto what the clean ones before it make, as land-check plans them. The clean ones are recorded as a chain of landed changesets, each on the one before, with one move of the ref to the last: one operation in op log, all of it or none after a crash. A conflicting change is reported, as land reports it, and passed over; one with nothing to land lands nothing. With no clean change it is E\_NOTHING\_TO\_LAND, each change's outcome in details.items. A ref that moves after the plan makes it plan again.

```yaml
title: "swarmops land-group"
description: "Land changes in order onto a ref as one operation: one changeset each, one move."
group: "write"
since: "0.11.0"
mutates: true
identity_required: true
mcp_tool: "land_group"
envelope_op: "land_group"
exit_codes: [0]
errors: []
syntax: "swarmops land-group [OPTIONS] <HEAD>..."
```

## Syntax

```text
swarmops land-group [OPTIONS] <HEAD>...
```

## Required arguments

### `HEAD`

Syntax: `<HEAD>`.

The changes' heads, in the order they land: 1 to 32.

## Optional arguments

The command also takes the [global options](../cli.md#global-options).

### `--onto`

Syntax: `--onto <REF>`.
Default: `main`.

The ref they land on: main or a release ref (release/NAME).

### `--max-attempts`

Syntax: `--max-attempts <N>`.
Default: `8`.

How many times to plan and publish before E\_CAS\_RETRY\_EXHAUSTED: 1 to 32.

### `--max-conflict-bytes`

Syntax: `--max-conflict-bytes <N>`.
Default: `32768`.

The most bytes of hunk text each conflicting change's report carries, as land's.

## Examples

### CLI

No recorded example yet.

### MCP

No recorded example yet.

## Return information

`result` is a `LandGroupResp` (`swarmops schema LandGroupResp` prints its JSON Schema).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `attempts` | `integer` | yes | How many times the group planned and published. |
| `head` | `string` | yes | The last landed changeset: what the target names now. |
| `items` | `array of LandGroupItemOut` | yes | Each change's outcome, in the request's order. |
| `op` | `integer` | yes | The operation that recorded the chain and the move: its number in `op_log`. |
| `rebased_onto` | `string` | yes | The target's head the chain landed on: the first landed changeset's parent. |
| `target` | `string` | yes | The ref the changes landed on. |
| `warnings` | `array of string` | no | Problems found after the chain became durable; the land itself succeeded. Omitted when empty. |

Envelope `op`: `land_group`.

Exit codes:

- `0`: Success.

## Errors

No golden step shows this command failing yet.

Any command that opens a store may also fail with a store error, such as [`E_NOT_A_REPO`](../errors.md#e_not_a_repo), [`E_IO`](../errors.md#e_io) or [`E_STORE_CORRUPT`](../errors.md#e_store_corrupt); a command line the grammar refuses is [`E_INVALID_ARG`](../errors.md#e_invalid_arg) (exit 2).

## See also

- [`swarmops commit`](commit.md)
- [`swarmops land`](land.md)
- [`swarmops land-check`](land-check.md)
- [`swarmops rebase`](rebase.md)
- [`swarmops revert`](revert.md)
- [`swarmops blob put`](blob-put.md)
- [`swarmops blob has`](blob-has.md)
- [CLI reference](../cli.md)
- [Error codes](../errors.md)
