Skip to content

Commit 00a7368

Browse files
authored
[docs] Make merge logic table less confusing
1 parent 6adf141 commit 00a7368

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

_implementors/spec.md

+26-26
Original file line numberDiff line numberDiff line change
@@ -65,32 +65,32 @@ To apply the metadata together with a user's devcontainer.json at runtime, the f
6565

6666
| Property | Type/Format | Merge Logic | devcontainer.json | devcontainer-feature.json |
6767
| -------- | ----------- | ----------- | :---------------: | :--------------: |
68-
| `id` | E.g., `ghcr.io/devcontainers/features/node:1` | Not merged. | | x |
69-
| `init` | `boolean` | `true` if at least one is `true`, `false` otherwise. | x | x |
70-
| `privileged` | `boolean` | `true` if at least one is `true`, `false` otherwise. | x | x |
71-
| `capAdd` | `string[]` | Union of all `capAdd` arrays without duplicates. | x | x |
72-
| `securityOpt` | `string[]` | Union of all `securityOpt` arrays without duplicates. | x | x |
73-
| `entrypoint` | `string` | Collected list of all entrypoints. | | x |
74-
| `mounts` | `(string \| { type, src, dst })[]` | Collected list of all mountpoints. Conflicts: Last source wins. | x | x |
75-
| `onCreateCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all onCreateCommands. | x | x |
76-
| `updateContentCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all updateContentCommands. | x | x |
77-
| `postCreateCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postCreateCommands. | x | x |
78-
| `postStartCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postStartCommands. | x | x |
79-
| `postAttachCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postAttachCommands. | x | x |
80-
| `waitFor` | enum | Last value wins. | x | |
81-
| `customizations` | Object of tool-specific customizations. | Merging is left to the tools. | x | x |
82-
| `containerUser` | `string` | Last value wins. | x | |
83-
| `remoteUser` | `string` | Last value wins. | x | |
84-
| `userEnvProbe` | `string` (enum) | Last value wins. | x | |
85-
| `remoteEnv` | Object of strings. | Per variable, last value wins. | x | |
86-
| `containerEnv` | Object of strings. | Per variable, last value wins. | x | |
87-
| `overrideCommand` | `boolean` | Last value wins. | x | |
88-
| `portsAttributes` | Map of ports to attributes. | Per port (not per port attribute), last value wins. | x | |
89-
| `otherPortsAttributes` | Port attributes. | Last value wins (not per port attribute). | x | |
90-
| `forwardPorts` | `(number \| string)[]` | Union of all ports without duplicates. Last one wins (when mapping changes). | x | |
91-
| `shutdownAction` | `string` (enum) | Last value wins. | x | |
92-
| `updateRemoteUserUID` | `boolean` | Last value wins. | x | |
93-
| `hostRequirements` | `cpus`, `memory`, `storage`, `gpu` | Max value wins. | x | |
68+
| `id` | E.g., `ghcr.io/devcontainers/features/node:1` | Not merged. | | |
69+
| `init` | `boolean` | `true` if at least one is `true`, `false` otherwise. | | |
70+
| `privileged` | `boolean` | `true` if at least one is `true`, `false` otherwise. | | |
71+
| `capAdd` | `string[]` | Union of all `capAdd` arrays without duplicates. | | |
72+
| `securityOpt` | `string[]` | Union of all `securityOpt` arrays without duplicates. | | |
73+
| `entrypoint` | `string` | Collected list of all entrypoints. | | |
74+
| `mounts` | `(string \| { type, src, dst })[]` | Collected list of all mountpoints. Conflicts: Last source wins. | | |
75+
| `onCreateCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all onCreateCommands. | | |
76+
| `updateContentCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all updateContentCommands. | | |
77+
| `postCreateCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postCreateCommands. | | |
78+
| `postStartCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postStartCommands. | | |
79+
| `postAttachCommand` | `string \| string[] \| {[key: string]: string \| string[]}` | Collected list of all postAttachCommands. | | |
80+
| `waitFor` | enum | Last value wins. | | |
81+
| `customizations` | Object of tool-specific customizations. | Merging is left to the tools. | | |
82+
| `containerUser` | `string` | Last value wins. | | |
83+
| `remoteUser` | `string` | Last value wins. | | |
84+
| `userEnvProbe` | `string` (enum) | Last value wins. | | |
85+
| `remoteEnv` | Object of strings. | Per variable, last value wins. | | |
86+
| `containerEnv` | Object of strings. | Per variable, last value wins. | | |
87+
| `overrideCommand` | `boolean` | Last value wins. | | |
88+
| `portsAttributes` | Map of ports to attributes. | Per port (not per port attribute), last value wins. | | |
89+
| `otherPortsAttributes` | Port attributes. | Last value wins (not per port attribute). | | |
90+
| `forwardPorts` | `(number \| string)[]` | Union of all ports without duplicates. Last one wins (when mapping changes). | | |
91+
| `shutdownAction` | `string` (enum) | Last value wins. | | |
92+
| `updateRemoteUserUID` | `boolean` | Last value wins. | | |
93+
| `hostRequirements` | `cpus`, `memory`, `storage`, `gpu` | Max value wins. | | |
9494
{: .table .table-bordered .table-responsive}
9595

9696
Variables in string values will be substituted at the time the value is applied. When the order matters, the devcontainer.json is considered last.

0 commit comments

Comments
 (0)