Commit e3bd4aa
Docker Agent
fix(snapshot): canonicalize agent directory symlinks at Open
Address review feedback on #2904.
git rev-parse --show-toplevel resolves symlinks, while filepath.Abs
preserves them. When the agent's directory is reached through a symlink
(e.g. /tmp -> /private/tmp on macOS), r.directory and r.worktree no
longer share a prefix, so filepath.Rel produces a '..'-prefixed path and
scope() silently falls back to '.' — expanding snapshot operations to
the entire worktree and defeating the subfolder fix.
EvalSymlinks the abs path at Open() so r.directory uses the same
canonicalization as r.worktree. Also stabilizes the shadow gitdir hash
for symlinked entry points.
Add TestOpenCanonicalizesSymlinkedDirectory to lock this in.1 parent 9363f83 commit e3bd4aa
2 files changed
Lines changed: 48 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
76 | 85 | | |
77 | 86 | | |
78 | 87 | | |
| |||
482 | 491 | | |
483 | 492 | | |
484 | 493 | | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
485 | 498 | | |
486 | 499 | | |
487 | 500 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
173 | 208 | | |
174 | 209 | | |
175 | 210 | | |
| |||
0 commit comments