Skip to content

Commit 9857f1b

Browse files
committed
docs(dotfiles-sync): πŸ“ add operational notes for bind-mounts and startup risks
1 parent 8fc0350 commit 9857f1b

5 files changed

Lines changed: 16 additions & 145 deletions

File tree

β€Žsrc/dotfiles-sync/README.mdβ€Ž

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Dotfiles Sync (dotfiles-sync)
22

3-
Syncs local Git, SSH, GPG, npm, gh, cargo, pip, yarn/pnpm config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker, gh OAuth token) β€” opt-in only. Works on macOS, Linux, Windows (WSL and native), GitHub Codespaces, Gitpod, and DevPod. Uses a **merge strategy** for established files and a **copy-if-absent** strategy for new ones β€” never overwrites existing values, safe alongside cloud platform native auth and GPG signing.
3+
Syncs local Git, SSH, GPG, npm, and yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker) β€” opt-in only. Works on macOS, Linux, Windows (WSL and native), GitHub Codespaces, Gitpod, and DevPod. Uses a **merge strategy** for established files and a **copy-if-absent** strategy for new ones β€” never overwrites existing values, safe alongside cloud platform native auth and GPG signing.
44

55
## Usage
66

@@ -33,7 +33,6 @@ That's it. The feature auto-detects the environment and adapts its behavior.
3333
| Option | Type | Default | Description |
3434
|--------|------|---------|-------------|
3535
| `username` | string | `node` | Container username that receives synchronized config files |
36-
| `syncGhAuth` | boolean | `false` | Copy `~/.config/gh/hosts.yml` (GitHub OAuth token used by `gh` CLI) into the container's `$HOME`. Skipped on cloud environments (Codespaces / Gitpod / DevPod inject their own token). When `false`, the file is bind-mounted into `/mnt/h4dotfiles` (Feature `mounts` cannot be conditional) but **never copied** to `$HOME` and never read by anything else. Prefer the [`github-dev`](../github-dev/) feature with `GH_TOKEN` for fine-grained PATs. |
3736
| `syncAwsConfig` | boolean | `false` | Sync `~/.aws/config` (profiles only β€” `~/.aws/credentials` is **never** synced). |
3837
| `syncKubeConfig` | boolean | `false` | Sync `~/.kube/config` (cluster credentials and tokens). Skipped on cloud environments. |
3938
| `syncDockerConfig` | boolean | `false` | Sync `~/.docker/config.json` (registry auth tokens). Skipped on cloud environments. |
@@ -45,24 +44,23 @@ That's it. The feature auto-detects the environment and adapts its behavior.
4544
| Local Path | Final Target | Strategy | Purpose |
4645
|------------|--------------|----------|---------|
4746
| `~/.gitconfig` | `~/.gitconfig` | Merge via `git config` | Git user configuration |
48-
| `~/.gitignore_global` | `~/.gitignore_global` | Copy-if-absent | Personal global gitignore |
4947
| `~/.config/git/ignore` | `~/.config/git/ignore` | Copy-if-absent | XDG global gitignore |
5048
| `~/.config/git/attributes` | `~/.config/git/attributes` | Copy-if-absent | XDG global gitattributes |
5149
| `~/.config/git/config-*` | `~/.config/git/config-*` | Copy-if-absent | Modular git includes |
5250
| `~/.ssh` | `~/.ssh` | Per-file merge | SSH keys, config, known_hosts |
5351
| `~/.gnupg` | `~/.gnupg` | Copy-if-absent (skipped on cloud) | GPG keys for commit signing |
5452
| `~/.npmrc` | `~/.npmrc` | Merge line-by-line | npm registry auth |
5553
| `~/.yarnrc.yml` | `~/.yarnrc.yml` | Copy-if-absent | yarn registries / settings |
56-
| `~/.config/pnpm/rc` | `~/.config/pnpm/rc` | Copy-if-absent | pnpm settings |
57-
| `~/.config/gh/config.yml` | `~/.config/gh/config.yml` | Copy-if-absent | gh CLI preferences (no token) |
58-
| `~/.cargo/config.toml` | `~/.cargo/config.toml` | Copy-if-absent | Cargo registries / profiles |
59-
| `~/.config/pip/pip.conf` | `~/.config/pip/pip.conf` | Copy-if-absent | pip index URLs |
6054

