Commit d56770f
committed
sparse-index: mark mv as sparse-index compatible
In-cone moves already work without expanding the index, since
index_name_pos() auto-expands sparse directory entries on demand.
For out-of-cone moves (--sparse), call ensure_full_index() up front
because the bulk iteration assumes individual file entries.
Without --sparse, moving a sparse directory should produce the
helpful "Use the --sparse option" hint. The old code relied on full
index expansion to make the individual skip-worktree entries visible
to the error path. Now that the index stays sparse, teach
empty_dir_has_sparse_contents() to recognize sparse directory entries
directly and short-circuit to the hint. As a side effect the error
now names the directory the user typed rather than listing each file
inside it.
Add tests verifying that in-cone renames do not expand the index,
that out-of-cone moves without --sparse produce the hint, and that
--sparse triggers expansion.
Signed-off-by: Kristofer Karlsson <krka@spotify.com>1 parent 695dc7b commit d56770f
3 files changed
Lines changed: 33 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
153 | 154 | | |
154 | 155 | | |
155 | 156 | | |
156 | | - | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
157 | 162 | | |
158 | 163 | | |
159 | 164 | | |
| |||
249 | 254 | | |
250 | 255 | | |
251 | 256 | | |
252 | | - | |
| 257 | + | |
253 | 258 | | |
254 | 259 | | |
255 | 260 | | |
256 | 261 | | |
257 | 262 | | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
258 | 266 | | |
259 | 267 | | |
260 | 268 | | |
| |||
317 | 325 | | |
318 | 326 | | |
319 | 327 | | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
320 | 332 | | |
321 | 333 | | |
322 | 334 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1558 | 1558 | | |
1559 | 1559 | | |
1560 | 1560 | | |
| 1561 | + | |
| 1562 | + | |
| 1563 | + | |
| 1564 | + | |
| 1565 | + | |
| 1566 | + | |
| 1567 | + | |
| 1568 | + | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
1561 | 1579 | | |
1562 | 1580 | | |
1563 | 1581 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
238 | 238 | | |
239 | 239 | | |
240 | 240 | | |
241 | | - | |
| 241 | + | |
242 | 242 | | |
243 | 243 | | |
244 | 244 | | |
| |||
0 commit comments