6155
### Opt-in (sensitive)
6256

57+
**Operational note β€” bind-mounts are unconditional:** DevContainer Feature `mounts` cannot be gated on option values. The files below are always bind-mounted into `/mnt/h4dotfiles` at container start, regardless of the option value. The option only controls whether `sync-files.sh` copies the staged file into `$HOME`. Consequences:
58+
59+
- **Startup failure risk** β€” Docker file bind-mounts fail hard if the source path does not exist on the host. If you don't have `~/.aws/config`, `~/.kube/config`, or `~/.docker/config.json`, the container will fail to start even if the corresponding option is `false`. Create the file (it can be empty) to unblock startup.
60+
- **Data visible in staging** β€” even when the option is `false`, the host file is accessible inside the container at `/mnt/h4dotfiles/<path>`. Nothing reads that path unless the option is enabled, but if your threat model requires full isolation, do not use the feature for that credential.
61+
6362
| Local Path | Option | Notes |
6463
|------------|--------|-------|
65-
| `~/.config/gh/hosts.yml` | `syncGhAuth` | GitHub OAuth token used by `gh`. The file is bind-mounted into `/mnt/h4dotfiles` unconditionally (Feature `mounts` cannot be gated on options) but **only copied to `$HOME` when `syncGhAuth: true`**. Skipped on cloud environments. For fine-grained PATs, prefer [`github-dev`](../github-dev/) + `GH_TOKEN`. |
6664
| `~/.aws/config` | `syncAwsConfig` | AWS profiles. `~/.aws/credentials` (long-lived access keys) is **not bind-mounted** and never synced. |
6765
| `~/.kube/config` | `syncKubeConfig` | Kubernetes cluster credentials. Skipped on cloud environments. |
6866
| `~/.docker/config.json` | `syncDockerConfig` | Docker registry auth tokens. Skipped on cloud environments. |
@@ -74,7 +72,7 @@ That's it. The feature auto-detects the environment and adapts its behavior.
7472

7573
## GitHub authentication
7674

77-
`gh` CLI authentication is **off by default**. Pick whichever fits your workflow:
75+
`gh` CLI authentication is not managed by this feature. Pick whichever fits your workflow:
7876

7977
1. **`github-dev` feature + `GH_TOKEN`** (recommended for fine-grained scope):
8078

@@ -90,23 +88,7 @@ That's it. The feature auto-detects the environment and adapts its behavior.
9088
}
9189
```
9290

93-
2. **Sync your local `gh auth login` token** (`syncGhAuth: true`):
94-
95-
```jsonc
96-
{
97-
"features": {
98-
"ghcr.io/helpers4/devcontainer/dotfiles-sync:1": {
99-
"syncGhAuth": true
100-
}
101-
}
102-
}
103-
```
104-
105-
The token is copied with `chmod 600` and only if `~/.config/gh/hosts.yml` does not already exist in the container. Skipped on Codespaces / Gitpod / DevPod (the platform injects its own token).
106-
107-
**Security note** β€” because DevContainer Feature `mounts` cannot be conditional on options, `~/.config/gh/hosts.yml` is bind-mounted into `/mnt/h4dotfiles/.config/gh/hosts.yml` whether or not you opt in. Nothing reads that path unless `syncGhAuth: true`, but if your threat model considers any in-container exposure unacceptable, use approach 1 or 3 instead.
108-
109-
3. **`gh auth login` inside the container** β€” token stays in the container only.
91+
2. **`gh auth login` inside the container** β€” token stays in the container only.
11092

11193
## Merge Strategy
11294

@@ -118,7 +100,7 @@ That's it. The feature auto-detects the environment and adapts its behavior.
118100
| `.ssh/known_hosts` | Appends host entries not already present |
119101
| `.ssh` keys | Copies files only if destination does not exist |
120102
| `.gnupg` | Copied on local/WSL; **skipped on cloud environments** (see below) |
121-
| All other files (gitignore_global, gh/config.yml, cargo, pip, yarn, pnpm, …) | **Copy-if-absent** β€” never overwrites an existing target |
103+
| All other files (git/ignore, git/attributes, yarnrc.yml, …) | **Copy-if-absent** β€” never overwrites an existing target |
122104

123105
### Cloud environment protection
124106

@@ -253,6 +235,7 @@ ssh-add -l
253235
254236
## Version History
255237

238+
- **v1.0.4**: Removed bind-mounts for files that are frequently absent on host machines and have little value inside a devcontainer: `~/.gitignore_global` (redundant with `~/.config/git/` directory mount), `~/.config/pnpm/rc` (pnpm store-dir is counter-productive in a container), `~/.config/gh/config.yml` and `~/.config/gh/hosts.yml` (gh CLI auth managed separately), `~/.cargo/config.toml` (cargo not relevant in most containers), `~/.config/pip/pip.conf` (too environment-specific). Docker file bind-mounts fail hard if the source path doesn't exist on the host, which was causing containers to fail to start. The `syncGhAuth` option is removed.
256239
- **v1.0.3**: Fixed incompatibility with `docker-in-docker` feature β€” staging directory moved from `/tmp/dotfiles-sync/` to `/mnt/h4dotfiles/` to avoid being hidden by the tmpfs that `docker-in-docker` mounts on `/tmp` at container start.
257240
- **v1.0.2**: Added `syncGhAuth` opt-in to copy `~/.config/gh/hosts.yml` (GitHub OAuth token used by `gh` CLI) into `$HOME`. Default `false`, skipped on cloud environments. The file is bind-mounted into `/tmp/dotfiles-sync/` regardless (Feature `mounts` cannot be conditional) but only copied to `$HOME` when the option is enabled. For fine-grained PATs prefer the `github-dev` feature with `GH_TOKEN`.
258241
- **v1.0.1**: Stop bind-mounting the `~/.config/gh` directory. Only `~/.config/gh/config.yml` (CLI preferences) is mounted. Added 3 opt-in booleans for sensitive files: `syncAwsConfig`, `syncKubeConfig`, `syncDockerConfig` β€” all default `false` and skipped on cloud environments. Added low-risk dotfiles (gitignore_global, git/ignore, git/attributes, yarnrc.yml, pnpm/rc, cargo/config.toml, pip/pip.conf) with copy-if-absent strategy. `~/.aws/credentials` is never bind-mounted.

β€Žsrc/dotfiles-sync/devcontainer-feature.jsonβ€Ž

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
{
22
"id": "dotfiles-sync",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"name": "Dotfiles Sync",
5-
"description": "Syncs local Git, SSH, GPG, npm, gh CLI prefs, cargo, pip, pnpm/yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker, gh OAuth token) β€” opt-in only. Works on macOS, Linux, Windows (WSL), Codespaces, Gitpod, DevPod. Merges instead of overwriting.",
5+
"description": "Syncs local Git, SSH, GPG, npm, yarn config files into the devcontainer. Optionally syncs cloud credentials (AWS, kube, Docker) β€” opt-in only. Works on macOS, Linux, Windows (WSL), Codespaces, Gitpod, DevPod. Merges instead of overwriting.",
66
"documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/dotfiles-sync",
77
"options": {
88
"username": {
99
"type": "string",
1010
"default": "node",
1111
"description": "Username in the container that should receive synchronized local config files"
1212
},
13-
"syncGhAuth": {
14-
"type": "boolean",
15-
"default": false,
16-
"description": "Sync ~/.config/gh/hosts.yml (GitHub OAuth token used by gh CLI). Skipped on cloud environments (Codespaces/Gitpod/DevPod inject their own token). Prefer the github-dev feature with GH_TOKEN for fine-grained PATs."
17-
},
1813
"syncAwsConfig": {
1914
"type": "boolean",
2015
"default": false,
@@ -37,11 +32,6 @@
3732
"target": "/mnt/h4dotfiles/.gitconfig",
3833
"type": "bind"
3934
},
40-
{
41-
"source": "${localEnv:HOME}/.gitignore_global",
42-
"target": "/mnt/h4dotfiles/.gitignore_global",
43-
"type": "bind"
44-
},
4535
{
4636
"source": "${localEnv:HOME}/.config/git",
4737
"target": "/mnt/h4dotfiles/.config/git",
@@ -67,31 +57,6 @@
6757
"target": "/mnt/h4dotfiles/.yarnrc.yml",
6858
"type": "bind"
6959
},
70-
{
71-
"source": "${localEnv:HOME}/.config/pnpm/rc",
72-
"target": "/mnt/h4dotfiles/.config/pnpm/rc",
73-
"type": "bind"
74-
},
75-
{
76-
"source": "${localEnv:HOME}/.config/gh/config.yml",
77-
"target": "/mnt/h4dotfiles/.config/gh/config.yml",
78-
"type": "bind"
79-
},
80-
{
81-
"source": "${localEnv:HOME}/.config/gh/hosts.yml",
82-
"target": "/mnt/h4dotfiles/.config/gh/hosts.yml",
83-
"type": "bind"
84-
},
85-
{
86-
"source": "${localEnv:HOME}/.cargo/config.toml",
87-
"target": "/mnt/h4dotfiles/.cargo/config.toml",
88-
"type": "bind"
89-
},
90-
{
91-
"source": "${localEnv:HOME}/.config/pip/pip.conf",
92-
"target": "/mnt/h4dotfiles/.config/pip/pip.conf",
93-
"type": "bind"
94-
},
9560
{
9661
"source": "${localEnv:HOME}/.aws/config",
9762
"target": "/mnt/h4dotfiles/.aws/config",

β€Žsrc/dotfiles-sync/install.shβ€Ž

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
set -e
1212

1313
USERNAME="${_BUILD_ARG_USERNAME:-"${USERNAME:-"node"}"}"
14-
SYNC_GH_AUTH="${_BUILD_ARG_DOTFILES_SYNC_SYNCGHAUTH:-"${SYNCGHAUTH:-"false"}"}"
1514
SYNC_AWS_CONFIG="${_BUILD_ARG_DOTFILES_SYNC_SYNCAWSCONFIG:-"${SYNCAWSCONFIG:-"false"}"}"
1615
SYNC_KUBE_CONFIG="${_BUILD_ARG_DOTFILES_SYNC_SYNCKUBECONFIG:-"${SYNCKUBECONFIG:-"false"}"}"
1716
SYNC_DOCKER_CONFIG="${_BUILD_ARG_DOTFILES_SYNC_SYNCDOCKERCONFIG:-"${SYNCDOCKERCONFIG:-"false"}"}"
@@ -28,7 +27,6 @@ echo "Setting up dotfiles-sync devcontainer feature..."
2827
echo " Container user: ${USERNAME}"
2928
echo " Home directory: ${TARGET_HOME}"
3029
echo " Mount staging: ${SOURCE_HOME}"
31-
echo " Sync gh auth: ${SYNC_GH_AUTH}"
3230
echo " Sync AWS config: ${SYNC_AWS_CONFIG}"
3331
echo " Sync kube config: ${SYNC_KUBE_CONFIG}"
3432
echo " Sync Docker config: ${SYNC_DOCKER_CONFIG}"
@@ -42,10 +40,6 @@ mkdir -p \
4240
"${TARGET_HOME}/.ssh" \
4341
"${TARGET_HOME}/.gnupg" \
4442
"${TARGET_HOME}/.config/git" \
45-
"${TARGET_HOME}/.config/gh" \
46-
"${TARGET_HOME}/.config/pip" \
47-
"${TARGET_HOME}/.config/pnpm" \
48-
"${TARGET_HOME}/.cargo" \
4943
"${TARGET_HOME}/.aws" \
5044
"${TARGET_HOME}/.kube" \
5145
"${TARGET_HOME}/.docker" 2>/dev/null || true
@@ -57,7 +51,6 @@ if getent passwd "${USERNAME}" >/dev/null 2>&1; then
5751
"${TARGET_HOME}/.ssh" \
5852
"${TARGET_HOME}/.gnupg" \
5953
"${TARGET_HOME}/.config" \
60-
"${TARGET_HOME}/.cargo" \
6154
"${TARGET_HOME}/.aws" \
6255
"${TARGET_HOME}/.kube" \
6356
"${TARGET_HOME}/.docker" \
@@ -77,7 +70,6 @@ cat > /usr/local/share/dotfiles-sync/config << CONF_EOF
7770
DOTFILES_SYNC_USERNAME="${USERNAME}"
7871
DOTFILES_SYNC_SOURCE="${SOURCE_HOME}"
7972
DOTFILES_SYNC_TARGET="${TARGET_HOME}"
80-
DOTFILES_SYNC_GH_AUTH="${SYNC_GH_AUTH}"
8173
DOTFILES_SYNC_AWS_CONFIG="${SYNC_AWS_CONFIG}"
8274
DOTFILES_SYNC_KUBE_CONFIG="${SYNC_KUBE_CONFIG}"
8375
DOTFILES_SYNC_DOCKER_CONFIG="${SYNC_DOCKER_CONFIG}"
@@ -152,16 +144,11 @@ echo " Shell start -> SSH_AUTH_SOCK detection + sync fallback"
152144
echo ""
153145
echo "Targets:"
154146
echo " Git config -> ${TARGET_HOME}/.gitconfig"
155-
echo " Git ignore/attrs -> ${TARGET_HOME}/.gitignore_global, ${TARGET_HOME}/.config/git/"
147+
echo " Git ignore/attrs -> ${TARGET_HOME}/.config/git/"
156148
echo " SSH keys -> ${TARGET_HOME}/.ssh/"
157149
echo " GPG keys -> ${TARGET_HOME}/.gnupg/"
158150
echo " npm tokens -> ${TARGET_HOME}/.npmrc"
159151
echo " yarn config -> ${TARGET_HOME}/.yarnrc.yml"
160-
echo " pnpm config -> ${TARGET_HOME}/.config/pnpm/rc"
161-
echo " gh CLI prefs -> ${TARGET_HOME}/.config/gh/config.yml"
162-
echo " gh OAuth token -> ${TARGET_HOME}/.config/gh/hosts.yml [opt-in: ${SYNC_GH_AUTH}]"
163-
echo " cargo config -> ${TARGET_HOME}/.cargo/config.toml"
164-
echo " pip config -> ${TARGET_HOME}/.config/pip/pip.conf"
165152
echo " AWS profiles -> ${TARGET_HOME}/.aws/config [opt-in: ${SYNC_AWS_CONFIG}]"
166153
echo " kube config -> ${TARGET_HOME}/.kube/config [opt-in: ${SYNC_KUBE_CONFIG}]"
167154
echo " Docker auth -> ${TARGET_HOME}/.docker/config.json [opt-in: ${SYNC_DOCKER_CONFIG}]"

β€Žsrc/dotfiles-sync/sync-files.shβ€Ž

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,11 @@
1919
# .gnupg -> skipped on cloud environments (GPG handled natively there).
2020
# known_hosts -> merge line-by-line (append missing host entries).
2121
# ── extra files (v1.0.1+) β€” copy-if-absent strategy:
22-
# .gitignore_global, .config/git/{ignore,attributes,config-*}
23-
# .yarnrc.yml, .config/pnpm/rc, .cargo/config.toml, .config/pip/pip.conf
24-
# .config/gh/config.yml -> copy-if-absent (CLI preferences only)
25-
# .config/gh/hosts.yml -> opt-in (DOTFILES_SYNC_GH_AUTH), skipped on cloud env
22+
# .config/git/{ignore,attributes,config-*}, .yarnrc.yml
2623
# .aws/config -> opt-in (DOTFILES_SYNC_AWS_CONFIG)
2724
# .kube/config -> opt-in (DOTFILES_SYNC_KUBE_CONFIG)
2825
# .docker/config.json -> opt-in (DOTFILES_SYNC_DOCKER_CONFIG)
2926
#
30-
# NOTE: ~/.config/gh/hosts.yml (GitHub OAuth token) is NOT synced by default.
31-
# Enable `syncGhAuth: true` to opt in (skipped on Codespaces/Gitpod/DevPod
32-
# which inject their own token). For fine-grained PATs, prefer the github-dev
33-
# feature with GH_TOKEN, or run `gh auth login` once in the container.
34-
3527
# No set -e: sync as much as possible even if one part fails.
3628

3729
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
@@ -48,7 +40,6 @@ fi
4840
USERNAME="${DOTFILES_SYNC_USERNAME}"
4941
SOURCE_HOME="${DOTFILES_SYNC_SOURCE}"
5042
TARGET_HOME="${DOTFILES_SYNC_TARGET}"
51-
SYNC_GH_AUTH="${DOTFILES_SYNC_GH_AUTH:-false}"
5243
SYNC_AWS_CONFIG="${DOTFILES_SYNC_AWS_CONFIG:-false}"
5344
SYNC_KUBE_CONFIG="${DOTFILES_SYNC_KUBE_CONFIG:-false}"
5445
SYNC_DOCKER_CONFIG="${DOTFILES_SYNC_DOCKER_CONFIG:-false}"
@@ -332,8 +323,6 @@ _copy_if_absent() {
332323
fi
333324
}
334325

335-
# ── Sync .gitignore_global ────────────────────────────────────────────────────
336-
_copy_if_absent ".gitignore_global" ".gitignore_global" "644"
337326

338327
# ── Sync ~/.config/git/{ignore,attributes,config-*} ───────────────────────────
339328
if [ -d "${SOURCE_HOME}/.config/git" ]; then
@@ -353,35 +342,6 @@ fi
353342
# ── Sync ~/.yarnrc.yml ────────────────────────────────────────────────────────
354343
_copy_if_absent ".yarnrc.yml" ".yarnrc.yml" "644"
355344

356-
# ── Sync ~/.config/pnpm/rc ────────────────────────────────────────────────────
357-
_copy_if_absent ".config/pnpm/rc" ".config/pnpm/rc" "644"
358-
359-
# ── Sync ~/.cargo/config.toml ─────────────────────────────────────────────────
360-
_copy_if_absent ".cargo/config.toml" ".cargo/config.toml" "644"
361-
362-
# ── Sync ~/.config/pip/pip.conf ───────────────────────────────────────────────
363-
_copy_if_absent ".config/pip/pip.conf" ".config/pip/pip.conf" "644"
364-
365-
# ── Sync ~/.config/gh/config.yml (CLI preferences only) ───────────────────
366-
if [ -e "${SOURCE_HOME}/.config/gh/config.yml" ]; then
367-
mkdir -p "${TARGET_HOME}/.config/gh"
368-
_copy_if_absent ".config/gh/config.yml" ".config/gh/config.yml" "600"
369-
else
370-
echo " .config/gh/config.yml: not found in staging"
371-
fi
372-
373-
# ── Sync ~/.config/gh/hosts.yml (opt-in: GitHub OAuth token) ───────────────
374-
if [ "${SYNC_GH_AUTH}" = "true" ]; then
375-
if [ "${IS_CLOUD_ENV}" = "true" ]; then
376-
echo " .config/gh/hosts.yml: skipped (cloud env β€” platform manages GitHub auth)"
377-
else
378-
mkdir -p "${TARGET_HOME}/.config/gh"
379-
_copy_if_absent ".config/gh/hosts.yml" ".config/gh/hosts.yml [GitHub OAuth token]" "600"
380-
fi
381-
else
382-
echo " .config/gh/hosts.yml: skipped (opt-in: set 'syncGhAuth' to enable)"
383-
fi
384-
385345
# ── Sync ~/.aws/config (opt-in) ───────────────────────────────────────────────
386346
if [ "${SYNC_AWS_CONFIG}" = "true" ]; then
387347
mkdir -p "${TARGET_HOME}/.aws"
@@ -422,10 +382,8 @@ if [ "$(id -u)" -eq 0 ] && getent passwd "${USERNAME}" >/dev/null 2>&1; then
422382
"${TARGET_HOME}/.gnupg" \
423383
"${TARGET_HOME}/.gitconfig" \
424384
"${TARGET_HOME}/.npmrc" \
425-
"${TARGET_HOME}/.gitignore_global" \
426385
"${TARGET_HOME}/.yarnrc.yml" \
427386
"${TARGET_HOME}/.config" \
428-
"${TARGET_HOME}/.cargo" \
429387
"${TARGET_HOME}/.aws" \
430388
"${TARGET_HOME}/.kube" \
431389
"${TARGET_HOME}/.docker" 2>/dev/null || true

0 commit comments

Comments
Β (0)